summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/main.yml40
-rw-r--r--.gitignore18
-rw-r--r--.hgignore13
-rw-r--r--INSTALL67
-rw-r--r--MANIFEST102
-rw-r--r--Makefile.in15
-rw-r--r--NEWS79
-rwxr-xr-x[-rw-r--r--]config.guess1036
-rw-r--r--config.h.in116
-rwxr-xr-x[-rw-r--r--]config.sub2633
-rwxr-xr-xconfigure15443
-rw-r--r--configure.ac190
-rw-r--r--doc/Makefile.in8
-rw-r--r--doc/sudo.conf.man.in13
-rw-r--r--doc/sudo.conf.mdoc.in13
-rw-r--r--doc/sudo.man.in2
-rw-r--r--doc/sudo.mdoc.in2
-rw-r--r--doc/sudoers.man.in35
-rw-r--r--doc/sudoers.mdoc.in34
-rw-r--r--examples/Makefile.in8
-rw-r--r--include/Makefile.in6
-rw-r--r--include/sudo_compat.h46
-rw-r--r--include/sudo_eventlog.h6
-rw-r--r--include/sudo_iolog.h11
-rw-r--r--include/sudo_util.h4
-rw-r--r--lib/eventlog/Makefile.in70
-rw-r--r--lib/eventlog/eventlog.c347
-rw-r--r--lib/eventlog/eventlog_conf.c226
-rw-r--r--lib/eventlog/eventlog_free.c73
-rw-r--r--lib/eventlog/logwrap.c8
-rw-r--r--lib/fuzzstub/Makefile.in174
-rw-r--r--lib/fuzzstub/fuzzstub.c119
-rw-r--r--lib/iolog/Makefile.in485
-rw-r--r--lib/iolog/iolog_clearerr.c45
-rw-r--r--lib/iolog/iolog_close.c80
-rw-r--r--lib/iolog/iolog_conf.c202
-rw-r--r--lib/iolog/iolog_eof.c54
-rw-r--r--lib/iolog/iolog_fileio.c1061
-rw-r--r--lib/iolog/iolog_gets.c78
-rw-r--r--lib/iolog/iolog_json.c228
-rw-r--r--lib/iolog/iolog_legacy.c168
-rw-r--r--lib/iolog/iolog_loginfo.c236
-rw-r--r--lib/iolog/iolog_mkdirs.c139
-rw-r--r--lib/iolog/iolog_mkdtemp.c87
-rw-r--r--lib/iolog/iolog_mkpath.c65
-rw-r--r--lib/iolog/iolog_nextid.c143
-rw-r--r--lib/iolog/iolog_open.c127
-rw-r--r--lib/iolog/iolog_openat.c90
-rw-r--r--lib/iolog/iolog_read.c79
-rw-r--r--lib/iolog/iolog_seek.c69
-rw-r--r--lib/iolog/iolog_swapids.c95
-rw-r--r--lib/iolog/iolog_timing.c267
-rw-r--r--lib/iolog/iolog_util.c413
-rw-r--r--lib/iolog/iolog_write.c105
-rw-r--r--lib/iolog/regress/corpus/log_json/id.json36
-rw-r--r--lib/iolog/regress/corpus/log_json/ls.json31
-rw-r--r--lib/iolog/regress/corpus/log_json/mailq.json31
-rw-r--r--lib/iolog/regress/corpus/log_json/make.json36
-rw-r--r--lib/iolog/regress/corpus/log_json/pkg_add.json34
-rw-r--r--lib/iolog/regress/corpus/log_json/pkg_delete.json34
-rw-r--r--lib/iolog/regress/corpus/log_json/printenv.json34
-rw-r--r--lib/iolog/regress/corpus/log_legacy/id.log3
-rw-r--r--lib/iolog/regress/corpus/log_legacy/ls.log3
-rw-r--r--lib/iolog/regress/corpus/log_legacy/mailq.log3
-rw-r--r--lib/iolog/regress/corpus/log_legacy/make.log3
-rw-r--r--lib/iolog/regress/corpus/log_legacy/pkg_add.log3
-rw-r--r--lib/iolog/regress/corpus/log_legacy/pkg_delete.log3
-rw-r--r--lib/iolog/regress/corpus/log_legacy/printenv.log3
-rw-r--r--lib/iolog/regress/corpus/timing/timing.151
-rw-r--r--lib/iolog/regress/corpus/timing/timing.2196
-rw-r--r--lib/iolog/regress/corpus/timing/timing.3988
-rw-r--r--lib/iolog/regress/corpus/timing/timing.48
-rw-r--r--lib/iolog/regress/fuzz/fuzz_iolog_json.c88
-rw-r--r--lib/iolog/regress/fuzz/fuzz_iolog_json.dict17
-rw-r--r--lib/iolog/regress/fuzz/fuzz_iolog_legacy.c86
-rw-r--r--lib/iolog/regress/fuzz/fuzz_iolog_timing.c100
-rw-r--r--lib/iolog/regress/iolog_json/check_iolog_json.c4
-rw-r--r--lib/iolog/regress/iolog_timing/check_iolog_timing.c (renamed from lib/iolog/regress/iolog_util/check_iolog_util.c)4
-rw-r--r--lib/logsrv/Makefile.in6
-rw-r--r--lib/util/Makefile.in89
-rw-r--r--lib/util/basename.c52
-rw-r--r--lib/util/getdelim.c3
-rw-r--r--lib/util/lbuf.c3
-rw-r--r--lib/util/progname.c89
-rw-r--r--lib/util/regress/corpus/sudo_conf/sudo.conf.1124
-rw-r--r--lib/util/regress/corpus/sudo_conf/sudo.conf.2124
-rw-r--r--lib/util/regress/corpus/sudo_conf/sudo.conf.3134
-rw-r--r--lib/util/regress/fuzz/fuzz_sudo_conf.c61
-rw-r--r--lib/util/regress/fuzz/fuzz_sudo_conf.dict19
-rw-r--r--lib/util/regress/getdelim/getdelim_test.c32
-rw-r--r--lib/util/regress/progname/progname_test.c8
-rw-r--r--lib/util/secure_path.c6
-rw-r--r--lib/util/sudo_conf.c37
-rw-r--r--lib/util/sudo_debug.c165
-rw-r--r--lib/util/sudo_dso.c46
-rw-r--r--lib/util/util.exp.in1
-rw-r--r--lib/zlib/Makefile.in6
-rw-r--r--logsrvd/Makefile.in71
-rw-r--r--logsrvd/iolog_writer.c31
-rw-r--r--logsrvd/logsrvd.c41
-rw-r--r--logsrvd/logsrvd.h4
-rw-r--r--logsrvd/logsrvd_conf.c2
-rw-r--r--logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.1159
-rw-r--r--logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.2159
-rw-r--r--logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.3159
-rw-r--r--logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.4159
-rw-r--r--logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.5159
-rw-r--r--logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.6159
-rw-r--r--logsrvd/regress/fuzz/fuzz_logsrvd_conf.c76
-rw-r--r--logsrvd/sendlog.c48
-rw-r--r--pathnames.h.in8
-rw-r--r--plugins/audit_json/Makefile.in6
-rw-r--r--plugins/group_file/Makefile.in6
-rw-r--r--plugins/python/Makefile.in14
-rw-r--r--plugins/python/pyhelpers.c2
-rw-r--r--plugins/python/pyhelpers.h1
-rw-r--r--plugins/python/python_convmessage.c2
-rw-r--r--plugins/python/python_plugin_approval_multi.inc2
-rw-r--r--plugins/python/python_plugin_audit_multi.inc2
-rw-r--r--plugins/python/python_plugin_io_multi.inc2
-rw-r--r--plugins/python/sudo_python_module.c3
-rw-r--r--plugins/sample/Makefile.in6
-rw-r--r--plugins/sample_approval/Makefile.in6
-rw-r--r--plugins/sudoers/Makefile.in516
-rw-r--r--plugins/sudoers/alias.c21
-rw-r--r--plugins/sudoers/audit.c4
-rw-r--r--plugins/sudoers/auth/pam.c3
-rw-r--r--plugins/sudoers/b64_decode.c (renamed from plugins/sudoers/base64.c)38
-rw-r--r--plugins/sudoers/b64_encode.c64
-rw-r--r--plugins/sudoers/check.h1
-rw-r--r--plugins/sudoers/check_aliases.c149
-rw-r--r--plugins/sudoers/cvtsudoers.c13
-rw-r--r--plugins/sudoers/def_data.c4
-rw-r--r--plugins/sudoers/def_data.h2
-rw-r--r--plugins/sudoers/def_data.in3
-rw-r--r--plugins/sudoers/defaults.c12
-rw-r--r--plugins/sudoers/env.c136
-rw-r--r--plugins/sudoers/exptilde.c2
-rw-r--r--plugins/sudoers/find_path.c9
-rw-r--r--plugins/sudoers/fmtsudoers.c186
-rw-r--r--plugins/sudoers/fmtsudoers_cvt.c219
-rw-r--r--plugins/sudoers/gc.c40
-rw-r--r--plugins/sudoers/gentime.c21
-rw-r--r--plugins/sudoers/gram.c963
-rw-r--r--plugins/sudoers/gram.h6
-rw-r--r--plugins/sudoers/gram.y385
-rw-r--r--plugins/sudoers/iolog.c19
-rw-r--r--plugins/sudoers/ldap.c2
-rw-r--r--plugins/sudoers/ldap_util.c59
-rw-r--r--plugins/sudoers/logging.c7
-rw-r--r--plugins/sudoers/match_command.c142
-rw-r--r--plugins/sudoers/parse.c28
-rw-r--r--plugins/sudoers/parse.h44
-rw-r--r--plugins/sudoers/parse_ldif.c9
-rw-r--r--plugins/sudoers/po/cs.mobin65656 -> 66094 bytes
-rw-r--r--plugins/sudoers/po/cs.po1435
-rw-r--r--plugins/sudoers/po/de.mobin68279 -> 68715 bytes
-rw-r--r--plugins/sudoers/po/de.po1375
-rw-r--r--plugins/sudoers/po/eo.mobin62872 -> 63457 bytes
-rw-r--r--plugins/sudoers/po/eo.po1374
-rw-r--r--plugins/sudoers/po/fi.mobin55765 -> 66802 bytes
-rw-r--r--plugins/sudoers/po/fi.po2320
-rw-r--r--plugins/sudoers/po/fr.mobin72145 -> 72757 bytes
-rw-r--r--plugins/sudoers/po/fr.po1427
-rw-r--r--plugins/sudoers/po/hr.mobin66396 -> 66969 bytes
-rw-r--r--plugins/sudoers/po/hr.po1428
-rw-r--r--plugins/sudoers/po/ja.mobin73913 -> 74637 bytes
-rw-r--r--plugins/sudoers/po/ja.po1427
-rw-r--r--plugins/sudoers/po/ko.mobin67838 -> 68526 bytes
-rw-r--r--plugins/sudoers/po/ko.po1431
-rw-r--r--plugins/sudoers/po/pl.mobin66152 -> 66691 bytes
-rw-r--r--plugins/sudoers/po/pl.po1374
-rw-r--r--plugins/sudoers/po/pt.mobin64469 -> 64999 bytes
-rw-r--r--plugins/sudoers/po/pt.po1449
-rw-r--r--plugins/sudoers/po/pt_BR.mobin66651 -> 67159 bytes
-rw-r--r--plugins/sudoers/po/pt_BR.po1433
-rw-r--r--plugins/sudoers/po/sudoers.pot1176
-rw-r--r--plugins/sudoers/po/uk.mobin89307 -> 90170 bytes
-rw-r--r--plugins/sudoers/po/uk.po1429
-rw-r--r--plugins/sudoers/po/zh_CN.mobin53540 -> 54838 bytes
-rw-r--r--plugins/sudoers/po/zh_CN.po1408
-rw-r--r--plugins/sudoers/po/zh_TW.mobin59885 -> 60979 bytes
-rw-r--r--plugins/sudoers/po/zh_TW.po1431
-rw-r--r--plugins/sudoers/policy.c166
-rw-r--r--plugins/sudoers/pwutil.c76
-rw-r--r--plugins/sudoers/pwutil_impl.c48
-rw-r--r--plugins/sudoers/regress/corpus/policy/policy.11
-rw-r--r--plugins/sudoers/regress/corpus/policy/policy.25
-rw-r--r--plugins/sudoers/regress/corpus/policy/policy.311
-rw-r--r--plugins/sudoers/regress/corpus/policy/policy.436
-rw-r--r--plugins/sudoers/regress/corpus/policy/policy.536
-rw-r--r--plugins/sudoers/regress/exptilde/check_exptilde.c2
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_policy.c807
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_policy.dict51
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_stubs.c85
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_sudoers.c392
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_sudoers.dict195
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok577
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c113
-rw-r--r--plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.dict14
-rw-r--r--plugins/sudoers/regress/parser/check_fill.c14
-rw-r--r--plugins/sudoers/regress/sudoers/test14.in2
-rw-r--r--plugins/sudoers/regress/sudoers/test14.json.ok2
-rw-r--r--plugins/sudoers/regress/sudoers/test14.ldif.ok2
-rw-r--r--plugins/sudoers/regress/sudoers/test14.ldif2sudo.ok3
-rw-r--r--plugins/sudoers/regress/sudoers/test14.out.ok2
-rw-r--r--plugins/sudoers/regress/sudoers/test14.toke.ok2
-rw-r--r--plugins/sudoers/regress/sudoers/test22.sudo.ok7
-rw-r--r--plugins/sudoers/regress/sudoers/test23.sudo.ok8
-rw-r--r--plugins/sudoers/regress/sudoers/test24.sudo.ok6
-rw-r--r--plugins/sudoers/regress/sudoers/test25.in3
-rw-r--r--plugins/sudoers/regress/sudoers/test25.json.ok0
-rw-r--r--plugins/sudoers/regress/sudoers/test25.ldif.ok0
-rw-r--r--plugins/sudoers/regress/sudoers/test25.out.ok1
-rw-r--r--plugins/sudoers/regress/sudoers/test25.toke.ok3
-rw-r--r--plugins/sudoers/regress/sudoers/test26.in128
-rw-r--r--plugins/sudoers/regress/sudoers/test26.json.ok626
-rw-r--r--plugins/sudoers/regress/sudoers/test26.ldif.ok134
-rw-r--r--plugins/sudoers/regress/sudoers/test26.ldif2sudo.ok128
-rw-r--r--plugins/sudoers/regress/sudoers/test26.out.ok122
-rw-r--r--plugins/sudoers/regress/sudoers/test26.toke.ok128
-rw-r--r--plugins/sudoers/regress/sudoers/test27.in13
-rw-r--r--plugins/sudoers/regress/sudoers/test27.json.ok119
-rw-r--r--plugins/sudoers/regress/sudoers/test27.ldif.ok58
-rw-r--r--plugins/sudoers/regress/sudoers/test27.ldif2sudo.ok16
-rw-r--r--plugins/sudoers/regress/sudoers/test27.out.ok9
-rw-r--r--plugins/sudoers/regress/sudoers/test27.toke.ok13
-rw-r--r--plugins/sudoers/regress/sudoers/test4.toke.ok2
-rw-r--r--plugins/sudoers/regress/sudoers/test5.toke.ok4
-rw-r--r--plugins/sudoers/regress/sudoers/test7.toke.ok12
-rw-r--r--plugins/sudoers/regress/sudoers/test8.toke.ok2
-rwxr-xr-xplugins/sudoers/regress/testsudoers/test11.sh3
-rwxr-xr-xplugins/sudoers/regress/testsudoers/test12.sh3
-rwxr-xr-xplugins/sudoers/regress/testsudoers/test13.sh3
-rwxr-xr-xplugins/sudoers/regress/testsudoers/test4.sh3
-rwxr-xr-xplugins/sudoers/regress/testsudoers/test5.sh3
-rw-r--r--plugins/sudoers/regress/unescape/check_unesc.c143
-rw-r--r--plugins/sudoers/sssd.c2
-rw-r--r--plugins/sudoers/strlcpy_unesc.c52
-rw-r--r--plugins/sudoers/strvec_join.c74
-rw-r--r--plugins/sudoers/stubs.c3
-rw-r--r--plugins/sudoers/sudo_ldap.h1
-rw-r--r--plugins/sudoers/sudoers.c240
-rw-r--r--plugins/sudoers/sudoers.h14
-rw-r--r--plugins/sudoers/sudoers_hooks.c155
-rw-r--r--plugins/sudoers/testsudoers.c16
-rw-r--r--plugins/sudoers/timestamp.c48
-rw-r--r--plugins/sudoers/toke.c292
-rw-r--r--plugins/sudoers/toke.h5
-rw-r--r--plugins/sudoers/toke.l118
-rw-r--r--plugins/sudoers/toke_util.c78
-rw-r--r--plugins/sudoers/visudo.c142
-rw-r--r--plugins/system_group/Makefile.in6
-rw-r--r--po/cs.mobin20882 -> 21399 bytes
-rw-r--r--po/cs.po336
-rw-r--r--po/de.mobin22386 -> 22945 bytes
-rw-r--r--po/de.po335
-rw-r--r--po/eo.mobin20452 -> 20969 bytes
-rw-r--r--po/eo.po336
-rw-r--r--po/fi.mobin21496 -> 22067 bytes
-rw-r--r--po/fi.po338
-rw-r--r--po/fr.mobin22124 -> 22747 bytes
-rw-r--r--po/fr.po338
-rw-r--r--po/hr.mobin21226 -> 21704 bytes
-rw-r--r--po/hr.po344
-rw-r--r--po/ja.mobin24751 -> 25408 bytes
-rw-r--r--po/ja.po338
-rw-r--r--po/ko.mobin22619 -> 23199 bytes
-rw-r--r--po/ko.po346
-rw-r--r--po/pl.mobin21416 -> 21967 bytes
-rw-r--r--po/pl.po333
-rw-r--r--po/pt.mobin20931 -> 21472 bytes
-rw-r--r--po/pt.po338
-rw-r--r--po/pt_BR.mobin21589 -> 22157 bytes
-rw-r--r--po/pt_BR.po338
-rw-r--r--po/tr.mobin20822 -> 21333 bytes
-rw-r--r--po/tr.po338
-rw-r--r--po/uk.mobin28934 -> 29687 bytes
-rw-r--r--po/uk.po335
-rw-r--r--po/zh_CN.mobin18947 -> 19425 bytes
-rw-r--r--po/zh_CN.po338
-rw-r--r--po/zh_TW.mobin20034 -> 20523 bytes
-rw-r--r--po/zh_TW.po338
-rwxr-xr-xscripts/mkpkg4
-rwxr-xr-xscripts/pp18
-rw-r--r--src/Makefile.in12
-rw-r--r--src/copy_file.c2
-rw-r--r--src/get_pty.c2
-rw-r--r--src/parse_args.c7
-rw-r--r--src/sesh.c4
-rw-r--r--src/sudo.c8
-rw-r--r--src/sudo_edit.c13
-rw-r--r--src/sudo_noexec.c11
293 files changed, 40459 insertions, 24667 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
new file mode 100644
index 000000000..14ac25326
--- /dev/null
+++ b/.github/workflows/main.yml
@@ -0,0 +1,40 @@
+# See: https://google.github.io/oss-fuzz/getting-started/continuous-integration/
+
+name: CIFuzz
+on:
+ # Trigger the workflow on push or pull requests, but only for the
+ # main branch and only for C source files.
+ push:
+ branches:
+ - main
+ paths:
+ - '**.c'
+ - '**.h'
+ pull_request:
+ branches:
+ - main
+ paths:
+ - '**.c'
+ - '**.h'
+jobs:
+ Fuzzing:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Build Fuzzers
+ id: build
+ uses: google/oss-fuzz/infra/cifuzz/actions/build_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'sudoers'
+ dry-run: false
+ - name: Run Fuzzers
+ uses: google/oss-fuzz/infra/cifuzz/actions/run_fuzzers@master
+ with:
+ oss-fuzz-project-name: 'sudoers'
+ fuzz-seconds: 600
+ dry-run: false
+ - name: Upload Crash
+ uses: actions/upload-artifact@v1
+ if: failure() && steps.build.outcome == 'success'
+ with:
+ name: artifacts
+ path: ./out/artifacts
diff --git a/.gitignore b/.gitignore
index 8e2bf4ea8..b47cb5879 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,8 @@ doc/fixman.sed
examples/sudo.conf
+etc/init.d/sudo.conf
+
init.d/*.sh
init.d/sudo.conf
@@ -41,20 +43,26 @@ src/check_noexec
src/check_ttyname
src/sudo_usage.h
-lib/iolog/check_iolog_path
-lib/iolog/check_iolog_util
+lib/eventlog/check_wrap
+lib/eventlog/regress/logwrap/check_wrap.out
+
+lib/iolog/check_iolog_[a-z]*
+lib/iolog/fuzz_iolog_[a-z]*
+lib/iolog/host_port_test
lib/util/mksiglist
lib/util/mksigname
lib/util/siglist.c
lib/util/signame.c
lib/util/util.exp
-lib/util/[a-z0-9_]*_test
+lib/util/[a-z]*_test
+lib/util/fuzz_[a-z]*
lib/util/regress/**/*.out
lib/util/regress/**/*.err
logsrvd/sudo_logsrvd
logsrvd/sudo_sendlog
+logsrvd/fuzz_[a-z]*
plugins/sudoers/cvtsudoers
plugins/sudoers/sudoers
@@ -63,7 +71,8 @@ plugins/sudoers/testsudoers
plugins/sudoers/tsdump
plugins/sudoers/visudo
plugins/sudoers/prologue
-plugins/sudoers/check_[a-z0-9_]*
+plugins/sudoers/check_[a-z]*
+plugins/sudoers/fuzz_[a-z]*
plugins/sudoers/regress/**/*.out
plugins/sudoers/regress/**/*.toke
plugins/sudoers/regress/**/*.err
@@ -76,3 +85,4 @@ plugins/sudoers/regress/testsudoers/test3.d/root
plugins/python/__pycache__
plugins/python/regress/__pycache__
+plugins/python/check_python_examples
diff --git a/.hgignore b/.hgignore
index 2812f835a..16cee2969 100644
--- a/.hgignore
+++ b/.hgignore
@@ -26,6 +26,8 @@ Makefile$
^doc/.*\.mdoc$
^doc/fixman\.sed$
+^etc/init\.d/sudo\.conf$
+
^examples/sudo\.conf$
^init\.d/.*\.sh$
@@ -37,7 +39,12 @@ Makefile$
^src/check_(noexec|ttyname)$
^src/sudo_usage\.h$
-^lib/iolog/check_iolog_(path|util)$
+^lib/eventlog/check_wrap$
+^lib/eventlog/regress/logwrap/check_wrap.out$
+
+^lib/iolog/check_iolog_(json|mkpath|path|util)$
+^lib/iolog/fuzz_iolog_(json|legacy|timing)$
+^lib/iolog/host_port_test$
^lib/util/mksiglist$
^lib/util/mksigname$
@@ -45,14 +52,18 @@ Makefile$
^lib/util/signame\.c$
^lib/util/util\.exp$
^lib/util/[a-z0-9_]+_test$
+^lib/util/fuzz_sudo_conf$
^lib/util/regress/.*\.(out|err)$
^logsrvd/sudo_(logsrvd|sendlog)$
+^logsrvd/fuzz_logsrvd_conf$
^plugins/sudoers/(cvtsudoers|sudoers|sudoreplay|testsudoers|tsdump|visudo|prologue|check_[a-z0-9_]+)$
+^plugins/sudoers/fuzz_(policy|sudoers(_ldif)?)$
^plugins/sudoers/.*\.(out|toke|err|json|ldif|sudo|ldif2sudo)$
^plugins/sudoers/regress/iolog_plugin/iolog$
^plugins/sudoers/regress/testsudoers/test3\.d/root$
^plugins/python/__pycache__
^plugins/python/regress/__pycache__
+^plugins/python/check_python_examples$
diff --git a/INSTALL b/INSTALL
index dd326c7d3..e4b122928 100644
--- a/INSTALL
+++ b/INSTALL
@@ -160,24 +160,61 @@ Directory and file names:
contain a fully-qualified path.
Compilation options:
+ --enable-sanitizer=[flags]
+ Enable the use of sanitizers such as AddressSanitizer and
+ UndefinedBehaviorSanitizer if supported by the compiler.
+ This can help detect common problems such as buffer overflows
+ and use after free bugs as well as behavior not defined by
+ the C standard. For more information see:
+ https://github.com/google/sanitizers/wiki
+
+ If no flags are specified by the user, a default value of
+ "-fsanitize=address,undefined" will be used.
+
+ This option should only be used for testing and not in a
+ production environment. Due to some sanitizers' unchecked
+ use of environment variables, it is trivial to exploit a
+ setuid root executable such as sudo.
+
+ --enable-fuzzer
+ Enable building sudo with the LLVM libFuzzer, see
+ https://www.llvm.org/docs/LibFuzzer.html for details.
+ The resulting binaries, beginning with "fuzz_" can be used
+ to test sudo. This option is generally used in conjunction
+ with --enable-sanitizer. This option requires the clang
+ C compiler--it is not supported by gcc.
+
+ This option should only be used for testing and not in a
+ production environment.
+
+ --enable-fuzzer-engine=library
+ The library to use when linking fuzz targets instead of
+ LLVM's libFuzzer. It is intended to be set to the path to
+ an alternate fuzzing library, such as AFL++ or Honggfuzz.
+
+ --enable-fuzzer-linker=command
+ An alternate linker command to use when building fuzz
+ targets, instead of clang. It may be necessary to set this
+ when using the --enable-fuzzer-engine option to link with
+ a fuzzer engine that requires C++ libraries. For oss-fuzz,
+ this option is used to cause fuzz targets to be linked with
+ clang++.
+
--disable-hardening
Disable the use of compiler/linker exploit mitigation options
which are enabled by default. This includes compiling with
_FORTIFY_SOURCE defined to 2, building with -fstack-protector
and linking with -zrelro, where supported.
- --enable-asan
- Enable the use of AddressSanitizer if supported by the
- compiler. This can help detect common problems such as
- buffer overflows and user after free bugs as well as behavior
- undefined by the C standard. For more information see
- https://github.com/google/sanitizers/wiki/AddressSanitizer
- The following compiler flag is used: -fsanitize=address,undefined
+ --disable-ssp
+ Disable use of the -fstack-protector compiler option.
+ This does not affect the other hardening options.
- This option should only be used for testing and not in a
- production environment. Due to AddressSanitizer's unchecked
- use of environment variables, it is trivial to exploit a
- setuid root executable such as sudo.
+ --disable-leaks
+ Avoid leaking memory even when we are headed for exit,
+ which helps reduce the noise from static and active analyzers.
+ This option should only be used for testing and not in a
+ production environment.
--enable-pie
Build sudo and related programs as as a position independent
@@ -391,9 +428,11 @@ Operating system-specific options:
Disable use of the setresuid() function for operating systems
where it is broken (none currently known).
- --enable-admin-flag
- Enable the creation of an Ubuntu-style admin flag file
- the first time sudo is run.
+ --enable-admin-flag[=PATH]
+ Enable the creation of an Ubuntu-style admin flag file the
+ first time sudo is run. If PATH is not specified, the
+ default value is:
+ ~/.sudo_as_admin_successful
--enable-devsearch=PATH
Set a system-specific search path of directories to look in
diff --git a/MANIFEST b/MANIFEST
index 2d7746da8..2d3c0bc43 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -104,18 +104,61 @@ include/sudo_util.h
install-sh
lib/eventlog/Makefile.in
lib/eventlog/eventlog.c
+lib/eventlog/eventlog_conf.c
+lib/eventlog/eventlog_free.c
lib/eventlog/logwrap.c
lib/eventlog/regress/logwrap/check_wrap.c
lib/eventlog/regress/logwrap/check_wrap.in
lib/eventlog/regress/logwrap/check_wrap.out.ok
+lib/fuzzstub/Makefile.in
+lib/fuzzstub/fuzzstub.c
lib/iolog/Makefile.in
lib/iolog/host_port.c
lib/iolog/hostcheck.c
-lib/iolog/iolog_fileio.c
+lib/iolog/iolog_clearerr.c
+lib/iolog/iolog_close.c
+lib/iolog/iolog_conf.c
+lib/iolog/iolog_eof.c
+lib/iolog/iolog_gets.c
lib/iolog/iolog_json.c
lib/iolog/iolog_json.h
+lib/iolog/iolog_legacy.c
+lib/iolog/iolog_loginfo.c
+lib/iolog/iolog_mkdirs.c
+lib/iolog/iolog_mkdtemp.c
+lib/iolog/iolog_mkpath.c
+lib/iolog/iolog_nextid.c
+lib/iolog/iolog_open.c
+lib/iolog/iolog_openat.c
lib/iolog/iolog_path.c
+lib/iolog/iolog_read.c
+lib/iolog/iolog_seek.c
+lib/iolog/iolog_swapids.c
+lib/iolog/iolog_timing.c
lib/iolog/iolog_util.c
+lib/iolog/iolog_write.c
+lib/iolog/regress/corpus/log_json/id.json
+lib/iolog/regress/corpus/log_json/ls.json
+lib/iolog/regress/corpus/log_json/mailq.json
+lib/iolog/regress/corpus/log_json/make.json
+lib/iolog/regress/corpus/log_json/pkg_add.json
+lib/iolog/regress/corpus/log_json/pkg_delete.json
+lib/iolog/regress/corpus/log_json/printenv.json
+lib/iolog/regress/corpus/log_legacy/id.log
+lib/iolog/regress/corpus/log_legacy/ls.log
+lib/iolog/regress/corpus/log_legacy/mailq.log
+lib/iolog/regress/corpus/log_legacy/make.log
+lib/iolog/regress/corpus/log_legacy/pkg_add.log
+lib/iolog/regress/corpus/log_legacy/pkg_delete.log
+lib/iolog/regress/corpus/log_legacy/printenv.log
+lib/iolog/regress/corpus/timing/timing.1
+lib/iolog/regress/corpus/timing/timing.2
+lib/iolog/regress/corpus/timing/timing.3
+lib/iolog/regress/corpus/timing/timing.4
+lib/iolog/regress/fuzz/fuzz_iolog_json.c
+lib/iolog/regress/fuzz/fuzz_iolog_json.dict
+lib/iolog/regress/fuzz/fuzz_iolog_legacy.c
+lib/iolog/regress/fuzz/fuzz_iolog_timing.c
lib/iolog/regress/host_port/host_port_test.c
lib/iolog/regress/iolog_json/check_iolog_json.c
lib/iolog/regress/iolog_json/test1.in
@@ -125,7 +168,7 @@ lib/iolog/regress/iolog_json/test3.in
lib/iolog/regress/iolog_mkpath/check_iolog_mkpath.c
lib/iolog/regress/iolog_path/check_iolog_path.c
lib/iolog/regress/iolog_path/data
-lib/iolog/regress/iolog_util/check_iolog_util.c
+lib/iolog/regress/iolog_timing/check_iolog_timing.c
lib/logsrv/Makefile.in
lib/logsrv/log_server.pb-c.c
lib/logsrv/log_server.proto
@@ -135,6 +178,7 @@ lib/util/aix.c
lib/util/arc4random.c
lib/util/arc4random_buf.c
lib/util/arc4random_uniform.c
+lib/util/basename.c
lib/util/cfmakeraw.c
lib/util/chacha_private.h
lib/util/closefrom.c
@@ -187,8 +231,13 @@ lib/util/progname.c
lib/util/pw_dup.c
lib/util/pwrite.c
lib/util/reallocarray.c
+lib/util/regress/corpus/sudo_conf/sudo.conf.1
+lib/util/regress/corpus/sudo_conf/sudo.conf.2
+lib/util/regress/corpus/sudo_conf/sudo.conf.3
lib/util/regress/fnmatch/fnm_test.c
lib/util/regress/fnmatch/fnm_test.in
+lib/util/regress/fuzz/fuzz_sudo_conf.c
+lib/util/regress/fuzz/fuzz_sudo_conf.dict
lib/util/regress/getdelim/getdelim_test.c
lib/util/regress/getgrouplist/getgrouplist_test.c
lib/util/regress/glob/files
@@ -302,6 +351,13 @@ logsrvd/logsrv_util.h
logsrvd/logsrvd.c
logsrvd/logsrvd.h
logsrvd/logsrvd_conf.c
+logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.1
+logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.2
+logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.3
+logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.4
+logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.5
+logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.6
+logsrvd/regress/fuzz/fuzz_logsrvd_conf.c
logsrvd/sendlog.c
logsrvd/sendlog.h
ltmain.sh
@@ -459,12 +515,14 @@ plugins/sudoers/auth/securid5.c
plugins/sudoers/auth/sia.c
plugins/sudoers/auth/sudo_auth.c
plugins/sudoers/auth/sudo_auth.h
-plugins/sudoers/base64.c
+plugins/sudoers/b64_decode.c
+plugins/sudoers/b64_encode.c
plugins/sudoers/boottime.c
plugins/sudoers/bsm_audit.c
plugins/sudoers/bsm_audit.h
plugins/sudoers/check.c
plugins/sudoers/check.h
+plugins/sudoers/check_aliases.c
plugins/sudoers/cvtsudoers.c
plugins/sudoers/cvtsudoers.h
plugins/sudoers/cvtsudoers_json.c
@@ -484,6 +542,7 @@ plugins/sudoers/file.c
plugins/sudoers/filedigest.c
plugins/sudoers/find_path.c
plugins/sudoers/fmtsudoers.c
+plugins/sudoers/fmtsudoers_cvt.c
plugins/sudoers/gc.c
plugins/sudoers/gentime.c
plugins/sudoers/getdate.c
@@ -601,6 +660,11 @@ plugins/sudoers/rcstr.c
plugins/sudoers/redblack.c
plugins/sudoers/redblack.h
plugins/sudoers/regress/check_symbols/check_symbols.c
+plugins/sudoers/regress/corpus/policy/policy.1
+plugins/sudoers/regress/corpus/policy/policy.2
+plugins/sudoers/regress/corpus/policy/policy.3
+plugins/sudoers/regress/corpus/policy/policy.4
+plugins/sudoers/regress/corpus/policy/policy.5
plugins/sudoers/regress/cvtsudoers/sudoers
plugins/sudoers/regress/cvtsudoers/sudoers.defs
plugins/sudoers/regress/cvtsudoers/test1.out.ok
@@ -677,6 +741,14 @@ plugins/sudoers/regress/cvtsudoers/test9.sh
plugins/sudoers/regress/env_match/check_env_pattern.c
plugins/sudoers/regress/env_match/data
plugins/sudoers/regress/exptilde/check_exptilde.c
+plugins/sudoers/regress/fuzz/fuzz_policy.c
+plugins/sudoers/regress/fuzz/fuzz_policy.dict
+plugins/sudoers/regress/fuzz/fuzz_stubs.c
+plugins/sudoers/regress/fuzz/fuzz_sudoers.c
+plugins/sudoers/regress/fuzz/fuzz_sudoers.dict
+plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok
+plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c
+plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.dict
plugins/sudoers/regress/iolog_plugin/check_iolog_plugin.c
plugins/sudoers/regress/parser/check_addr.c
plugins/sudoers/regress/parser/check_addr.in
@@ -771,22 +843,36 @@ plugins/sudoers/regress/sudoers/test22.json.ok
plugins/sudoers/regress/sudoers/test22.ldif.ok
plugins/sudoers/regress/sudoers/test22.ldif2sudo.ok
plugins/sudoers/regress/sudoers/test22.out.ok
-plugins/sudoers/regress/sudoers/test22.sudo.ok
plugins/sudoers/regress/sudoers/test22.toke.ok
plugins/sudoers/regress/sudoers/test23.in
plugins/sudoers/regress/sudoers/test23.json.ok
plugins/sudoers/regress/sudoers/test23.ldif.ok
plugins/sudoers/regress/sudoers/test23.ldif2sudo.ok
plugins/sudoers/regress/sudoers/test23.out.ok
-plugins/sudoers/regress/sudoers/test23.sudo.ok
plugins/sudoers/regress/sudoers/test23.toke.ok
plugins/sudoers/regress/sudoers/test24.in
plugins/sudoers/regress/sudoers/test24.json.ok
plugins/sudoers/regress/sudoers/test24.ldif.ok
plugins/sudoers/regress/sudoers/test24.ldif2sudo.ok
plugins/sudoers/regress/sudoers/test24.out.ok
-plugins/sudoers/regress/sudoers/test24.sudo.ok
plugins/sudoers/regress/sudoers/test24.toke.ok
+plugins/sudoers/regress/sudoers/test25.in
+plugins/sudoers/regress/sudoers/test25.json.ok
+plugins/sudoers/regress/sudoers/test25.ldif.ok
+plugins/sudoers/regress/sudoers/test25.out.ok
+plugins/sudoers/regress/sudoers/test25.toke.ok
+plugins/sudoers/regress/sudoers/test26.in
+plugins/sudoers/regress/sudoers/test26.json.ok
+plugins/sudoers/regress/sudoers/test26.ldif.ok
+plugins/sudoers/regress/sudoers/test26.ldif2sudo.ok
+plugins/sudoers/regress/sudoers/test26.out.ok
+plugins/sudoers/regress/sudoers/test26.toke.ok
+plugins/sudoers/regress/sudoers/test27.in
+plugins/sudoers/regress/sudoers/test27.json.ok
+plugins/sudoers/regress/sudoers/test27.ldif.ok
+plugins/sudoers/regress/sudoers/test27.ldif2sudo.ok
+plugins/sudoers/regress/sudoers/test27.out.ok
+plugins/sudoers/regress/sudoers/test27.toke.ok
plugins/sudoers/regress/sudoers/test3.in
plugins/sudoers/regress/sudoers/test3.json.ok
plugins/sudoers/regress/sudoers/test3.ldif.ok
@@ -856,6 +942,7 @@ plugins/sudoers/regress/testsudoers/test8.out.ok
plugins/sudoers/regress/testsudoers/test8.sh
plugins/sudoers/regress/testsudoers/test9.out.ok
plugins/sudoers/regress/testsudoers/test9.sh
+plugins/sudoers/regress/unescape/check_unesc.c
plugins/sudoers/regress/visudo/test1.out.ok
plugins/sudoers/regress/visudo/test1.sh
plugins/sudoers/regress/visudo/test10.out.ok
@@ -884,8 +971,10 @@ plugins/sudoers/solaris_audit.c
plugins/sudoers/solaris_audit.h
plugins/sudoers/sssd.c
plugins/sudoers/starttime.c
+plugins/sudoers/strlcpy_unesc.c
plugins/sudoers/strlist.c
plugins/sudoers/strlist.h
+plugins/sudoers/strvec_join.c
plugins/sudoers/stubs.c
plugins/sudoers/sudo_ldap.h
plugins/sudoers/sudo_ldap_conf.h
@@ -898,6 +987,7 @@ plugins/sudoers/sudoers.h
plugins/sudoers/sudoers.in
plugins/sudoers/sudoers_debug.c
plugins/sudoers/sudoers_debug.h
+plugins/sudoers/sudoers_hooks.c
plugins/sudoers/sudoers_version.h
plugins/sudoers/sudoreplay.c
plugins/sudoers/testsudoers.c
diff --git a/Makefile.in b/Makefile.in
index 9d9d754d7..e25135b85 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -56,7 +56,7 @@ shlib_mode = @SHLIB_MODE@
# Version of python detected by configure (major.minor)
python_version = @PYTHON_VERSION@
-SUBDIRS = lib/util @ZLIB_SRC@ lib/eventlog lib/iolog @LOGSRV_SRC@ \
+SUBDIRS = lib/util @ZLIB_SRC@ lib/eventlog lib/fuzzstub lib/iolog @LOGSRV_SRC@ \
@LOGSRVD_SRC@ plugins/audit_json plugins/group_file \
plugins/sample_approval plugins/sudoers plugins/system_group \
@PYTHON_PLUGIN_SRC@ src include doc examples
@@ -110,7 +110,7 @@ all: config.status
exit $$?; \
done
-check pre-install: config.status
+fuzz check pre-install: config.status
for d in $(SUBDIRS); do \
(cd $$d && exec $(MAKE) $@) && continue; \
exit $$?; \
@@ -174,7 +174,7 @@ pvs-studio: config.status
fi; \
plog-converter $(PVS_LOG_OPTS) $$files
-install-dirs install-binaries install-includes install-plugin: config.status pre-install
+install-dirs install-binaries install-fuzzer install-includes install-plugin: config.status pre-install
for d in $(SUBDIRS); do \
(cd $$d && exec $(MAKE) "INSTALL_OWNER=$(INSTALL_OWNER)" $@) && continue; \
exit $$?; \
@@ -210,7 +210,8 @@ siglist.c signame.c:
depend: siglist.c signame.c
$(scriptdir)/mkdep.pl \
--srcdir=$(abs_top_srcdir) --builddir=$(abs_top_builddir) \
- lib/util/Makefile.in lib/zlib/Makefile.in lib/eventlog/Makefile.in \
+ lib/util/Makefile.in lib/zlib/Makefile.in \
+ lib/fuzzstub/Makefile.in lib/eventlog/Makefile.in \
lib/iolog/Makefile.in lib/logsrv/Makefile.in logsrvd/Makefile.in \
plugins/group_file/Makefile.in plugins/sample/Makefile.in \
plugins/sudoers/Makefile.in plugins/system_group/Makefile.in \
@@ -219,6 +220,7 @@ depend: siglist.c signame.c
$(top_builddir)/config.status --file $(top_builddir)/lib/util/Makefile \
--file $(top_builddir)/lib/zlib/Makefile \
--file $(top_builddir)/lib/eventlog/Makefile \
+ --file $(top_builddir)/lib/fuzzstub/Makefile \
--file $(top_builddir)/lib/iolog/Makefile \
--file $(top_builddir)/lib/logsrv/Makefile \
--file $(top_builddir)/logsrvd/Makefile \
@@ -238,7 +240,7 @@ ChangeLog:
fi; \
elif test -d $(srcdir)/.git; then \
$(scriptdir)/log2cl.pl -R $(srcdir)/.git > $(srcdir)/$@; \
- else \
+ elif test ! -f $(srcdir)/$@; then \
echo "ChangeLog data not available" > $(srcdir)/$@; \
fi
@@ -435,4 +437,5 @@ sandwich:
echo "What? Make it yourself!"; \
fi
-.PHONY: ChangeLog me a sandwhich check-format reformat
+.PHONY: clean mostlyclean distclean cleandir clobber realclean ChangeLog \
+ me a sandwhich check-format reformat
diff --git a/NEWS b/NEWS
index 8c890b2c8..4844bacbf 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,80 @@
+What's new in Sudo 1.9.6
+
+ * Fixed a sudo_sendlog compilation problem with the AIX xlC compiler.
+
+ * Fixed a regression introduced in sudo 1.9.4 where the
+ --disable-root-mailer configure option had no effect.
+
+ * Added a --disable-leaks configure option that avoids some
+ memory leaks on exit that would otherwise occur. This is intended
+ to be used with development tools that measure memory leaks. It
+ is not safe to use in production at this time.
+
+ * Plugged some memory leaks identified by oss-fuzz and ASAN.
+
+ * Fixed the handling of sudoOptions for an LDAP sudoRole that
+ contains multiple sudoCommands. Previously, some of the options
+ would only be applied to the first sudoCommand.
+
+ * Fixed a potential out of bounds read in the parsing of NOTBEFORE
+ and NOTAFTER sudoers command options (and their LDAP equivalents).
+
+ * The parser used for reading I/O log JSON files is now more
+ resilient when processing invalid JSON.
+
+ * Fixed typos that prevented "make uninstall" from working.
+ GitHub issue #87.
+
+ * Fixed a regression introduced in sudo 1.9.4 where the last line
+ in a sudoers file might not have a terminating NUL character
+ added if no newline was present.
+
+ * Integrated oss-fuzz and LLVM's libFuzzer with sudo. The new
+ --enable-fuzzer configure option can be combined with the
+ --enable-sanitizer option to build sudo with fuzzing support.
+ Multiple fuzz targets are available for fuzzing different parts
+ of sudo. Fuzzers are built and tested via "make fuzz" or as part
+ of "make check" (even when sudo is not built with fuzzing support).
+ Fuzzing support currently requires the LLVM clang compiler (not gcc).
+
+ * Fixed the --enable-static-sudoers configure option.
+ GitHub issue #92.
+
+ * Fixed a potential out of bounds read sudo when is run by a user
+ with more groups than the value of "max_groups" in sudo.conf.
+
+ * Added an "admin_flag" sudoers option to make the use of the
+ ~/.sudo_as_admin_successful file configurable on systems where
+ sudo is build with the --enable-admin-flag configure option.
+ This mostly affects Ubuntu and its derivatives. GitHub issue #56.
+
+ * The "max_groups" setting in sudo.conf is now limited to 1024.
+ This setting is obsolete and should no longer be needed.
+
+ * Fixed a bug in the tilde expansion of "CHROOT=dir" and "CWD=dir"
+ sudoers command options. A path "~/foo" was expanded to
+ "/home/userfoo" instead of "/home/user/foo". This also affects
+ the runchroot and runcwd Defaults settings.
+
+ * Fixed a bug on systems without a native getdelim(3) function
+ where very long lines could cause parsing of the sudoers file
+ to end prematurely. Bug #960.
+
+ * Fixed a potential integer overflow when converting the
+ timestamp_timeout and passwd_timeout sudoers settings to a
+ timespec struct.
+
+ * The default for the "group_source" setting in sudo.conf is now
+ "dynamic" on macOS. Recent versions of macOS do not reliably
+ return all of a user's non-local groups via getgroups(2), even
+ when _DARWIN_UNLIMITED_GETGROUPS is defined. Bug #946.
+
+ * Fixed a potential use-after-free in the PAM conversation function.
+ Bug #967.
+
+ * Fixed potential redefinition of sys/stat.h macros in sudo_compat.h.
+ Bug #968.
+
What's new in Sudo 1.9.5p2
* Fixed sudo's setprogname(3) emulation on systems that don't
@@ -546,7 +623,7 @@ What's new in Sudo 1.8.30
those users.
* Fixed a problem restoring the SELinux tty context during reboot
- if mctransd is killed before sudo finishes. GitHub Issue #17.
+ if mctransd is killed before sudo finishes. GitHub issue #17.
* Fixed an intermittent warning on NetBSD when sudo restores the
initial stack size limit.
diff --git a/config.guess b/config.guess
index 2e9ad7fe8..1972fda8e 100644..100755
--- a/config.guess
+++ b/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2016 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
-timestamp='2016-10-02'
+timestamp='2021-01-25'
# 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-10-02'
# 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,19 +27,19 @@ timestamp='2016-10-02'
# 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/cgit/config.git/plain/config.guess
#
# Please send patches to <config-patches@gnu.org>.
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
usage="\
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-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -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,66 +94,89 @@ 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
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
+UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
+UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
+UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
-case "${UNAME_SYSTEM}" in
+case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
- # If the system lacks a compiler, then just pick glibc.
- # We could probably try harder.
- LIBC=gnu
+ LIBC=unknown
- 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
#elif defined(__dietlibc__)
LIBC=dietlibc
- #else
+ #elif defined(__GLIBC__)
LIBC=gnu
+ #else
+ #include <stdarg.h>
+ /* First heuristic to detect musl libc. */
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #endif
#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')"
+
+ # Second heuristic to detect musl libc.
+ if [ "$LIBC" = unknown ] &&
+ command -v ldd >/dev/null &&
+ ldd --version 2>&1 | grep -q ^musl; then
+ LIBC=musl
+ fi
+
+ # If the system lacks a compiler, then just pick glibc.
+ # We could probably try harder.
+ if [ "$LIBC" = unknown ]; then
+ LIBC=gnu
+ fi
;;
esac
# Note: order is significant - the case branches are not exclusive.
-case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
+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*,
@@ -167,32 +188,32 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
#
# Note: NetBSD doesn't particularly care about the vendor
# 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 || \
- echo unknown)`
- case "${UNAME_MACHINE_ARCH}" in
+ UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
+ /sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \
+ echo unknown))
+ case "$UNAME_MACHINE_ARCH" in
+ aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
- arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
- endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'`
- machine=${arch}${endian}-unknown
+ 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 +229,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,60 +240,75 @@ 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}
+ UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
+ 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}
+ UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
+ 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}
+ UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
+ 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
*4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1)
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
@@ -310,28 +346,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 +370,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
@@ -353,7 +380,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ if test "$( (/bin/universe) 2>/dev/null)" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
@@ -366,28 +393,28 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
echo sparc-icl-nx6
exit ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
+ case $(/usr/bin/uname -p) 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.
# This test works for both compilers.
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
@@ -395,40 +422,40 @@ 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
+ case "$(/usr/bin/arch -k)" in
Series*|S4*)
- UNAME_RELEASE=`uname -v`
+ UNAME_RELEASE=$(uname -v)
;;
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
- case "`/bin/arch`" in
+ UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
+ test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
+ case "$(/bin/arch)" in
sun3)
- 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 +466,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 +512,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
@@ -526,18 +553,18 @@ EOF
exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ]
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \
- [ ${TARGET_BINARY_INTERFACE}x = x ]
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$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,26 +581,26 @@ 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
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
exit ;;
ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if test -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 +611,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
@@ -597,28 +624,28 @@ EOF
fi
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
+ IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
+ if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/lslpp ] ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
- awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
else
- IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ 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 +660,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
+ if test -x /usr/bin/getconf; then
+ sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
+ sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
+ case "$sc_cpu_version" in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
532) # CPU_PA_RISC2_0
- case "${sc_kernel_bits}" in
+ 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 test "$HP_ARCH" = ""; then
+ set_cc_for_build
+ sed 's/^ //' << EOF > "$dummy.c"
#define _HPUX_SOURCE
#include <stdlib.h>
@@ -687,13 +714,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 test "$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 +739,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 +772,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,17 +785,17 @@ 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:*:*)
echo hppa1.0-hp-osf
exit ;;
i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
- echo ${UNAME_MACHINE}-unknown-osf1mk
+ if test -x /usr/sbin/sysversion ; then
+ echo "$UNAME_MACHINE"-unknown-osf1mk
else
- echo ${UNAME_MACHINE}-unknown-osf1
+ echo "$UNAME_MACHINE"-unknown-osf1
fi
exit ;;
parisc*:Lites*:*:*)
@@ -793,130 +820,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_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
+ FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | 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_SYS=$(uname -p | 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
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ 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,140 +947,181 @@ 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 ;;
+ loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*)
+ 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}
+ 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} ;;
+ 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" ;;
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}
+ riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be: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}
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI="$LIBC"x32
+ fi
+ fi
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
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.
@@ -1074,51 +1135,51 @@ 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]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
+ case $(/bin/uname -X | grep "^Machine") in
*486*) UNAME_MACHINE=i486 ;;
*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
+ UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
+ 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/.*= //')`
+ UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
@@ -1126,9 +1187,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:*:*:*)
@@ -1148,9 +1209,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:*)
@@ -1168,41 +1229,41 @@ EOF
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ && 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; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ && 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
@@ -1212,8 +1273,8 @@ EOF
exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
- echo ${UNAME_MACHINE}-sni-sysv4
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
+ echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
fi
@@ -1233,23 +1294,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}
+ if test -d /usr/nec; then
+ 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.
@@ -1268,80 +1329,97 @@ 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 ;;
+ arm64:Darwin:*:*)
+ echo aarch64-apple-darwin"$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 test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
- # 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`
+ UNAME_PROCESSOR=$(uname -p)
if test "$UNAME_PROCESSOR" = x86; then
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
@@ -1350,18 +1428,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
@@ -1382,14 +1461,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
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
+ case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
V*) echo vax-dec-vms ; exit ;;
@@ -1398,32 +1477,190 @@ 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
+ *:AROS:*:*)
+ echo "$UNAME_MACHINE"-unknown-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/cgit/config.git/plain/config.guess
and
- http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+ https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
+EOF
+
+year=$(echo $timestamp | sed 's,-.*,,')
+# shellcheck disable=SC2003
+if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+ cat >&2 <<EOF
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
@@ -1431,31 +1668,32 @@ provide the necessary information to handle your system.
config.guess timestamp = $timestamp
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+uname -m = $( (uname -m) 2>/dev/null || echo unknown)
+uname -r = $( (uname -r) 2>/dev/null || echo unknown)
+uname -s = $( (uname -s) 2>/dev/null || echo unknown)
+uname -v = $( (uname -v) 2>/dev/null || echo unknown)
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
+/bin/uname -X = $( (/bin/uname -X) 2>/dev/null)
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+hostinfo = $( (hostinfo) 2>/dev/null)
+/bin/universe = $( (/bin/universe) 2>/dev/null)
+/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null)
+/bin/arch = $( (/bin/arch) 2>/dev/null)
+/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null)
+/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
-UNAME_MACHINE = ${UNAME_MACHINE}
-UNAME_RELEASE = ${UNAME_RELEASE}
-UNAME_SYSTEM = ${UNAME_SYSTEM}
-UNAME_VERSION = ${UNAME_VERSION}
+UNAME_MACHINE = "$UNAME_MACHINE"
+UNAME_RELEASE = "$UNAME_RELEASE"
+UNAME_SYSTEM = "$UNAME_SYSTEM"
+UNAME_VERSION = "$UNAME_VERSION"
EOF
+fi
exit 1
# Local variables:
-# eval: (add-hook '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.h.in b/config.h.in
index b48acabb7..3dbc35468 100644
--- a/config.h.in
+++ b/config.h.in
@@ -181,6 +181,10 @@
don't. */
#undef HAVE_DECL_SIZE_T_MAX
+/* Define to 1 if you have the declaration of `SSIZE_MAX', and to 0 if you
+ don't. */
+#undef HAVE_DECL_SSIZE_MAX
+
/* Define to 1 if you have the declaration of `sys_sigabbrev', and to 0 if you
don't. */
#undef HAVE_DECL_SYS_SIGABBREV
@@ -282,6 +286,9 @@
/* Define to 1 if you have the `fexecve' function. */
#undef HAVE_FEXECVE
+/* Define to 1 if you have the `fmemopen' function. */
+#undef HAVE_FMEMOPEN
+
/* Define to 1 if you have the `fnmatch' function. */
#undef HAVE_FNMATCH
@@ -547,9 +554,6 @@
/* Define to 1 if you have the <maillock.h> header file. */
#undef HAVE_MAILLOCK_H
-/* 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
@@ -559,6 +563,9 @@
/* Define to 1 if you have the `memset_s' function. */
#undef HAVE_MEMSET_S
+/* Define to 1 if you have the <minix/config.h> header file. */
+#undef HAVE_MINIX_CONFIG_H
+
/* Define to 1 if you have the `mkdtemp' function. */
#undef HAVE_MKDTEMP
@@ -784,6 +791,9 @@
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
+/* Define to 1 if you have the <stdio.h> header file. */
+#undef HAVE_STDIO_H
+
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
@@ -969,6 +979,9 @@
/* Define to 1 if you have the `vsyslog' function. */
#undef HAVE_VSYSLOG
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
/* Define to 1 if you have the `wordexp' function. */
#undef HAVE_WORDEXP
@@ -1184,7 +1197,9 @@
*/
#undef STATIC_SUDOERS_PLUGIN
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#undef STDC_HEADERS
/* Define to 1 if the code in interfaces.c does not compile for you. */
@@ -1216,10 +1231,6 @@
/* Define to 1 if the `unsetenv' function returns void instead of `int'. */
#undef UNSETENV_VOID
-/* Define to 1 if you want to create ~/.sudo_as_admin_successful if the user
- is in the admin group the first time they run sudo. */
-#undef USE_ADMIN_FLAG
-
/* Define to 1 if you want to insult the user for entering an incorrect
password. */
#undef USE_INSULTS
@@ -1231,32 +1242,93 @@
#ifndef _ALL_SOURCE
# undef _ALL_SOURCE
#endif
+/* Enable general extensions on macOS. */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# undef _GNU_SOURCE
#endif
-/* Enable threading extensions on Solaris. */
+/* Enable X/Open compliant socket functions that do not require linking
+ with -lxnet on HP-UX 11.11. */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# undef _HPUX_ALT_XOPEN_SOCKET_API
+#endif
+/* Identify the host operating system as Minix.
+ This macro does not affect the system headers' behavior.
+ A future release of Autoconf may stop defining this macro. */
+#ifndef _MINIX
+# undef _MINIX
+#endif
+/* Enable general extensions on NetBSD.
+ Enable NetBSD compatibility extensions on Minix. */
+#ifndef _NETBSD_SOURCE
+# undef _NETBSD_SOURCE
+#endif
+/* Enable OpenBSD compatibility extensions on NetBSD.
+ Oddly enough, this does nothing on OpenBSD. */
+#ifndef _OPENBSD_SOURCE
+# undef _OPENBSD_SOURCE
+#endif
+/* Define to 1 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_SOURCE
+# undef _POSIX_SOURCE
+#endif
+/* Define to 2 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_1_SOURCE
+# undef _POSIX_1_SOURCE
+#endif
+/* Enable POSIX-compatible threading on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# undef _POSIX_PTHREAD_SEMANTICS
#endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# undef __STDC_WANT_IEC_60559_BFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# undef __STDC_WANT_IEC_60559_DFP_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# undef __STDC_WANT_IEC_60559_TYPES_EXT__
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
+#ifndef __STDC_WANT_LIB_EXT2__
+# undef __STDC_WANT_LIB_EXT2__
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009. */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# undef __STDC_WANT_MATH_SPEC_FUNCS__
+#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# undef _TANDEM_SOURCE
#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
+/* Enable X/Open extensions. Define to 500 only if necessary
+ to make mbstate_t available. */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
#endif
/* Define to avoid using the passwd/shadow file for authentication. */
#undef WITHOUT_PASSWD
-/* 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
@@ -1267,16 +1339,6 @@
/* 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 __FUNCTION__ if your compiler supports __FUNCTION__ but not
__func__ */
#undef __func__
diff --git a/config.sub b/config.sub
index 040d5cbc8..63c1f1c8b 100644..100755
--- a/config.sub
+++ b/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2016 Free Software Foundation, Inc.
+# Copyright 1992-2021 Free Software Foundation, Inc.
-timestamp='2016-09-05'
+timestamp='2021-01-08'
# 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-09-05'
# 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
@@ -33,7 +33,7 @@ timestamp='2016-09-05'
# 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
+# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
@@ -50,14 +50,14 @@ timestamp='2016-09-05'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
Canonicalize a configuration name.
-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
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -89,12 +89,12 @@ while test $# -gt 0 ; do
- ) # Use stdin as input.
break ;;
-* )
- echo "$me: invalid option $1$help"
+ echo "$me: invalid option $1$help" >&2
exit 1 ;;
*local*)
# First pass through any local machine types.
- echo $1
+ echo "$1"
exit ;;
* )
@@ -110,1246 +110,1169 @@ case $# in
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* | cloudabi*-eabi* | \
- 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
+# Split fields of configuration type
+# shellcheck disable=SC2162
+IFS="-" read field1 field2 field3 field4 <<EOF
+$1
+EOF
-### 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* | -sr2201*)
- 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
+# Separate into logical components for further validation
+case $1 in
+ *-*-*-*-*)
+ echo Invalid configuration \`"$1"\': more than four components >&2
+ exit 1
;;
- -ptx*)
- basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
+ *-*-*-*)
+ basic_machine=$field1-$field2
+ basic_os=$field3-$field4
;;
- -windowsnt*)
- os=`echo $os | sed -e 's/windowsnt/winnt/'`
+ *-*-*)
+ # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
+ # parts
+ maybe_os=$field2-$field3
+ case $maybe_os in
+ nto-qnx* | linux-* | uclinux-uclibc* \
+ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
+ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
+ | storm-chaos* | os2-emx* | rtmk-nova*)
+ basic_machine=$field1
+ basic_os=$maybe_os
+ ;;
+ android-linux)
+ basic_machine=$field1-unknown
+ basic_os=linux-android
+ ;;
+ *)
+ basic_machine=$field1-$field2
+ basic_os=$field3
+ ;;
+ esac
;;
- -psos*)
- os=-psos
+ *-*)
+ # A lone config we happen to match not fitting any pattern
+ case $field1-$field2 in
+ decstation-3100)
+ basic_machine=mips-dec
+ basic_os=
+ ;;
+ *-*)
+ # Second component is usually, but not always the OS
+ case $field2 in
+ # Prevent following clause from handling this valid os
+ sun*os*)
+ basic_machine=$field1
+ basic_os=$field2
+ ;;
+ # Manufacturers
+ dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
+ | att* | 7300* | 3300* | delta* | motorola* | sun[234]* \
+ | unicom* | ibm* | next | hp | isi* | apollo | altos* \
+ | convergent* | ncr* | news | 32* | 3600* | 3100* \
+ | hitachi* | c[123]* | convex* | sun | crds | omron* | dg \
+ | ultra | tti* | harris | dolphin | highlevel | gould \
+ | cbm | ns | masscomp | apple | axis | knuth | cray \
+ | microblaze* | sim | cisco \
+ | oki | wec | wrs | winbond)
+ basic_machine=$field1-$field2
+ basic_os=
+ ;;
+ *)
+ basic_machine=$field1
+ basic_os=$field2
+ ;;
+ esac
+ ;;
+ esac
;;
- -mint | -mint[0-9]*)
- basic_machine=m68k-atari
- os=-mint
+ *)
+ # Convert single-component short-hands not valid as part of
+ # multi-component configurations.
+ case $field1 in
+ 386bsd)
+ basic_machine=i386-pc
+ basic_os=bsd
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ basic_os=scout
+ ;;
+ alliant)
+ basic_machine=fx80-alliant
+ basic_os=
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ basic_os=
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ basic_os=bsd
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ basic_os=sysv
+ ;;
+ amiga)
+ basic_machine=m68k-unknown
+ basic_os=
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ basic_os=amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ basic_os=sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ basic_os=sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ basic_os=bsd
+ ;;
+ aros)
+ basic_machine=i386-pc
+ basic_os=aros
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ basic_os=aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ basic_os=dynix
+ ;;
+ blackfin)
+ basic_machine=bfin-unknown
+ basic_os=linux
+ ;;
+ cegcc)
+ basic_machine=arm-unknown
+ basic_os=cegcc
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ basic_os=bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ basic_os=bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ basic_os=bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ basic_os=bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ basic_os=bsd
+ ;;
+ cray)
+ basic_machine=j90-cray
+ basic_os=unicos
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ basic_os=
+ ;;
+ da30)
+ basic_machine=m68k-da30
+ basic_os=
+ ;;
+ decstation | pmax | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ basic_os=
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ basic_os=sysv3
+ ;;
+ dicos)
+ basic_machine=i686-pc
+ basic_os=dicos
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ basic_os=msdosdjgpp
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ basic_os=ebmon
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ basic_os=ose
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ basic_os=sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ basic_os=go32
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ basic_os=hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ basic_os=xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ basic_os=hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ basic_os=sysv3
+ ;;
+ hp300 | hp300hpux)
+ basic_machine=m68k-hp
+ basic_os=hpux
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ basic_os=bsd
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ basic_os=osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ basic_os=proelf
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ basic_os=mach
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ basic_os=sysv
+ ;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ basic_os=linux
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ basic_os=sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ basic_os=sysv
+ ;;
+ mingw64)
+ basic_machine=x86_64-pc
+ basic_os=mingw64
+ ;;
+ mingw32)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ basic_os=mingw32ce
+ ;;
+ monitor)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ morphos)
+ basic_machine=powerpc-unknown
+ basic_os=morphos
+ ;;
+ moxiebox)
+ basic_machine=moxie-unknown
+ basic_os=moxiebox
+ ;;
+ msdos)
+ basic_machine=i386-pc
+ basic_os=msdos
+ ;;
+ msys)
+ basic_machine=i686-pc
+ basic_os=msys
+ ;;
+ mvs)
+ basic_machine=i370-ibm
+ basic_os=mvs
+ ;;
+ nacl)
+ basic_machine=le32-unknown
+ basic_os=nacl
+ ;;
+ ncr3000)
+ basic_machine=i486-ncr
+ basic_os=sysv4
+ ;;
+ netbsd386)
+ basic_machine=i386-pc
+ basic_os=netbsd
+ ;;
+ netwinder)
+ basic_machine=armv4l-rebel
+ basic_os=linux
+ ;;
+ news | news700 | news800 | news900)
+ basic_machine=m68k-sony
+ basic_os=newsos
+ ;;
+ news1000)
+ basic_machine=m68030-sony
+ basic_os=newsos
+ ;;
+ necv70)
+ basic_machine=v70-nec
+ basic_os=sysv
+ ;;
+ nh3000)
+ basic_machine=m68k-harris
+ basic_os=cxux
+ ;;
+ nh[45]000)
+ basic_machine=m88k-harris
+ basic_os=cxux
+ ;;
+ nindy960)
+ basic_machine=i960-intel
+ basic_os=nindy
+ ;;
+ mon960)
+ basic_machine=i960-intel
+ basic_os=mon960
+ ;;
+ nonstopux)
+ basic_machine=mips-compaq
+ basic_os=nonstopux
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ basic_os=os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ basic_os=ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ basic_os=os68k
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ basic_os=osf
+ ;;
+ parisc)
+ basic_machine=hppa-unknown
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ basic_os=pw32
+ ;;
+ rdos | rdos64)
+ basic_machine=x86_64-pc
+ basic_os=rdos
+ ;;
+ rdos32)
+ basic_machine=i386-pc
+ basic_os=rdos
+ ;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ basic_os=coff
+ ;;
+ sa29200)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ sei)
+ basic_machine=mips-sei
+ basic_os=seiux
+ ;;
+ sequent)
+ basic_machine=i386-sequent
+ basic_os=
+ ;;
+ sps7)
+ basic_machine=m68k-bull
+ basic_os=sysv2
+ ;;
+ st2000)
+ basic_machine=m68k-tandem
+ basic_os=
+ ;;
+ stratus)
+ basic_machine=i860-stratus
+ basic_os=sysv4
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ basic_os=
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ basic_os=sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ basic_os=sunos4
+ ;;
+ sun3)
+ basic_machine=m68k-sun
+ basic_os=
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ basic_os=sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ basic_os=sunos4
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ basic_os=
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ basic_os=sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ basic_os=sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ basic_os=solaris2
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ basic_os=
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ basic_os=unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ basic_os=dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ basic_os=unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ basic_os=unicos
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ basic_os=tops20
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ basic_os=tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ basic_os=udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ basic_os=sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ basic_os=none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ basic_os=sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ basic_os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ basic_os=vsta
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ basic_os=vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ basic_os=vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ basic_os=vxworks
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ basic_os=mingw32
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ basic_os=unicos
+ ;;
+ *)
+ basic_machine=$1
+ basic_os=
+ ;;
+ esac
;;
esac
-# Decode aliases for certain CPU-COMPANY combinations.
+# Decode 1-component or ad-hoc basic machines
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
+ # 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
;;
- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ op50n)
+ cpu=hppa1.1
+ vendor=oki
;;
- ms1)
- basic_machine=mt-unknown
+ op60c)
+ cpu=hppa1.1
+ vendor=oki
;;
-
- strongarm | thumb | xscale)
- basic_machine=arm-unknown
+ ibm*)
+ cpu=i370
+ vendor=ibm
;;
- xgate)
- basic_machine=$basic_machine-unknown
- os=-none
+ orion105)
+ cpu=clipper
+ vendor=highlevel
;;
- xscaleeb)
- basic_machine=armeb-unknown
+ mac | mpw | mac-mpw)
+ cpu=m68k
+ vendor=apple
;;
-
- xscaleel)
- basic_machine=armel-unknown
+ pmac | pmac-mpw)
+ cpu=powerpc
+ vendor=apple
;;
- # 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
+ cpu=m68000
+ vendor=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
+ cpu=we32k
+ vendor=att
;;
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
+ cpu=powerpc
+ vendor=ibm
+ basic_os=cnk
;;
decsystem10* | dec10*)
- basic_machine=pdp10-dec
- os=-tops10
+ cpu=pdp10
+ vendor=dec
+ basic_os=tops10
;;
decsystem20* | dec20*)
- basic_machine=pdp10-dec
- os=-tops20
+ cpu=pdp10
+ vendor=dec
+ basic_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
+ cpu=m68k
+ vendor=motorola
;;
- e500v[12])
- basic_machine=powerpc-unknown
- os=$os"spe"
- ;;
- e500v[12]-*)
- basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
- os=$os"spe"
- ;;
- ebmon29k)
- basic_machine=a29k-amd
- os=-ebmon
- ;;
- elxsi)
- basic_machine=elxsi-elxsi
- os=-bsd
+ dpx2*)
+ cpu=m68k
+ vendor=bull
+ basic_os=sysv3
;;
encore | umax | mmax)
- basic_machine=ns32k-encore
+ cpu=ns32k
+ vendor=encore
;;
- es1800 | OSE68k | ose68k | ose | OSE)
- basic_machine=m68k-ericsson
- os=-ose
+ elxsi)
+ cpu=elxsi
+ vendor=elxsi
+ basic_os=${basic_os:-bsd}
;;
fx2800)
- basic_machine=i860-alliant
+ cpu=i860
+ vendor=alliant
;;
genix)
- basic_machine=ns32k-ns
- ;;
- gmicro)
- basic_machine=tron-gmicro
- os=-sysv
- ;;
- go32)
- basic_machine=i386-pc
- os=-go32
+ cpu=ns32k
+ vendor=ns
;;
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
- ;;
- sr2201*)
- basic_machine=harp1e-hitachi
- os=-hiuxmpp
- ;;
- 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
+ cpu=hppa1.1
+ vendor=hitachi
+ basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
- basic_machine=m68000-hp
+ cpu=m68000
+ vendor=hp
;;
hp9k3[2-9][0-9])
- basic_machine=m68k-hp
+ cpu=m68k
+ vendor=hp
;;
hp9k6[0-9][0-9] | hp6[0-9][0-9])
- basic_machine=hppa1.0-hp
+ cpu=hppa1.0
+ vendor=hp
;;
hp9k7[0-79][0-9] | hp7[0-79][0-9])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k78[0-9] | hp78[0-9])
# FIXME: really hppa2.0-hp
- basic_machine=hppa1.1-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
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=hp
;;
hp9k8[0-9][13679] | hp8[0-9][13679])
- basic_machine=hppa1.1-hp
+ cpu=hppa1.1
+ vendor=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
+ cpu=hppa1.0
+ vendor=hp
;;
i*86v32)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv32
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
+ vendor=pc
+ basic_os=sysv32
;;
i*86v4*)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv4
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
+ vendor=pc
+ basic_os=sysv4
;;
i*86v)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-sysv
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
+ vendor=pc
+ basic_os=sysv
;;
i*86sol2)
- basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
- os=-solaris2
- ;;
- i386mach)
- basic_machine=i386-mach
- os=-mach
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
+ vendor=pc
+ basic_os=solaris2
;;
- i386-vsta | vsta)
- basic_machine=i386-unknown
- os=-vsta
+ j90 | j90-cray)
+ cpu=j90
+ vendor=cray
+ basic_os=${basic_os:-unicos}
;;
iris | iris4d)
- basic_machine=mips-sgi
- case $os in
- -irix*)
+ cpu=mips
+ vendor=sgi
+ case $basic_os in
+ irix*)
;;
*)
- os=-irix4
+ basic_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
+ cpu=m68000
+ vendor=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
+ *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ cpu=m68k
+ vendor=atari
+ basic_os=mint
;;
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* )
+ cpu=mips
+ vendor=sony
+ basic_os=newsos
+ ;;
+ next | m*-next)
+ cpu=m68k
+ vendor=next
+ case $basic_os in
+ openstep*)
+ ;;
+ nextstep*)
;;
- -ns2*)
- os=-nextstep2
+ ns2*)
+ basic_os=nextstep2
;;
*)
- os=-nextstep3
+ basic_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
+ cpu=np1
+ vendor=gould
;;
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
+ cpu=hppa1.1
+ vendor=oki
+ basic_os=proelf
;;
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
+ cpu=hppa1.1
+ vendor=hitachi
+ basic_os=hiuxwe2
;;
pbd)
- basic_machine=sparc-tti
+ cpu=sparc
+ vendor=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/^[^-]*-//'`
+ cpu=m68k
+ vendor=tti
;;
- 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/^[^-]*-//'`
+ pc532)
+ cpu=ns32k
+ vendor=pc532
;;
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/^[^-]*-//'`
+ cpu=pn
+ vendor=gould
;;
- ppcle | powerpclittle)
- 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)
- basic_machine=powerpc64le-unknown
- ;;
- ppc64le-* | powerpc64little-*)
- basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ power)
+ cpu=power
+ vendor=ibm
;;
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
+ cpu=i386
+ vendor=ibm
;;
rm[46]00)
- basic_machine=mips-siemens
+ cpu=mips
+ vendor=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
+ cpu=romp
+ vendor=ibm
;;
- sb1)
- basic_machine=mipsisa64sb1-unknown
+ sde)
+ cpu=mipsisa32
+ vendor=sde
+ basic_os=${basic_os:-elf}
;;
- sb1el)
- basic_machine=mipsisa64sb1el-unknown
+ simso-wrs)
+ cpu=sparclite
+ vendor=wrs
+ basic_os=vxworks
;;
- sde)
- basic_machine=mipsisa32-sde
- os=-elf
+ tower | tower-32)
+ cpu=m68k
+ vendor=ncr
;;
- sei)
- basic_machine=mips-sei
- os=-seiux
+ vpp*|vx|vx-*)
+ cpu=f301
+ vendor=fujitsu
;;
- sequent)
- basic_machine=i386-sequent
+ w65)
+ cpu=w65
+ vendor=wdc
;;
- sh)
- basic_machine=sh-hitachi
- os=-hms
+ w89k-*)
+ cpu=hppa1.1
+ vendor=winbond
+ basic_os=proelf
;;
- sh5el)
- basic_machine=sh5le-unknown
+ none)
+ cpu=none
+ vendor=none
;;
- sh64)
- basic_machine=sh64-unknown
+ leon|leon[3-9])
+ cpu=sparc
+ vendor=$basic_machine
;;
- sparclite-wrs | simso-wrs)
- basic_machine=sparclite-wrs
- os=-vxworks
+ leon-*|leon[3-9]-*)
+ cpu=sparc
+ vendor=$(echo "$basic_machine" | sed 's/-.*//')
;;
- sps7)
- basic_machine=m68k-bull
- os=-sysv2
+
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read cpu vendor <<EOF
+$basic_machine
+EOF
;;
- spur)
- basic_machine=spur-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)
+ cpu=$basic_machine
+ vendor=pc
;;
- st2000)
- basic_machine=m68k-tandem
+ # 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
;;
- stratus)
- basic_machine=i860-stratus
- os=-sysv4
+ x64 | amd64)
+ cpu=x86_64
+ vendor=pc
;;
- strongarm-* | thumb-*)
- basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
+ # Recognize the basic CPU types without company name.
+ *)
+ cpu=$basic_machine
+ vendor=unknown
;;
- sun2)
- basic_machine=m68000-sun
+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
+ basic_os=${basic_os:-unicosmp}
;;
- sun2os3)
- basic_machine=m68000-sun
- os=-sunos3
+ c90-unknown | c90-cray)
+ vendor=cray
+ basic_os=${Basic_os:-unicos}
;;
- sun2os4)
- basic_machine=m68000-sun
- os=-sunos4
+ fx80-unknown)
+ vendor=alliant
;;
- sun3os3)
- basic_machine=m68k-sun
- os=-sunos3
+ romp-unknown)
+ vendor=ibm
;;
- sun3os4)
- basic_machine=m68k-sun
- os=-sunos4
+ mmix-unknown)
+ vendor=knuth
;;
- sun4os3)
- basic_machine=sparc-sun
- os=-sunos3
+ microblaze-unknown | microblazeel-unknown)
+ vendor=xilinx
;;
- sun4os4)
- basic_machine=sparc-sun
- os=-sunos4
+ rs6000-unknown)
+ vendor=ibm
;;
- sun4sol2)
- basic_machine=sparc-sun
- os=-solaris2
+ vax-unknown)
+ vendor=dec
;;
- sun3 | sun3-*)
- basic_machine=m68k-sun
+ pdp11-unknown)
+ vendor=dec
;;
- sun4)
- basic_machine=sparc-sun
+ we32k-unknown)
+ vendor=att
;;
- sun386 | sun386i | roadrunner)
- basic_machine=i386-sun
+ cydra-unknown)
+ vendor=cydrome
;;
- sv1)
- basic_machine=sv1-cray
- os=-unicos
+ i370-ibm*)
+ vendor=ibm
;;
- symmetry)
- basic_machine=i386-sequent
- os=-dynix
+ orion-unknown)
+ vendor=highlevel
;;
- t3e)
- basic_machine=alphaev5-cray
- os=-unicos
+ xps-unknown | xps100-unknown)
+ cpu=xps100
+ vendor=honeywell
;;
- t90)
- basic_machine=t90-cray
- os=-unicos
+
+ # Here we normalize CPU types with a missing or matching vendor
+ dpx20-unknown | dpx20-bull)
+ cpu=rs6000
+ vendor=bull
+ basic_os=${basic_os:-bosx}
;;
- tile*)
- basic_machine=$basic_machine-unknown
- os=-linux-gnu
+
+ # Here we normalize CPU types irrespective of the vendor
+ amd64-*)
+ cpu=x86_64
;;
- tx39)
- basic_machine=mipstx39-unknown
+ blackfin-*)
+ cpu=bfin
+ basic_os=linux
;;
- tx39el)
- basic_machine=mipstx39el-unknown
+ c54x-*)
+ cpu=tic54x
;;
- toad1)
- basic_machine=pdp10-xkl
- os=-tops20
+ c55x-*)
+ cpu=tic55x
;;
- tower | tower-32)
- basic_machine=m68k-ncr
+ c6x-*)
+ cpu=tic6x
;;
- tpf)
- basic_machine=s390x-ibm
- os=-tpf
+ e500v[12]-*)
+ cpu=powerpc
+ basic_os=${basic_os}"spe"
;;
- udi29k)
- basic_machine=a29k-amd
- os=-udi
+ mips3*-*)
+ cpu=mips64
;;
- ultra3)
- basic_machine=a29k-nyu
- os=-sym1
+ ms1-*)
+ cpu=mt
;;
- v810 | necv810)
- basic_machine=v810-nec
- os=-none
+ m68knommu-*)
+ cpu=m68k
+ basic_os=linux
;;
- vaxv)
- basic_machine=vax-dec
- os=-sysv
+ m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
+ cpu=s12z
;;
- vms)
- basic_machine=vax-dec
- os=-vms
+ openrisc-*)
+ cpu=or32
;;
- vpp*|vx|vx-*)
- basic_machine=f301-fujitsu
+ parisc-*)
+ cpu=hppa
+ basic_os=linux
;;
- vxworks960)
- basic_machine=i960-wrs
- os=-vxworks
+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
+ cpu=i586
;;
- vxworks68)
- basic_machine=m68k-wrs
- os=-vxworks
+ pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*)
+ cpu=i686
;;
- vxworks29k)
- basic_machine=a29k-wrs
- os=-vxworks
+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
+ cpu=i686
;;
- w65*)
- basic_machine=w65-wdc
- os=-none
+ pentium4-*)
+ cpu=i786
;;
- w89k-*)
- basic_machine=hppa1.1-winbond
- os=-proelf
+ pc98-*)
+ cpu=i386
;;
- xbox)
- basic_machine=i686-pc
- os=-mingw32
+ ppc-* | ppcbe-*)
+ cpu=powerpc
;;
- xps | xps100)
- basic_machine=xps100-honeywell
+ ppcle-* | powerpclittle-*)
+ cpu=powerpcle
;;
- xscale-* | xscalee[bl]-*)
- basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
+ ppc64-*)
+ cpu=powerpc64
;;
- ymp)
- basic_machine=ymp-cray
- os=-unicos
+ ppc64le-* | powerpc64little-*)
+ cpu=powerpc64le
;;
- z8k-*-coff)
- basic_machine=z8k-unknown
- os=-sim
+ sb1-*)
+ cpu=mipsisa64sb1
;;
- z80-*-coff)
- basic_machine=z80-unknown
- os=-sim
+ sb1el-*)
+ cpu=mipsisa64sb1el
;;
- none)
- basic_machine=none-none
- os=-none
+ sh5e[lb]-*)
+ cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
;;
-
-# 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
+ spur-*)
+ cpu=spur
;;
- op50n)
- basic_machine=hppa1.1-oki
+ strongarm-* | thumb-*)
+ cpu=arm
;;
- op60c)
- basic_machine=hppa1.1-oki
+ tx39-*)
+ cpu=mipstx39
;;
- romp)
- basic_machine=romp-ibm
+ tx39el-*)
+ cpu=mipstx39el
;;
- mmix)
- basic_machine=mmix-knuth
+ x64-*)
+ cpu=x86_64
;;
- rs6000)
- basic_machine=rs6000-ibm
+ xscale-* | xscalee[bl]-*)
+ cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
;;
- vax)
- basic_machine=vax-dec
+ arm64-*)
+ cpu=aarch64
;;
- pdp10)
- # there are many clones, so DEC is not a safe bet
- basic_machine=pdp10-unknown
+
+ # Recognize the canonical CPU Types that limit and/or modify the
+ # company names they are paired with.
+ cr16-*)
+ basic_os=${basic_os:-elf}
;;
- pdp11)
- basic_machine=pdp11-dec
+ crisv32-* | etraxfs*-*)
+ cpu=crisv32
+ vendor=axis
;;
- we32k)
- basic_machine=we32k-att
+ cris-* | etrax*-*)
+ cpu=cris
+ vendor=axis
;;
- sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
- basic_machine=sh-unknown
+ crx-*)
+ basic_os=${basic_os:-elf}
;;
- sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
- basic_machine=sparc-sun
+ neo-tandem)
+ cpu=neo
+ vendor=tandem
;;
- cydra)
- basic_machine=cydra-cydrome
+ nse-tandem)
+ cpu=nse
+ vendor=tandem
;;
- orion)
- basic_machine=orion-highlevel
+ nsr-tandem)
+ cpu=nsr
+ vendor=tandem
;;
- orion105)
- basic_machine=clipper-highlevel
+ nsv-tandem)
+ cpu=nsv
+ vendor=tandem
;;
- mac | mpw | mac-mpw)
- basic_machine=m68k-apple
+ nsx-tandem)
+ cpu=nsx
+ vendor=tandem
;;
- pmac | pmac-mpw)
- basic_machine=powerpc-apple
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
;;
- *-unknown)
- # Make sure to match an already-canonicalized machine name.
+ tile*-*)
+ basic_os=${basic_os:-linux-gnu}
;;
+
*)
- echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
- exit 1
+ # 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 \
+ | loongarch32 | loongarch64 | loongarchx32 \
+ | 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 | riscv32be | riscv64 | riscv64be \
+ | rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
+ | 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 \
+ | thumbv7* \
+ | 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 $basic_machine in
- *-digital*)
- basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
+case $vendor in
+ digital*)
+ vendor=dec
;;
- *-commodore*)
- basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
+ commodore*)
+ vendor=cbm
;;
*)
;;
@@ -1357,203 +1280,213 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x"$os" != x"" ]
+if test x$basic_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
+
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
+ ;;
+ os2-emx)
+ kernel=os2
+ os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto|qnx|')
+ ;;
+ linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|linux|gnu|')
;;
- -solaris1 | -solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ *)
+ kernel=
+ os=$basic_os
;;
- -solaris)
- os=-solaris2
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
+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
;;
- -svr4*)
- os=-sysv4
+ bluegene*)
+ os=cnk
;;
- -unixware*)
- os=-sysv4.2uw
+ solaris1 | solaris1.*)
+ os=$(echo $os | sed -e 's|solaris1|sunos4|')
;;
- -gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ solaris)
+ os=solaris2
;;
- # 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* \
- | -midipix* | -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
+ unixware*)
+ os=sysv4.2uw
;;
- -nto-qnx*)
+ # es1800 is here to avoid being matched by es* (a different OS)
+ es1800*)
+ os=ose
;;
- -nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ # Some version numbers need modification
+ chorusos*)
+ os=chorusos
;;
- -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
- | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
- | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ isc)
+ os=isc2.2
;;
- -mac*)
- os=`echo $os | sed -e 's|mac|macos|'`
+ sco6)
+ os=sco5v6
;;
- -linux-dietlibc)
- os=-linux-dietlibc
+ sco5)
+ os=sco3.2v5
;;
- -linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ sco4)
+ os=sco3.2v4
;;
- -sunos5*)
- os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ sco3.2.[4-9]*)
+ os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
;;
- -sunos6*)
- os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ sco*v* | scout)
+ # Don't match below
;;
- -opened*)
- os=-openedition
+ sco*)
+ os=sco3.2v2
;;
- -os400*)
- os=-os400
+ psos*)
+ os=psos
;;
- -wince*)
- os=-wince
+ qnx*)
+ os=qnx
;;
- -osfrose*)
- os=-osfrose
+ hiux*)
+ os=hiuxwe2
;;
- -osf*)
- os=-osf
+ lynx*178)
+ os=lynxos178
;;
- -utek*)
- os=-bsd
+ lynx*5)
+ os=lynxos5
;;
- -dynix*)
- os=-bsd
+ lynxos*)
+ # don't get caught up in next wildcard
;;
- -acis*)
- os=-aos
+ lynx*)
+ os=lynxos
;;
- -atheos*)
- os=-atheos
+ mac[0-9]*)
+ os=$(echo "$os" | sed -e 's|mac|macos|')
;;
- -syllable*)
- os=-syllable
+ opened*)
+ os=openedition
;;
- -386bsd)
- os=-bsd
+ os400*)
+ os=os400
;;
- -ctix* | -uts*)
- os=-sysv
+ sunos5*)
+ os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
;;
- -nova*)
- os=-rtmk-nova
+ sunos6*)
+ os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
;;
- -ns2 )
- os=-nextstep2
+ wince*)
+ os=wince
;;
- -nsk*)
- os=-nsk
+ utek*)
+ os=bsd
;;
- # Preserve the version number of sinix5.
- -sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ dynix*)
+ os=bsd
+ ;;
+ acis*)
+ os=aos
;;
- -sinix*)
- os=-sysv4
+ atheos*)
+ os=atheos
;;
- -tpf*)
- os=-tpf
+ syllable*)
+ os=syllable
;;
- -triton*)
- os=-sysv3
+ 386bsd)
+ os=bsd
;;
- -oss*)
- os=-sysv3
+ ctix* | uts*)
+ os=sysv
;;
- -svr4)
- os=-sysv4
+ nova*)
+ os=rtmk-nova
;;
- -svr3)
- os=-sysv3
+ ns2)
+ os=nextstep2
;;
- -sysvr4)
- os=-sysv4
+ # Preserve the version number of sinix5.
+ sinix5.*)
+ os=$(echo $os | sed -e 's|sinix|sysv|')
;;
- # This must come after -sysvr4.
- -sysv*)
+ sinix*)
+ os=sysv4
;;
- -ose*)
- os=-ose
+ tpf*)
+ os=tpf
;;
- -es1800*)
- os=-ose
+ triton*)
+ os=sysv3
;;
- -xenix)
- os=-xenix
+ oss*)
+ os=sysv3
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
- os=-mint
+ svr4*)
+ os=sysv4
;;
- -aros*)
- os=-aros
+ svr3)
+ os=sysv3
;;
- -zvmoe)
- os=-zvmoe
+ sysvr4)
+ os=sysv4
;;
- -dicos*)
- os=-dicos
+ ose*)
+ os=ose
;;
- -nacl*)
+ *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ os=mint
;;
- -ios)
+ dicos*)
+ os=dicos
;;
- -none)
+ 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
;;
*)
- # 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
+ # No normalization, but not necessarily accepted, that comes below.
;;
esac
+
else
# Here we handle the default operating systems that come with various machines.
@@ -1566,261 +1499,361 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
-case $basic_machine in
+kernel=
+case $cpu-$vendor in
score-*)
- os=-elf
+ os=elf
;;
spu-*)
- os=-elf
+ os=elf
;;
*-acorn)
- os=-riscix1.2
+ os=riscix1.2
;;
arm*-rebel)
- os=-linux
+ kernel=linux
+ os=gnu
;;
arm*-semi)
- os=-aout
+ os=aout
;;
c4x-* | tic4x-*)
- os=-coff
+ os=coff
;;
c8051-*)
- os=-elf
+ os=elf
+ ;;
+ clipper-intergraph)
+ os=clix
;;
hexagon-*)
- os=-elf
+ os=elf
;;
tic54x-*)
- os=-coff
+ os=coff
;;
tic55x-*)
- os=-coff
+ os=coff
;;
tic6x-*)
- os=-coff
+ os=coff
;;
# This must come before the *-dec entry.
pdp10-*)
- os=-tops20
+ os=tops20
;;
pdp11-*)
- os=-none
+ os=none
;;
*-dec | vax-*)
- os=-ultrix4.2
+ os=ultrix4.2
;;
m68*-apollo)
- os=-domain
+ os=domain
;;
i386-sun)
- os=-sunos4.0.2
+ os=sunos4.0.2
;;
m68000-sun)
- os=-sunos3
+ os=sunos3
;;
m68*-cisco)
- os=-aout
+ os=aout
;;
mep-*)
- os=-elf
+ os=elf
;;
mips*-cisco)
- os=-elf
+ os=elf
;;
mips*-*)
- os=-elf
+ os=elf
;;
or32-*)
- os=-coff
+ os=coff
;;
*-tti) # must be before sparc entry or we get the wrong os.
- os=-sysv3
+ os=sysv3
;;
sparc-* | *-sun)
- os=-sunos4.1.1
+ os=sunos4.1.1
;;
- *-be)
- os=-beos
+ pru-*)
+ os=elf
;;
- *-haiku)
- os=-haiku
+ *-be)
+ os=beos
;;
*-ibm)
- os=-aix
+ os=aix
;;
*-knuth)
- os=-mmixware
+ os=mmixware
;;
*-wec)
- os=-proelf
+ os=proelf
;;
*-winbond)
- os=-proelf
+ os=proelf
;;
*-oki)
- os=-proelf
+ os=proelf
;;
*-hp)
- os=-hpux
+ os=hpux
;;
*-hitachi)
- os=-hiux
+ os=hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
- os=-sysv
+ os=sysv
;;
*-cbm)
- os=-amigaos
+ os=amigaos
;;
*-dg)
- os=-dgux
+ os=dgux
;;
*-dolphin)
- os=-sysv3
+ os=sysv3
;;
m68k-ccur)
- os=-rtu
+ os=rtu
;;
m88k-omron*)
- os=-luna
+ os=luna
;;
- *-next )
- os=-nextstep
+ *-next)
+ os=nextstep
;;
*-sequent)
- os=-ptx
+ os=ptx
;;
*-crds)
- os=-unos
+ os=unos
;;
*-ns)
- os=-genix
+ os=genix
;;
i370-*)
- os=-mvs
- ;;
- *-next)
- os=-nextstep3
+ os=mvs
;;
*-gould)
- os=-sysv
+ os=sysv
;;
*-highlevel)
- os=-bsd
+ os=bsd
;;
*-encore)
- os=-bsd
+ os=bsd
;;
*-sgi)
- os=-irix
+ os=irix
;;
*-siemens)
- os=-sysv4
+ os=sysv4
;;
*-masscomp)
- os=-rtu
+ os=rtu
;;
f30[01]-fujitsu | f700-fujitsu)
- os=-uxpv
+ os=uxpv
;;
*-rom68k)
- os=-coff
+ os=coff
;;
*-*bug)
- os=-coff
+ os=coff
;;
*-apple)
- os=-macos
+ os=macos
;;
*-atari*)
- os=-mint
+ os=mint
+ ;;
+ *-wrs)
+ os=vxworks
;;
*)
- os=-none
+ os=none
;;
esac
+
fi
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+ # Sometimes we do "kernel-libc", so those need to count as OSes.
+ musl* | newlib* | uclibc*)
+ ;;
+ # Likewise for "kernel-abi"
+ eabi* | gnueabi*)
+ ;;
+ # VxWorks passes extra cpu info in the 4th filed.
+ simlinux | simwindows | spe)
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ | hiux* | abug | nacl* | netware* | windows* \
+ | os9* | macos* | osx* | ios* \
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | mint* \
+ | 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* \
+ | scout* | superux* | sysv* | rtmk* | tpf* | 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* | genode* | zvmoe* | qnx* | emx*)
+ ;;
+ # This one is extra strict with allowed versions
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ none)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+ ;;
+ uclinux-uclibc* )
+ ;;
+ -dietlibc* | -newlib* | -musl* | -uclibc* )
+ # These are just libc implementations, not actual OSes, and thus
+ # require a kernel.
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
+ ;;
+ vxworks-simlinux | vxworks-simwindows | vxworks-spe)
+ ;;
+ nto-qnx*)
+ ;;
+ os2-emx)
+ ;;
+ *-eabi* | *-gnueabi*)
+ ;;
+ -*)
+ # Blank kernel with real OS is always fine.
+ ;;
+ *-*)
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ exit 1
+ ;;
+esac
+
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
-vendor=unknown
-case $basic_machine in
- *-unknown)
- case $os in
- -riscix*)
+case $vendor in
+ unknown)
+ case $cpu-$os in
+ *-riscix*)
vendor=acorn
;;
- -sunos*)
+ *-sunos*)
vendor=sun
;;
- -cnk*|-aix*)
+ *-cnk* | *-aix*)
vendor=ibm
;;
- -beos*)
+ *-beos*)
vendor=be
;;
- -hpux*)
+ *-hpux*)
vendor=hp
;;
- -mpeix*)
+ *-mpeix*)
vendor=hp
;;
- -hiux*)
+ *-hiux*)
vendor=hitachi
;;
- -unos*)
+ *-unos*)
vendor=crds
;;
- -dgux*)
+ *-dgux*)
vendor=dg
;;
- -luna*)
+ *-luna*)
vendor=omron
;;
- -genix*)
+ *-genix*)
vendor=ns
;;
- -mvs* | -opened*)
+ *-clix*)
+ vendor=intergraph
+ ;;
+ *-mvs* | *-opened*)
+ vendor=ibm
+ ;;
+ *-os400*)
vendor=ibm
;;
- -os400*)
+ s390-* | s390x-*)
vendor=ibm
;;
- -ptx*)
+ *-ptx*)
vendor=sequent
;;
- -tpf*)
+ *-tpf*)
vendor=ibm
;;
- -vxsim* | -vxworks* | -windiss*)
+ *-vxsim* | *-vxworks* | *-windiss*)
vendor=wrs
;;
- -aux*)
+ *-aux*)
vendor=apple
;;
- -hms*)
+ *-hms*)
vendor=hitachi
;;
- -mpw* | -macos*)
+ *-mpw* | *-macos*)
vendor=apple
;;
- -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
vendor=atari
;;
- -vos*)
+ *-vos*)
vendor=stratus
;;
esac
- basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
-echo $basic_machine$os
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
exit
# 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/configure b/configure
index 01c8f56eb..b559cf4d9 100755
--- a/configure
+++ b/configure
@@ -1,11 +1,12 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for sudo 1.9.5p2.
+# Generated by GNU Autoconf 2.71 for sudo 1.9.6.
#
# Report bugs to <https://bugzilla.sudo.ws/>.
#
#
-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
+# Inc.
#
#
# This configure script is free software; the Free Software Foundation
@@ -16,14 +17,16 @@
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -33,46 +36,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -81,13 +84,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -96,8 +92,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -109,30 +109,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# Use a proper internal environment variable to ensure we don't fall
# into an infinite loop, continuously re-executing ourselves.
@@ -154,20 +134,22 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
-as_fn_exit 255
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
+exit 255
fi
# We don't want this to propagate to other subprocesses.
{ _as_can_reexec=; unset _as_can_reexec;}
if test "x$CONFIG_SHELL" = x; then
- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ as_bourne_compatible="as_nop=:
+if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
# is contrary to our usage. Disable this feature.
alias -g '\${1+\"\$@\"}'='\"\$@\"'
setopt NO_GLOB_SUBST
-else
+else \$as_nop
case \`(set -o) 2>/dev/null\` in #(
*posix*) :
set -o posix ;; #(
@@ -187,18 +169,20 @@ as_fn_success || { exitcode=1; echo as_fn_success failed.; }
as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
+if ( set x; as_fn_ret_success y && test x = \"\$1\" )
+then :
-else
+else \$as_nop
exitcode=1; echo positional parameters were not saved.
fi
test x\$exitcode = x0 || exit 1
+blah=\$(echo \$(echo blah))
+test x\"\$blah\" = xblah || exit 1
test -x / || exit 1"
as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1
test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || (
ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
@@ -206,31 +190,40 @@ test \$(( 1 + 1 )) = 2 || exit 1
ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO
PATH=/empty FPATH=/empty; export PATH FPATH
test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\
- || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1"
- if (eval "$as_required") 2>/dev/null; then :
+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1
+test \$(( 1 + 1 )) = 2 || exit 1"
+ if (eval "$as_required") 2>/dev/null
+then :
as_have_required=yes
-else
+else $as_nop
as_have_required=no
fi
- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null
+then :
-else
+else $as_nop
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
as_found=false
for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
as_found=:
case $as_dir in #(
/*)
for as_base in sh bash ksh sh5; do
# Try only shells that exist, to save several forks.
- as_shell=$as_dir/$as_base
+ as_shell=$as_dir$as_base
if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
CONFIG_SHELL=$as_shell as_have_required=yes
- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
+ if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null
+then :
break 2
fi
fi
@@ -238,14 +231,21 @@ fi
esac
as_found=false
done
-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
- CONFIG_SHELL=$SHELL as_have_required=yes
-fi; }
IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
+ as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null
+then :
+ CONFIG_SHELL=$SHELL as_have_required=yes
+fi
+fi
- if test "x$CONFIG_SHELL" != x; then :
+ if test "x$CONFIG_SHELL" != x
+then :
export CONFIG_SHELL
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
@@ -263,18 +263,19 @@ esac
exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
# Admittedly, this is quite paranoid, since all the known shells bail
# out after a failed `exec'.
-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2
exit 255
fi
- if test x$as_have_required = xno; then :
- $as_echo "$0: This script requires a shell more modern than all"
- $as_echo "$0: the shells that I found on your system."
- if test x${ZSH_VERSION+set} = xset ; then
- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
+ if test x$as_have_required = xno
+then :
+ printf "%s\n" "$0: This script requires a shell more modern than all"
+ printf "%s\n" "$0: the shells that I found on your system."
+ if test ${ZSH_VERSION+y} ; then
+ printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should"
+ printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later."
else
- $as_echo "$0: Please tell bug-autoconf@gnu.org and
+ printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and
$0: https://bugzilla.sudo.ws/ about your system, including
$0: any error possibly output before this message. Then
$0: install a modern shell, or manually run the script
@@ -302,6 +303,7 @@ as_fn_unset ()
}
as_unset=as_fn_unset
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -319,6 +321,14 @@ as_fn_exit ()
as_fn_set_status $1
exit $1
} # as_fn_exit
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_mkdir_p
# -------------
@@ -333,7 +343,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -342,7 +352,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -381,12 +391,13 @@ as_fn_executable_p ()
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -398,18 +409,27 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
}
fi # as_fn_arith
+# as_fn_nop
+# ---------
+# Do nothing but, unlike ":", preserve the value of $?.
+as_fn_nop ()
+{
+ return $?
+}
+as_nop=as_fn_nop
# as_fn_error STATUS ERROR [LINENO LOG_FD]
# ----------------------------------------
@@ -421,9 +441,9 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
@@ -450,7 +470,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -494,7 +514,7 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
s/-\n.*//
' >$as_me.lineno &&
chmod +x "$as_me.lineno" ||
- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+ { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
# If we had to re-execute with $CONFIG_SHELL, we're ensured to have
# already done that, so ensure we don't try to do so again and fall
@@ -508,6 +528,10 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
exit
}
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -521,6 +545,13 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -590,8 +621,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='sudo'
PACKAGE_TARNAME='sudo'
-PACKAGE_VERSION='1.9.5p2'
-PACKAGE_STRING='sudo 1.9.5p2'
+PACKAGE_VERSION='1.9.6'
+PACKAGE_STRING='sudo 1.9.6'
PACKAGE_BUGREPORT='https://bugzilla.sudo.ws/'
PACKAGE_URL=''
@@ -599,42 +630,37 @@ ac_unique_file="src/sudo.c"
ac_config_libobj_dir=lib/util
# Factoring default headers for most tests.
ac_includes_default="\
-#include <stdio.h>
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
-# include <sys/stat.h>
+#include <stddef.h>
+#ifdef HAVE_STDIO_H
+# include <stdio.h>
#endif
-#ifdef STDC_HEADERS
+#ifdef HAVE_STDLIB_H
# include <stdlib.h>
-# include <stddef.h>
-#else
-# ifdef HAVE_STDLIB_H
-# include <stdlib.h>
-# endif
#endif
#ifdef HAVE_STRING_H
-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
-# include <memory.h>
-# endif
# include <string.h>
#endif
-#ifdef HAVE_STRINGS_H
-# include <strings.h>
-#endif
#ifdef HAVE_INTTYPES_H
# include <inttypes.h>
#endif
#ifdef HAVE_STDINT_H
# include <stdint.h>
#endif
+#ifdef HAVE_STRINGS_H
+# include <strings.h>
+#endif
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
+#ifdef HAVE_SYS_STAT_H
+# include <sys/stat.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif"
-ac_header_list=
-ac_func_list=
+ac_header_c_list=
+ac_func_c_list=
ac_c_werror_flag=
ac_subst_vars='LTLIBOBJS
KRB5CONFIG
@@ -676,6 +702,8 @@ ac_ct_DUMPBIN
DUMPBIN
LD
FGREP
+EGREP
+GREP
SED
host_os
host_vendor
@@ -687,8 +715,6 @@ build_cpu
build
RANLIB
AR
-EGREP
-GREP
CPP
OBJEXT
EXEEXT
@@ -736,6 +762,8 @@ rundir
logpath
log_dir
iolog_dir
+FUZZ_LD
+FUZZ_ENGINE
PPFILES
LIBLOGSRV
LOGSRVD_CONF
@@ -976,9 +1004,14 @@ enable_warnings
enable_werror
enable_openssl
enable_gcrypt
+enable_ssp
enable_hardening
enable_pie
-enable_asan
+enable_sanitizer
+enable_fuzzer
+enable_fuzzer_engine
+enable_fuzzer_linker
+enable_leaks
enable_poll
enable_admin_flag
enable_nls
@@ -1102,8 +1135,6 @@ do
*) ac_optarg=yes ;;
esac
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
case $ac_dashdash$ac_option in
--)
ac_dashdash=yes ;;
@@ -1144,9 +1175,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1170,9 +1201,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid feature name: $ac_useropt"
+ as_fn_error $? "invalid feature name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"enable_$ac_useropt"
@@ -1383,9 +1414,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1399,9 +1430,9 @@ do
ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
# Reject names that are not valid shell variable names.
expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
- as_fn_error $? "invalid package name: $ac_useropt"
+ as_fn_error $? "invalid package name: \`$ac_useropt'"
ac_useropt_orig=$ac_useropt
- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
+ ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'`
case $ac_user_opts in
*"
"with_$ac_useropt"
@@ -1445,9 +1476,9 @@ Try \`$0 --help' for more information"
*)
# FIXME: should be removed in autoconf 3.0.
- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2
: "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
@@ -1463,7 +1494,7 @@ if test -n "$ac_unrecognized_opts"; then
case $enable_option_checking in
no) ;;
fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
+ *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
esac
fi
@@ -1527,7 +1558,7 @@ $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_myself" : 'X\(//\)[^/]' \| \
X"$as_myself" : 'X\(//\)$' \| \
X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_myself" |
+printf "%s\n" X"$as_myself" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -1584,7 +1615,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 sudo 1.9.5p2 to adapt to many kinds of systems.
+\`configure' configures sudo 1.9.6 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1650,7 +1681,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of sudo 1.9.5p2:";;
+ short | recursive ) echo "Configuration of sudo 1.9.6:";;
esac
cat <<\_ACEOF
@@ -1677,12 +1708,20 @@ Optional Features:
--enable-werror Whether to enable the -Werror compiler option
--enable-openssl Use OpenSSL's TLS and sha2 functions
--enable-gcrypt Use GNU crypt's sha2 functions
+ --disable-ssp Do not compile using the -fstack-protector option.
--disable-hardening Do not use compiler/linker exploit mitigation
options
--enable-pie Build sudo as a position independent executable.
- --enable-asan Build sudo with address sanitizer support.
+ --enable-sanitizer Build sudo with sanitizer support.
+ --enable-fuzzer Build sudo with LLVM libFuzzer support.
+ --enable-fuzzer-engine Link fuzz targets with the specified fuzzer engine
+ instead of the default.
+ --enable-fuzzer-linker Use the specified linker when building fuzz targets
+ instead of the default C compiler.
+ --disable-leaks Prevent some harmless memory leaks.
--disable-poll Use select() instead of poll().
- --enable-admin-flag Whether to create a Ubuntu-style admin flag file
+ --enable-admin-flag[=PATH]
+ Whether to create a Ubuntu-style admin flag file
--disable-nls Disable natural language support using gettext
--disable-rpath Disable passing of -Rpath to the linker
--enable-static-sudoers Build the sudoers policy module as part of the sudo
@@ -1877,9 +1916,9 @@ if test "$ac_init_help" = "recursive"; then
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -1907,7 +1946,8 @@ esac
ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
cd "$ac_dir" || { ac_status=$?; continue; }
- # Check for guested configure.
+ # Check for configure.gnu first; this name is used for a wrapper for
+ # Metaconfig's "Configure" on case-insensitive file systems.
if test -f "$ac_srcdir/configure.gnu"; then
echo &&
$SHELL "$ac_srcdir/configure.gnu" --help=recursive
@@ -1915,7 +1955,7 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
echo &&
$SHELL "$ac_srcdir/configure" --help=recursive
else
- $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2
fi || ac_status=$?
cd "$ac_pwd" || { ac_status=$?; break; }
done
@@ -1924,10 +1964,10 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-sudo configure 1.9.5p2
-generated by GNU Autoconf 2.69
+sudo configure 1.9.6
+generated by GNU Autoconf 2.71
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it.
_ACEOF
@@ -1944,14 +1984,14 @@ fi
ac_fn_c_try_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext
+ rm -f conftest.$ac_objext conftest.beam
if { { ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -1959,14 +1999,15 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
- } && test -s conftest.$ac_objext; then :
+ } && test -s conftest.$ac_objext
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -1976,176 +2017,6 @@ fi
} # ac_fn_c_try_compile
-# ac_fn_c_try_cpp LINENO
-# ----------------------
-# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
-ac_fn_c_try_cpp ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_cpp conftest.$ac_ext"
-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_cpp conftest.$ac_ext") 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; } > conftest.i && {
- test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
- test ! -s conftest.err
- }; then :
- ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=1
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_cpp
-
-# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES
-# -------------------------------------------------------
-# Tests whether HEADER exists, giving a warning if it cannot be compiled using
-# the include files in INCLUDES and setting the cache variable VAR
-# accordingly.
-ac_fn_c_check_header_mongrel ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval \${$3+:} false; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-else
- # Is the header compilable?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5
-$as_echo_n "checking $2 usability... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-$4
-#include <$2>
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_header_compiler=yes
-else
- ac_header_compiler=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5
-$as_echo "$ac_header_compiler" >&6; }
-
-# Is the header present?
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5
-$as_echo_n "checking $2 presence... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <$2>
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- ac_header_preproc=yes
-else
- ac_header_preproc=no
-fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5
-$as_echo "$ac_header_preproc" >&6; }
-
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #((
- yes:no: )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5
-$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
- ;;
- no:yes:* )
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5
-$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5
-$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5
-$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5
-$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5
-$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;}
-( $as_echo "## ---------------------------------------- ##
-## Report this to https://bugzilla.sudo.ws/ ##
-## ---------------------------------------- ##"
- ) | sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- eval "$3=\$ac_header_compiler"
-fi
-eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-fi
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-
-} # ac_fn_c_check_header_mongrel
-
-# ac_fn_c_try_run LINENO
-# ----------------------
-# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes
-# that executables *can* be run.
-ac_fn_c_try_run ()
-{
- as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then :
- ac_retval=0
-else
- $as_echo "$as_me: program exited with status $ac_status" >&5
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_retval=$ac_status
-fi
- rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
- as_fn_set_status $ac_retval
-
-} # ac_fn_c_try_run
-
# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
# -------------------------------------------------------
# Tests whether HEADER exists and can be compiled using the include files in
@@ -2153,26 +2024,28 @@ fi
ac_fn_c_check_header_compile ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
#include <$2>
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
@@ -2183,14 +2056,14 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_try_link ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- rm -f conftest.$ac_objext conftest$ac_exeext
+ rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -2198,17 +2071,18 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
mv -f conftest.er1 conftest.err
fi
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
test -x conftest$ac_exeext
- }; then :
+ }
+then :
ac_retval=0
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_retval=1
@@ -2223,17 +2097,56 @@ fi
} # ac_fn_c_try_link
+# ac_fn_c_try_cpp LINENO
+# ----------------------
+# Try to preprocess conftest.$ac_ext, and return whether this succeeded.
+ac_fn_c_try_cpp ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } > conftest.i && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_cpp
+
# ac_fn_c_check_func LINENO FUNC VAR
# ----------------------------------
# Tests whether FUNC exists, setting the cache variable VAR accordingly
ac_fn_c_check_func ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Define $2 to an innocuous variant, in case <limits.h> declares $2.
@@ -2241,16 +2154,9 @@ else
#define $2 innocuous_$2
/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $2 (); below.
- Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- <limits.h> exists even on freestanding compilers. */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+ which can conflict with char $2 (); below. */
+#include <limits.h>
#undef $2
/* Override any GCC internal prototype to avoid an error.
@@ -2268,24 +2174,25 @@ choke me
#endif
int
-main ()
+main (void)
{
return $2 ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
@@ -2297,17 +2204,18 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_type ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
-$as_echo_n "checking for $2... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
+printf %s "checking for $2... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
eval "$3=no"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof ($2))
return 0;
@@ -2315,12 +2223,13 @@ if (sizeof ($2))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
if (sizeof (($2)))
return 0;
@@ -2328,41 +2237,45 @@ if (sizeof (($2)))
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
eval "$3=yes"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
-# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
-# ---------------------------------------------
+# ac_fn_check_decl LINENO SYMBOL VAR INCLUDES EXTRA-OPTIONS FLAG-VAR
+# ------------------------------------------------------------------
# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
-# accordingly.
-ac_fn_c_check_decl ()
+# accordingly. Pass EXTRA-OPTIONS to the compiler, using FLAG-VAR.
+ac_fn_check_decl ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
as_decl_name=`echo $2|sed 's/ *(.*//'`
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+printf %s "checking whether $as_decl_name is declared... " >&6; }
+if eval test \${$3+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
-$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
-if eval \${$3+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ eval ac_save_FLAGS=\$$6
+ as_fn_append $6 " $5"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
#ifndef $as_decl_name
#ifdef __cplusplus
@@ -2376,19 +2289,22 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$3=yes"
-else
+else $as_nop
eval "$3=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ eval $6=\$ac_save_FLAGS
+
fi
eval ac_res=\$$3
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
-} # ac_fn_c_check_decl
+} # ac_fn_check_decl
# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES
# ----------------------------------------------------
@@ -2397,16 +2313,17 @@ $as_echo "$ac_res" >&6; }
ac_fn_c_check_member ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
-$as_echo_n "checking for $2.$3... " >&6; }
-if eval \${$4+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
+printf %s "checking for $2.$3... " >&6; }
+if eval test \${$4+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (ac_aggr.$3)
@@ -2415,14 +2332,15 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$5
int
-main ()
+main (void)
{
static $2 ac_aggr;
if (sizeof ac_aggr.$3)
@@ -2431,22 +2349,66 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$4=yes"
-else
+else $as_nop
eval "$4=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$4
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
+# ac_fn_c_try_run LINENO
+# ----------------------
+# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that
+# executables *can* be run.
+ac_fn_c_try_run ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+printf "%s\n" "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }
+then :
+ ac_retval=0
+else $as_nop
+ printf "%s\n" "$as_me: program exited with status $ac_status" >&5
+ printf "%s\n" "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=$ac_status
+fi
+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES
# --------------------------------------------
# Tries to find the compile-time value of EXPR in a program that includes
@@ -2461,7 +2423,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= 0)];
test_array [0] = 0;
@@ -2471,14 +2433,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=0 ac_mid=0
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2488,9 +2451,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid; break
-else
+else $as_nop
as_fn_arith $ac_mid + 1 && ac_lo=$as_val
if test $ac_lo -le $ac_mid; then
ac_lo= ac_hi=
@@ -2498,14 +2462,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) < 0)];
test_array [0] = 0;
@@ -2515,14 +2479,15 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=-1 ac_mid=-1
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) >= $ac_mid)];
test_array [0] = 0;
@@ -2532,9 +2497,10 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_lo=$ac_mid; break
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val
if test $ac_mid -le $ac_hi; then
ac_lo= ac_hi=
@@ -2542,14 +2508,14 @@ else
fi
as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
-else
+else $as_nop
ac_lo= ac_hi=
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# Binary search between lo and hi bounds.
while test "x$ac_lo" != "x$ac_hi"; do
as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val
@@ -2557,7 +2523,7 @@ while test "x$ac_lo" != "x$ac_hi"; do
/* end confdefs.h. */
$4
int
-main ()
+main (void)
{
static int test_array [1 - 2 * !(($2) <= $ac_mid)];
test_array [0] = 0;
@@ -2567,12 +2533,13 @@ return test_array [0];
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_hi=$ac_mid
-else
+else $as_nop
as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
done
case $ac_lo in #((
?*) eval "$3=\$ac_lo"; ac_retval=0 ;;
@@ -2582,12 +2549,12 @@ esac
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$4
-static long int longval () { return $2; }
-static unsigned long int ulongval () { return $2; }
+static long int longval (void) { return $2; }
+static unsigned long int ulongval (void) { return $2; }
#include <stdio.h>
#include <stdlib.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.val", "w");
@@ -2615,9 +2582,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
echo >>conftest.val; read $3 <conftest.val; ac_retval=0
-else
+else $as_nop
ac_retval=1
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -2629,14 +2597,34 @@ rm -f conftest.val
as_fn_set_status $ac_retval
} # ac_fn_c_compute_int
+ac_configure_args_raw=
+for ac_arg
+do
+ case $ac_arg in
+ *\'*)
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ as_fn_append ac_configure_args_raw " '$ac_arg'"
+done
+
+case $ac_configure_args_raw in
+ *$as_nl*)
+ ac_safe_unquote= ;;
+ *)
+ ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab.
+ ac_unsafe_a="$ac_unsafe_z#~"
+ ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g"
+ ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;;
+esac
+
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by sudo $as_me 1.9.5p2, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+It was created by sudo $as_me 1.9.6, which was
+generated by GNU Autoconf 2.71. Invocation command line was
- $ $0 $@
+ $ $0$ac_configure_args_raw
_ACEOF
exec 5>>config.log
@@ -2669,8 +2657,12 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- $as_echo "PATH: $as_dir"
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ printf "%s\n" "PATH: $as_dir"
done
IFS=$as_save_IFS
@@ -2705,7 +2697,7 @@ do
| -silent | --silent | --silen | --sile | --sil)
continue ;;
*\'*)
- ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
case $ac_pass in
1) as_fn_append ac_configure_args0 " '$ac_arg'" ;;
@@ -2740,11 +2732,13 @@ done
# WARNING: Use '\'' to represent an apostrophe within the trap.
# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
trap 'exit_status=$?
+ # Sanitize IFS.
+ IFS=" "" $as_nl"
# Save into config.log some information that might help in debugging.
{
echo
- $as_echo "## ---------------- ##
+ printf "%s\n" "## ---------------- ##
## Cache variables. ##
## ---------------- ##"
echo
@@ -2755,8 +2749,8 @@ trap 'exit_status=$?
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -2780,7 +2774,7 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
)
echo
- $as_echo "## ----------------- ##
+ printf "%s\n" "## ----------------- ##
## Output variables. ##
## ----------------- ##"
echo
@@ -2788,14 +2782,14 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
if test -n "$ac_subst_files"; then
- $as_echo "## ------------------- ##
+ printf "%s\n" "## ------------------- ##
## File substitutions. ##
## ------------------- ##"
echo
@@ -2803,15 +2797,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
do
eval ac_val=\$$ac_var
case $ac_val in
- *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
esac
- $as_echo "$ac_var='\''$ac_val'\''"
+ printf "%s\n" "$ac_var='\''$ac_val'\''"
done | sort
echo
fi
if test -s confdefs.h; then
- $as_echo "## ----------- ##
+ printf "%s\n" "## ----------- ##
## confdefs.h. ##
## ----------- ##"
echo
@@ -2819,8 +2813,8 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
echo
fi
test "$ac_signal" != 0 &&
- $as_echo "$as_me: caught signal $ac_signal"
- $as_echo "$as_me: exit $exit_status"
+ printf "%s\n" "$as_me: caught signal $ac_signal"
+ printf "%s\n" "$as_me: exit $exit_status"
} >&5
rm -f core *.core core.conftest.* &&
rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
@@ -2834,63 +2828,48 @@ ac_signal=0
# confdefs.h avoids OS command line length limits that DEFS can exceed.
rm -f -r conftest* confdefs.h
-$as_echo "/* confdefs.h */" > confdefs.h
+printf "%s\n" "/* confdefs.h */" > confdefs.h
# Predefined preprocessor variables.
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_NAME "$PACKAGE_NAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
-_ACEOF
+printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_VERSION "$PACKAGE_VERSION"
-_ACEOF
+printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_STRING "$PACKAGE_STRING"
-_ACEOF
+printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
-_ACEOF
+printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define PACKAGE_URL "$PACKAGE_URL"
-_ACEOF
+printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h
# Let the site file select an alternate cache file if it wants to.
# Prefer an explicitly selected file to automatically selected ones.
-ac_site_file1=NONE
-ac_site_file2=NONE
if test -n "$CONFIG_SITE"; then
- # We do not want a PATH search for config.site.
- case $CONFIG_SITE in #((
- -*) ac_site_file1=./$CONFIG_SITE;;
- */*) ac_site_file1=$CONFIG_SITE;;
- *) ac_site_file1=./$CONFIG_SITE;;
- esac
+ ac_site_files="$CONFIG_SITE"
elif test "x$prefix" != xNONE; then
- ac_site_file1=$prefix/share/config.site
- ac_site_file2=$prefix/etc/config.site
+ ac_site_files="$prefix/share/config.site $prefix/etc/config.site"
else
- ac_site_file1=$ac_default_prefix/share/config.site
- ac_site_file2=$ac_default_prefix/etc/config.site
+ ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
fi
-for ac_site_file in "$ac_site_file1" "$ac_site_file2"
+
+for ac_site_file in $ac_site_files
do
- test "x$ac_site_file" = xNONE && continue
- if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
-$as_echo "$as_me: loading site script $ac_site_file" >&6;}
+ case $ac_site_file in #(
+ */*) :
+ ;; #(
+ *) :
+ ac_site_file=./$ac_site_file ;;
+esac
+ if test -f "$ac_site_file" && test -r "$ac_site_file"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5
+printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;}
sed 's/^/| /' "$ac_site_file" >&5
. "$ac_site_file" \
- || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -2900,39 +2879,456 @@ if test -r "$cache_file"; then
# Some versions of bash will fail to source /dev/null (special files
# actually), so we avoid doing that. DJGPP emulates it as a regular file.
if test /dev/null != "$cache_file" && test -f "$cache_file"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
-$as_echo "$as_me: loading cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5
+printf "%s\n" "$as_me: loading cache $cache_file" >&6;}
case $cache_file in
[\\/]* | ?:[\\/]* ) . "$cache_file";;
*) . "./$cache_file";;
esac
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
-$as_echo "$as_me: creating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5
+printf "%s\n" "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
-as_fn_append ac_header_list " sys/types.h"
-as_fn_append ac_header_list " netgroup.h"
-as_fn_append ac_header_list " paths.h"
-as_fn_append ac_header_list " spawn.h"
-as_fn_append ac_header_list " wordexp.h"
-as_fn_append ac_header_list " sys/sockio.h"
-as_fn_append ac_header_list " sys/bsdtypes.h"
-as_fn_append ac_header_list " sys/select.h"
-as_fn_append ac_header_list " sys/stropts.h"
-as_fn_append ac_header_list " sys/sysmacros.h"
-as_fn_append ac_header_list " sys/syscall.h"
-as_fn_append ac_header_list " sys/statvfs.h"
-as_fn_append ac_func_list " fexecve"
-as_fn_append ac_func_list " killpg"
-as_fn_append ac_func_list " nl_langinfo"
-as_fn_append ac_func_list " faccessat"
-as_fn_append ac_func_list " wordexp"
-as_fn_append ac_func_list " getauxval"
-as_fn_append ac_func_list " fseeko"
-as_fn_append ac_func_list " seteuid"
+as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H"
+# Test code for whether the C compiler supports C89 (global declarations)
+ac_c_conftest_c89_globals='
+/* Does the compiler advertise C89 conformance?
+ Do not test the value of __STDC__, because some compilers set it to 0
+ while being otherwise adequately conformant. */
+#if !defined __STDC__
+# error "Compiler does not advertise C89 conformance"
+#endif
+
+#include <stddef.h>
+#include <stdarg.h>
+struct stat;
+/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */
+struct buf { int x; };
+struct buf * (*rcsopen) (struct buf *, struct stat *, int);
+static char *e (p, i)
+ char **p;
+ int i;
+{
+ return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+ char *s;
+ va_list v;
+ va_start (v,p);
+ s = g (p, va_arg (v,int));
+ va_end (v);
+ return s;
+}
+
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
+ function prototypes and stuff, but not \xHH hex character constants.
+ These do not provoke an error unfortunately, instead are silently treated
+ as an "x". The following induces an error, until -std is added to get
+ proper ANSI mode. Curiously \x00 != x always comes out true, for an
+ array size at least. It is necessary to write \x00 == 0 to get something
+ that is true only with -std. */
+int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1];
+
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+ inside strings and character constants. */
+#define FOO(x) '\''x'\''
+int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1];
+
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int),
+ int, int);'
+
+# Test code for whether the C compiler supports C89 (body of main).
+ac_c_conftest_c89_main='
+ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]);
+'
+
+# Test code for whether the C compiler supports C99 (global declarations)
+ac_c_conftest_c99_globals='
+// Does the compiler advertise C99 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L
+# error "Compiler does not advertise C99 conformance"
+#endif
+
+#include <stdbool.h>
+extern int puts (const char *);
+extern int printf (const char *, ...);
+extern int dprintf (int, const char *, ...);
+extern void *malloc (size_t);
+
+// Check varargs macros. These examples are taken from C99 6.10.3.5.
+// dprintf is used instead of fprintf to avoid needing to declare
+// FILE and stderr.
+#define debug(...) dprintf (2, __VA_ARGS__)
+#define showlist(...) puts (#__VA_ARGS__)
+#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
+static void
+test_varargs_macros (void)
+{
+ int x = 1234;
+ int y = 5678;
+ debug ("Flag");
+ debug ("X = %d\n", x);
+ showlist (The first, second, and third items.);
+ report (x>y, "x is %d but y is %d", x, y);
+}
+
+// Check long long types.
+#define BIG64 18446744073709551615ull
+#define BIG32 4294967295ul
+#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
+#if !BIG_OK
+ #error "your preprocessor is broken"
+#endif
+#if BIG_OK
+#else
+ #error "your preprocessor is broken"
+#endif
+static long long int bignum = -9223372036854775807LL;
+static unsigned long long int ubignum = BIG64;
+
+struct incomplete_array
+{
+ int datasize;
+ double data[];
+};
+
+struct named_init {
+ int number;
+ const wchar_t *name;
+ double average;
+};
+
+typedef const char *ccp;
+
+static inline int
+test_restrict (ccp restrict text)
+{
+ // See if C++-style comments work.
+ // Iterate through items via the restricted pointer.
+ // Also check for declarations in for loops.
+ for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i)
+ continue;
+ return 0;
+}
+
+// Check varargs and va_copy.
+static bool
+test_varargs (const char *format, ...)
+{
+ va_list args;
+ va_start (args, format);
+ va_list args_copy;
+ va_copy (args_copy, args);
+
+ const char *str = "";
+ int number = 0;
+ float fnumber = 0;
+
+ while (*format)
+ {
+ switch (*format++)
+ {
+ case '\''s'\'': // string
+ str = va_arg (args_copy, const char *);
+ break;
+ case '\''d'\'': // int
+ number = va_arg (args_copy, int);
+ break;
+ case '\''f'\'': // float
+ fnumber = va_arg (args_copy, double);
+ break;
+ default:
+ break;
+ }
+ }
+ va_end (args_copy);
+ va_end (args);
+
+ return *str && number && fnumber;
+}
+'
+
+# Test code for whether the C compiler supports C99 (body of main).
+ac_c_conftest_c99_main='
+ // Check bool.
+ _Bool success = false;
+ success |= (argc != 0);
+
+ // Check restrict.
+ if (test_restrict ("String literal") == 0)
+ success = true;
+ char *restrict newvar = "Another string";
+
+ // Check varargs.
+ success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234);
+ test_varargs_macros ();
+
+ // Check flexible array members.
+ struct incomplete_array *ia =
+ malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
+ ia->datasize = 10;
+ for (int i = 0; i < ia->datasize; ++i)
+ ia->data[i] = i * 1.234;
+
+ // Check named initializers.
+ struct named_init ni = {
+ .number = 34,
+ .name = L"Test wide string",
+ .average = 543.34343,
+ };
+
+ ni.number = 58;
+
+ int dynamic_array[ni.number];
+ dynamic_array[0] = argv[0][0];
+ dynamic_array[ni.number - 1] = 543;
+
+ // work around unused variable warnings
+ ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\''
+ || dynamic_array[ni.number - 1] != 543);
+'
+
+# Test code for whether the C compiler supports C11 (global declarations)
+ac_c_conftest_c11_globals='
+// Does the compiler advertise C11 conformance?
+#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L
+# error "Compiler does not advertise C11 conformance"
+#endif
+
+// Check _Alignas.
+char _Alignas (double) aligned_as_double;
+char _Alignas (0) no_special_alignment;
+extern char aligned_as_int;
+char _Alignas (0) _Alignas (int) aligned_as_int;
+
+// Check _Alignof.
+enum
+{
+ int_alignment = _Alignof (int),
+ int_array_alignment = _Alignof (int[100]),
+ char_alignment = _Alignof (char)
+};
+_Static_assert (0 < -_Alignof (int), "_Alignof is signed");
+
+// Check _Noreturn.
+int _Noreturn does_not_return (void) { for (;;) continue; }
+
+// Check _Static_assert.
+struct test_static_assert
+{
+ int x;
+ _Static_assert (sizeof (int) <= sizeof (long int),
+ "_Static_assert does not work in struct");
+ long int y;
+};
+
+// Check UTF-8 literals.
+#define u8 syntax error!
+char const utf8_literal[] = u8"happens to be ASCII" "another string";
+
+// Check duplicate typedefs.
+typedef long *long_ptr;
+typedef long int *long_ptr;
+typedef long_ptr long_ptr;
+
+// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1.
+struct anonymous
+{
+ union {
+ struct { int i; int j; };
+ struct { int k; long int l; } w;
+ };
+ int m;
+} v1;
+'
+
+# Test code for whether the C compiler supports C11 (body of main).
+ac_c_conftest_c11_main='
+ _Static_assert ((offsetof (struct anonymous, i)
+ == offsetof (struct anonymous, w.k)),
+ "Anonymous union alignment botch");
+ v1.i = 2;
+ v1.w.k = 5;
+ ok |= v1.i != 5;
+'
+
+# Test code for whether the C compiler supports C11 (complete).
+ac_c_conftest_c11_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+${ac_c_conftest_c11_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ ${ac_c_conftest_c11_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C99 (complete).
+ac_c_conftest_c99_program="${ac_c_conftest_c89_globals}
+${ac_c_conftest_c99_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ ${ac_c_conftest_c99_main}
+ return ok;
+}
+"
+
+# Test code for whether the C compiler supports C89 (complete).
+ac_c_conftest_c89_program="${ac_c_conftest_c89_globals}
+
+int
+main (int argc, char **argv)
+{
+ int ok = 0;
+ ${ac_c_conftest_c89_main}
+ return ok;
+}
+"
+
+as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H"
+as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H"
+as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H"
+as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H"
+as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H"
+as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H"
+as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H"
+as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H"
+as_fn_append ac_header_c_list " wchar.h wchar_h HAVE_WCHAR_H"
+as_fn_append ac_header_c_list " minix/config.h minix_config_h HAVE_MINIX_CONFIG_H"
+as_fn_append ac_header_c_list " netgroup.h netgroup_h HAVE_NETGROUP_H"
+as_fn_append ac_header_c_list " paths.h paths_h HAVE_PATHS_H"
+as_fn_append ac_header_c_list " spawn.h spawn_h HAVE_SPAWN_H"
+as_fn_append ac_header_c_list " wordexp.h wordexp_h HAVE_WORDEXP_H"
+as_fn_append ac_header_c_list " sys/sockio.h sys_sockio_h HAVE_SYS_SOCKIO_H"
+as_fn_append ac_header_c_list " sys/bsdtypes.h sys_bsdtypes_h HAVE_SYS_BSDTYPES_H"
+as_fn_append ac_header_c_list " sys/select.h sys_select_h HAVE_SYS_SELECT_H"
+as_fn_append ac_header_c_list " sys/stropts.h sys_stropts_h HAVE_SYS_STROPTS_H"
+as_fn_append ac_header_c_list " sys/sysmacros.h sys_sysmacros_h HAVE_SYS_SYSMACROS_H"
+as_fn_append ac_header_c_list " sys/syscall.h sys_syscall_h HAVE_SYS_SYSCALL_H"
+as_fn_append ac_header_c_list " sys/statvfs.h sys_statvfs_h HAVE_SYS_STATVFS_H"
+as_fn_append ac_func_c_list " fexecve HAVE_FEXECVE"
+as_fn_append ac_func_c_list " fmemopen HAVE_FMEMOPEN"
+as_fn_append ac_func_c_list " killpg HAVE_KILLPG"
+as_fn_append ac_func_c_list " nl_langinfo HAVE_NL_LANGINFO"
+as_fn_append ac_func_c_list " faccessat HAVE_FACCESSAT"
+as_fn_append ac_func_c_list " wordexp HAVE_WORDEXP"
+as_fn_append ac_func_c_list " getauxval HAVE_GETAUXVAL"
+as_fn_append ac_func_c_list " fseeko HAVE_FSEEKO"
+as_fn_append ac_func_c_list " seteuid HAVE_SETEUID"
+
+# Auxiliary files required by this configure script.
+ac_aux_files="ltmain.sh config.guess config.sub"
+
+# Locations in which to look for auxiliary files.
+ac_aux_dir_candidates="${srcdir}${PATH_SEPARATOR}${srcdir}/..${PATH_SEPARATOR}${srcdir}/../.."
+
+# Search for a directory containing all of the required auxiliary files,
+# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates.
+# If we don't find one directory that contains all the files we need,
+# we report the set of missing files from the *first* directory in
+# $ac_aux_dir_candidates and give up.
+ac_missing_aux_files=""
+ac_first_candidate=:
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+as_found=false
+for as_dir in $ac_aux_dir_candidates
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ as_found=:
+
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5
+ ac_aux_dir_found=yes
+ ac_install_sh=
+ for ac_aux in $ac_aux_files
+ do
+ # As a special case, if "install-sh" is required, that requirement
+ # can be satisfied by any of "install-sh", "install.sh", or "shtool",
+ # and $ac_install_sh is set appropriately for whichever one is found.
+ if test x"$ac_aux" = x"install-sh"
+ then
+ if test -f "${as_dir}install-sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5
+ ac_install_sh="${as_dir}install-sh -c"
+ elif test -f "${as_dir}install.sh"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5
+ ac_install_sh="${as_dir}install.sh -c"
+ elif test -f "${as_dir}shtool"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5
+ ac_install_sh="${as_dir}shtool install -c"
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} install-sh"
+ else
+ break
+ fi
+ fi
+ else
+ if test -f "${as_dir}${ac_aux}"; then
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5
+ else
+ ac_aux_dir_found=no
+ if $ac_first_candidate; then
+ ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}"
+ else
+ break
+ fi
+ fi
+ fi
+ done
+ if test "$ac_aux_dir_found" = yes; then
+ ac_aux_dir="$as_dir"
+ break
+ fi
+ ac_first_candidate=false
+
+ as_found=false
+done
+IFS=$as_save_IFS
+if $as_found
+then :
+
+else $as_nop
+ as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5
+fi
+
+
+# These three variables are undocumented and unsupported,
+# and are intended to be withdrawn in a future Autoconf release.
+# They can cause serious problems if a builder's source tree is in a directory
+# whose full name contains unusual characters.
+if test -f "${ac_aux_dir}config.guess"; then
+ ac_config_guess="$SHELL ${ac_aux_dir}config.guess"
+fi
+if test -f "${ac_aux_dir}config.sub"; then
+ ac_config_sub="$SHELL ${ac_aux_dir}config.sub"
+fi
+if test -f "$ac_aux_dir/configure"; then
+ ac_configure="$SHELL ${ac_aux_dir}configure"
+fi
+
# Check that the precious variables saved in the cache have kept the same
# value.
ac_cache_corrupted=false
@@ -2943,12 +3339,12 @@ for ac_var in $ac_precious_vars; do
eval ac_new_val=\$ac_env_${ac_var}_value
case $ac_old_set,$ac_new_set in
set,)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
ac_cache_corrupted=: ;;
,set)
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
-$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_cache_corrupted=: ;;
,);;
*)
@@ -2957,24 +3353,24 @@ $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
ac_old_val_w=`echo x $ac_old_val`
ac_new_val_w=`echo x $ac_new_val`
if test "$ac_old_val_w" != "$ac_new_val_w"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
-$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5
+printf "%s\n" "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
ac_cache_corrupted=:
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
-$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5
+printf "%s\n" "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;}
eval $ac_var=\$ac_old_val
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
-$as_echo "$as_me: former value: \`$ac_old_val'" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
-$as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5
+printf "%s\n" "$as_me: former value: \`$ac_old_val'" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5
+printf "%s\n" "$as_me: current value: \`$ac_new_val'" >&2;}
fi;;
esac
# Pass precious variables to config.status.
if test "$ac_new_set" = set; then
case $ac_new_val in
- *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
*) ac_arg=$ac_var=$ac_new_val ;;
esac
case " $ac_configure_args " in
@@ -2984,11 +3380,12 @@ $as_echo "$as_me: current value: \`$ac_new_val'" >&2;}
fi
done
if $ac_cache_corrupted; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
-$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;}
- as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5
+printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;}
+ as_fn_error $? "run \`${MAKE-make} distclean' and/or \`rm $cache_file'
+ and start over" "$LINENO" 5
fi
## -------------------- ##
## Main body of script. ##
@@ -3004,8 +3401,10 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
ac_config_headers="$ac_config_headers config.h pathnames.h"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: Configuring Sudo version $PACKAGE_VERSION" >&5
-$as_echo "$as_me: Configuring Sudo version $PACKAGE_VERSION" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: Configuring Sudo version $PACKAGE_VERSION" >&5
+printf "%s\n" "$as_me: Configuring Sudo version $PACKAGE_VERSION" >&6;}
+
+
@@ -3227,6 +3626,8 @@ INIT_DIR=
RC_LINK=
COMPAT_EXP=
SIGNAME=
+FUZZ_ENGINE=
+FUZZ_LD='$(CC)'
WEAK_ALIAS=no
CHECKSHADOW=true
shadow_funcs=
@@ -3248,6 +3649,15 @@ RTLD_PRELOAD_DEFAULT=
+
+
+
+
+
+
+
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -3256,11 +3666,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
set dummy ${ac_tool_prefix}gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3268,11 +3679,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3283,11 +3698,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3296,11 +3711,12 @@ if test -z "$ac_cv_prog_CC"; then
ac_ct_CC=$CC
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -3308,11 +3724,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="gcc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3323,11 +3743,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_CC" = x; then
@@ -3335,8 +3755,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
@@ -3349,11 +3769,12 @@ if test -z "$CC"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3361,11 +3782,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3376,11 +3801,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3389,11 +3814,12 @@ fi
if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3402,15 +3828,19 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
ac_prog_rejected=yes
continue
fi
ac_cv_prog_CC="cc"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3426,18 +3856,18 @@ if test $ac_prog_rejected = yes; then
# However, it has the same basename, so the bogon will be chosen
# first if we set CC to just the basename; use the full file name.
shift
- ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+ ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@"
fi
fi
fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3448,11 +3878,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$CC"; then
ac_cv_prog_CC="$CC" # Let the user override the test.
else
@@ -3460,11 +3891,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3475,11 +3910,11 @@ fi
fi
CC=$ac_cv_prog_CC
if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3492,11 +3927,12 @@ if test -z "$CC"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_CC"; then
ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
else
@@ -3504,11 +3940,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_CC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -3519,11 +3959,11 @@ fi
fi
ac_ct_CC=$ac_cv_prog_ac_ct_CC
if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -3535,34 +3975,138 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args.
+set dummy ${ac_tool_prefix}clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+printf "%s\n" "$CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "clang", so it can be a program name with args.
+set dummy clang; ac_word=$2
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="clang"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+printf "%s\n" "$ac_ct_CC" >&6; }
+else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
CC=$ac_ct_CC
fi
+else
+ CC="$ac_cv_prog_CC"
fi
fi
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
set X $ac_compile
ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
+for ac_option in --version -v -V -qversion -version; do
{ { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
if test -s conftest.err; then
@@ -3572,7 +4116,7 @@ $as_echo "$ac_try_echo"; } >&5
cat conftest.er1 >&5
fi
rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
done
@@ -3580,7 +4124,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -3592,9 +4136,9 @@ ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
# Try to create an executable without -o first, disregard a.out.
# It will help us diagnose broken compilers, and finding out an intuition
# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+printf %s "checking whether the C compiler works... " >&6; }
+ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
# The possible output files:
ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
@@ -3615,11 +4159,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link_default") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
# in a Makefile. We should not override ac_cv_exeext if it was cached,
@@ -3636,7 +4181,7 @@ do
# certainly right.
break;;
*.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no;
then :; else
ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
fi
@@ -3652,44 +4197,46 @@ do
done
test "$ac_cv_exeext" = no && ac_cv_exeext=
-else
+else $as_nop
ac_file=''
fi
-if test -z "$ac_file"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
+if test -z "$ac_file"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+printf %s "checking for C compiler default output file name... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+printf "%s\n" "$ac_file" >&6; }
ac_exeext=$ac_cv_exeext
rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+printf %s "checking for suffix of executables... " >&6; }
if { { ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
# If both `conftest.exe' and `conftest' are `present' (well, observable)
# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
# work properly (i.e., refer to `conftest.exe'), while it won't with
@@ -3703,15 +4250,15 @@ for ac_file in conftest.exe conftest conftest.*; do
* ) break;;
esac
done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+printf "%s\n" "$ac_cv_exeext" >&6; }
rm -f conftest.$ac_ext
EXEEXT=$ac_cv_exeext
@@ -3720,7 +4267,7 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
int
-main ()
+main (void)
{
FILE *f = fopen ("conftest.out", "w");
return ferror (f) || fclose (f) != 0;
@@ -3732,8 +4279,8 @@ _ACEOF
ac_clean_files="$ac_clean_files conftest.out"
# Check that the compiler produces executables we can run. If not, either
# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+printf %s "checking whether we are cross compiling... " >&6; }
if test "$cross_compiling" != yes; then
{ { ac_try="$ac_link"
case "(($ac_try" in
@@ -3741,10 +4288,10 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_link") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if { ac_try='./conftest$ac_cv_exeext'
{ { case "(($ac_try" in
@@ -3752,39 +4299,40 @@ $as_echo "$ac_try_echo"; } >&5
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_try") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
cross_compiling=no
else
if test "$cross_compiling" = maybe; then
cross_compiling=yes
else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+printf "%s\n" "$cross_compiling" >&6; }
rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+printf %s "checking for suffix of object files... " >&6; }
+if test ${ac_cv_objext+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
@@ -3798,11 +4346,12 @@ case "(($ac_try" in
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
+printf "%s\n" "$ac_try_echo"; } >&5
(eval "$ac_compile") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+then :
for ac_file in conftest.o conftest.obj conftest.*; do
test -f "$ac_file" || continue;
case $ac_file in
@@ -3811,31 +4360,32 @@ $as_echo "$ac_try_echo"; } >&5
break;;
esac
done
-else
- $as_echo "$as_me: failed program was:" >&5
+else $as_nop
+ printf "%s\n" "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+printf "%s\n" "$ac_cv_objext" >&6; }
OBJEXT=$ac_cv_objext
ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5
+printf %s "checking whether the compiler supports GNU C... " >&6; }
+if test ${ac_cv_c_compiler_gnu+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __GNUC__
choke me
@@ -3845,29 +4395,33 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_compiler_gnu=yes
-else
+else $as_nop
ac_compiler_gnu=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_c_compiler_gnu=$ac_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; }
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
if test $ac_compiler_gnu = yes; then
GCC=yes
else
GCC=
fi
-ac_test_CFLAGS=${CFLAGS+set}
+ac_test_CFLAGS=${CFLAGS+y}
ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+printf %s "checking whether $CC accepts -g... " >&6; }
+if test ${ac_cv_prog_cc_g+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_save_c_werror_flag=$ac_c_werror_flag
ac_c_werror_flag=yes
ac_cv_prog_cc_g=no
@@ -3876,57 +4430,60 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
-else
+else $as_nop
CFLAGS=""
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
-else
+else $as_nop
ac_c_werror_flag=$ac_save_c_werror_flag
CFLAGS="-g"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_prog_cc_g=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_c_werror_flag=$ac_save_c_werror_flag
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+printf "%s\n" "$ac_cv_prog_cc_g" >&6; }
+if test $ac_test_CFLAGS; then
CFLAGS=$ac_save_CFLAGS
elif test $ac_cv_prog_cc_g = yes; then
if test "$GCC" = yes; then
@@ -3941,232 +4498,144 @@ else
CFLAGS=
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
+ac_prog_cc_stdc=no
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5
+printf %s "checking for $CC option to enable C11 features... " >&6; }
+if test ${ac_cv_prog_cc_c11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c11=no
ac_save_CC=$CC
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
+$ac_c_conftest_c11_program
_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+for ac_arg in '' -std=gnu11
do
CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c11=$ac_arg
fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c11" != "xno" && break
done
rm -f conftest.$ac_ext
CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
-
-fi
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
- do
- ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if test "x$ac_cv_prog_cc_c11" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c11" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5
+printf "%s\n" "$ac_cv_prog_cc_c11" >&6; }
+ CC="$CC $ac_cv_prog_cc_c11"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11
+ ac_prog_cc_stdc=c11
+fi
+fi
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5
+printf %s "checking for $CC option to enable C99 features... " >&6; }
+if test ${ac_cv_prog_cc_c99+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+$ac_c_conftest_c99_program
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
+for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99=
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c99=$ac_arg
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c99" != "xno" && break
done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
- break
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
fi
- done
- ac_cv_prog_CPP=$CPP
-
+if test "x$ac_cv_prog_cc_c99" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c99" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
+printf "%s\n" "$ac_cv_prog_cc_c99" >&6; }
+ CC="$CC $ac_cv_prog_cc_c99"
fi
- CPP=$ac_cv_prog_CPP
-else
- ac_cv_prog_CPP=$CPP
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
+ ac_prog_cc_stdc=c99
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
-ac_preproc_ok=false
-for ac_c_preproc_warn_flag in '' yes
-do
- # Use a header file that comes with gcc, so configuring glibc
- # with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp. "Syntax error" is here to catch this case.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
- Syntax error
-_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
-
-else
- # Broken: fails on valid input.
-continue
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
- # OK, works on sane cases. Now check whether nonexistent headers
- # can be detected and how.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if test x$ac_prog_cc_stdc = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5
+printf %s "checking for $CC option to enable C89 features... " >&6; }
+if test ${ac_cv_prog_cc_c89+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ac_nonexistent.h>
+$ac_c_conftest_c89_program
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
- # Broken: success on invalid input.
-continue
-else
- # Passes both tests.
-ac_preproc_ok=:
-break
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+ CC="$ac_save_CC $ac_arg"
+ if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_prog_cc_c89=$ac_arg
fi
-rm -f conftest.err conftest.i conftest.$ac_ext
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam
+ test "x$ac_cv_prog_cc_c89" != "xno" && break
done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
+fi
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5; }
+if test "x$ac_cv_prog_cc_c89" = xno
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+printf "%s\n" "unsupported" >&6; }
+else $as_nop
+ if test "x$ac_cv_prog_cc_c89" = x
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+printf "%s\n" "none needed" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+printf "%s\n" "$ac_cv_prog_cc_c89" >&6; }
+ CC="$CC $ac_cv_prog_cc_c89"
+fi
+ ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
+ ac_prog_cc_stdc=c89
+fi
fi
ac_ext=c
@@ -4176,325 +4645,175 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -z "$GREP"; then
- ac_path_GREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+ac_header= ac_cache=
+for ac_item in $ac_header_c_list
do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in grep ggrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
- # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'GREP' >> "conftest.nl"
- "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_GREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_GREP="$ac_path_GREP"
- ac_path_GREP_max=$ac_count
+ if test $ac_cache; then
+ ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default"
+ if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then
+ printf "%s\n" "#define $ac_item 1" >> confdefs.h
fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
- $ac_path_GREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_GREP"; then
- as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ ac_header= ac_cache=
+ elif test $ac_header; then
+ ac_cache=$ac_item
+ else
+ ac_header=$ac_item
fi
-else
- ac_cv_path_GREP=$GREP
-fi
+done
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
- then ac_cv_path_EGREP="$GREP -E"
- else
- if test -z "$EGREP"; then
- ac_path_EGREP_found=false
- # Loop through the user's path and test for each of PROGNAME-LIST
- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in egrep; do
- for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
- as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
- # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
- ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
- ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
- while :
- do
- cat "conftest.in" "conftest.in" >"conftest.tmp"
- mv "conftest.tmp" "conftest.in"
- cp "conftest.in" "conftest.nl"
- $as_echo 'EGREP' >> "conftest.nl"
- "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
- diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
- as_fn_arith $ac_count + 1 && ac_count=$as_val
- if test $ac_count -gt ${ac_path_EGREP_max-0}; then
- # Best one so far, save it but keep looking for a better one
- ac_cv_path_EGREP="$ac_path_EGREP"
- ac_path_EGREP_max=$ac_count
- fi
- # 10*(2^10) chars as input seems more than enough
- test $ac_count -gt 10 && break
- done
- rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
- $ac_path_EGREP_found && break 3
- done
- done
- done
-IFS=$as_save_IFS
- if test -z "$ac_cv_path_EGREP"; then
- as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
- fi
-else
- ac_cv_path_EGREP=$EGREP
-fi
- fi
+
+
+
+if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes
+then :
+
+printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+
+
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+printf %s "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if test ${ac_cv_safe_to_define___extensions__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
+# define __EXTENSIONS__ 1
+ $ac_includes_default
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_header_stdc=yes
-else
- ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_safe_to_define___extensions__=yes
+else $as_nop
+ ac_cv_safe_to_define___extensions__=no
fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+printf "%s\n" "$ac_cv_safe_to_define___extensions__" >&6; }
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+printf %s "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if test ${ac_cv_should_define__xopen_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_cv_should_define__xopen_source=no
+ if test $ac_cv_header_wchar_h = yes
+then :
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "free" >/dev/null 2>&1; then :
-else
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
+ #include <wchar.h>
+ mbstate_t x;
+int
+main (void)
+{
-fi
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
- if test "$cross_compiling" = yes; then :
- :
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
- (('a' <= (c) && (c) <= 'i') \
- || ('j' <= (c) && (c) <= 'r') \
- || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+ #define _XOPEN_SOURCE 500
+ #include <wchar.h>
+ mbstate_t x;
int
-main ()
+main (void)
{
- int i;
- for (i = 0; i < 256; i++)
- if (XOR (islower (i), ISLOWER (i))
- || toupper (i) != TOUPPER (i))
- return 2;
+
+ ;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
- ac_cv_header_stdc=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ac_cv_should_define__xopen_source=yes
fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
- conftest.$ac_objext conftest.beam conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+printf "%s\n" "$ac_cv_should_define__xopen_source" >&6; }
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+ printf "%s\n" "#define _ALL_SOURCE 1" >>confdefs.h
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
- inttypes.h stdint.h unistd.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
+ printf "%s\n" "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-fi
+ printf "%s\n" "#define _GNU_SOURCE 1" >>confdefs.h
-done
+ printf "%s\n" "#define _HPUX_ALT_XOPEN_SOCKET_API 1" >>confdefs.h
+ printf "%s\n" "#define _NETBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
- ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
- MINIX=yes
-else
- MINIX=
-fi
+ printf "%s\n" "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1" >>confdefs.h
- if test "$MINIX" = yes; then
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_BFP_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_DFP_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1" >>confdefs.h
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_LIB_EXT2__ 1" >>confdefs.h
-$as_echo "#define _MINIX 1" >>confdefs.h
+ printf "%s\n" "#define __STDC_WANT_MATH_SPEC_FUNCS__ 1" >>confdefs.h
- fi
+ printf "%s\n" "#define _TANDEM_SOURCE 1" >>confdefs.h
+ if test $ac_cv_header_minix_config_h = yes
+then :
+ MINIX=yes
+ printf "%s\n" "#define _MINIX 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+ printf "%s\n" "#define _POSIX_SOURCE 1" >>confdefs.h
-# define __EXTENSIONS__ 1
- $ac_includes_default
-int
-main ()
-{
+ printf "%s\n" "#define _POSIX_1_SOURCE 2" >>confdefs.h
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_safe_to_define___extensions__=yes
-else
- ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else $as_nop
+ MINIX=
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
- test $ac_cv_safe_to_define___extensions__ = yes &&
- $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
- $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+ if test $ac_cv_safe_to_define___extensions__ = yes
+then :
+ printf "%s\n" "#define __EXTENSIONS__ 1" >>confdefs.h
- $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
- $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
- $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+fi
+ if test $ac_cv_should_define__xopen_source = yes
+then :
+ printf "%s\n" "#define _XOPEN_SOURCE 500" >>confdefs.h
+fi
#
@@ -4504,8 +4823,8 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
#
case "$libexecdir" in
*/sudo)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: libexecdir should not include the \"sudo\" subdirectory" >&5
-$as_echo "$as_me: WARNING: libexecdir should not include the \"sudo\" subdirectory" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: libexecdir should not include the \"sudo\" subdirectory" >&5
+printf "%s\n" "$as_me: WARNING: libexecdir should not include the \"sudo\" subdirectory" >&2;}
libexecdir=`expr "$libexecdir" : '\\(.*\\)/sudo$'`
;;
esac
@@ -4513,11 +4832,12 @@ esac
# Check whether --with-otp-only was given.
-if test "${with_otp_only+set}" = set; then :
+if test ${with_otp_only+y}
+then :
withval=$with_otp_only; case $with_otp_only in
yes) with_passwd="no"
- { $as_echo "$as_me:${as_lineno-$LINENO}: --with-otp-only option deprecated, treating as --without-passwd" >&5
-$as_echo "$as_me: --with-otp-only option deprecated, treating as --without-passwd" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --with-otp-only option deprecated, treating as --without-passwd" >&5
+printf "%s\n" "$as_me: --with-otp-only option deprecated, treating as --without-passwd" >&6;}
;;
esac
fi
@@ -4525,11 +4845,12 @@ fi
# Check whether --with-alertmail was given.
-if test "${with_alertmail+set}" = set; then :
+if test ${with_alertmail+y}
+then :
withval=$with_alertmail; case $with_alertmail in
*) with_mailto="$with_alertmail"
- { $as_echo "$as_me:${as_lineno-$LINENO}: --with-alertmail option deprecated, treating as --mailto" >&5
-$as_echo "$as_me: --with-alertmail option deprecated, treating as --mailto" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --with-alertmail option deprecated, treating as --mailto" >&5
+printf "%s\n" "$as_me: --with-alertmail option deprecated, treating as --mailto" >&6;}
;;
esac
fi
@@ -4537,15 +4858,16 @@ fi
# Check whether --with-pc-insults was given.
-if test "${with_pc_insults+set}" = set; then :
+if test ${with_pc_insults+y}
+then :
withval=$with_pc_insults; case $with_pc_insults in
yes) enable_offensive_insults=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: --with-pc-insults option deprecated, it is now the default" >&5
-$as_echo "$as_me: --with-pc-insults option deprecated, it is now the default" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --with-pc-insults option deprecated, it is now the default" >&5
+printf "%s\n" "$as_me: --with-pc-insults option deprecated, it is now the default" >&6;}
;;
no) enable_offensive_insults=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: --without-pc-insults option deprecated, use --enable-offensive-insults" >&5
-$as_echo "$as_me: --without-pc-insults option deprecated, use --enable-offensive-insults" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: --without-pc-insults option deprecated, use --enable-offensive-insults" >&5
+printf "%s\n" "$as_me: --without-pc-insults option deprecated, use --enable-offensive-insults" >&6;}
;;
esac
fi
@@ -4554,38 +4876,40 @@ fi
# Check whether --with-devel was given.
-if test "${with_devel+set}" = set; then :
+if test ${with_devel+y}
+then :
withval=$with_devel; case $with_devel in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: Setting up for development: -Wall, flex, yacc" >&5
-$as_echo "$as_me: Setting up for development: -Wall, flex, yacc" >&6;}
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Setting up for development: -Wall, flex, yacc" >&5
+printf "%s\n" "$as_me: Setting up for development: -Wall, flex, yacc" >&6;}
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -DSUDO_DEVEL "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -DSUDO_DEVEL"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -DSUDO_DEVEL"; } >&5
(: CPPFLAGS already contains -DSUDO_DEVEL) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -DSUDO_DEVEL"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-DSUDO_DEVEL
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -4594,8 +4918,8 @@ fi
devdir=.
;;
no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --with-devel: $with_devel" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --with-devel: $with_devel" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --with-devel: $with_devel" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --with-devel: $with_devel" >&2;}
;;
esac
fi
@@ -4603,7 +4927,8 @@ fi
# Check whether --with-CC was given.
-if test "${with_CC+set}" = set; then :
+if test ${with_CC+y}
+then :
withval=$with_CC; case $with_CC in
*) as_fn_error $? "the --with-CC option is no longer supported, please pass CC=$with_CC to configure instead." "$LINENO" 5
;;
@@ -4613,25 +4938,28 @@ fi
# Check whether --with-rpath was given.
-if test "${with_rpath+set}" = set; then :
- withval=$with_rpath; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-rpath deprecated, rpath is now the default" >&5
-$as_echo "$as_me: WARNING: --with-rpath deprecated, rpath is now the default" >&2;}
+if test ${with_rpath+y}
+then :
+ withval=$with_rpath; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-rpath deprecated, rpath is now the default" >&5
+printf "%s\n" "$as_me: WARNING: --with-rpath deprecated, rpath is now the default" >&2;}
fi
# Check whether --with-blibpath was given.
-if test "${with_blibpath+set}" = set; then :
- withval=$with_blibpath; { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: --with-blibpath deprecated, use --with-libpath" >&5
-$as_echo "$as_me: WARNING: --with-blibpath deprecated, use --with-libpath" >&2;}
+if test ${with_blibpath+y}
+then :
+ withval=$with_blibpath; { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: --with-blibpath deprecated, use --with-libpath" >&5
+printf "%s\n" "$as_me: WARNING: --with-blibpath deprecated, use --with-libpath" >&2;}
fi
# Check whether --with-bsm-audit was given.
-if test "${with_bsm_audit+set}" = set; then :
+if test ${with_bsm_audit+y}
+then :
withval=$with_bsm_audit; case $with_bsm_audit in
- yes) $as_echo "#define HAVE_BSM_AUDIT 1" >>confdefs.h
+ yes) printf "%s\n" "#define HAVE_BSM_AUDIT 1" >>confdefs.h
SUDOERS_LIBS="${SUDOERS_LIBS} -lbsm"
SUDOERS_OBJS="${SUDOERS_OBJS} bsm_audit.lo"
@@ -4645,33 +4973,35 @@ fi
# Check whether --with-linux-audit was given.
-if test "${with_linux_audit+set}" = set; then :
+if test ${with_linux_audit+y}
+then :
withval=$with_linux_audit; case $with_linux_audit in
yes) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <libaudit.h>
int
-main ()
+main (void)
{
int i = AUDIT_USER_CMD; (void)i;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_LINUX_AUDIT 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_LINUX_AUDIT 1" >>confdefs.h
SUDO_LIBS="${SUDO_LIBS} -laudit"
SUDOERS_LIBS="${SUDO_LIBS} -laudit"
SUDOERS_OBJS="${SUDOERS_OBJS} linux_audit.lo"
-else
+else $as_nop
as_fn_error $? "unable to find AUDIT_USER_CMD in libaudit.h for --with-linux-audit" "$LINENO" 5
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
;;
no) ;;
*) as_fn_error $? "\"--with-linux-audit does not take an argument.\"" "$LINENO" 5
@@ -4682,9 +5012,10 @@ fi
# Check whether --with-solaris-audit was given.
-if test "${with_solaris_audit+set}" = set; then :
+if test ${with_solaris_audit+y}
+then :
withval=$with_solaris_audit; case $with_solaris_audit in
- yes) $as_echo "#define HAVE_SOLARIS_AUDIT 1" >>confdefs.h
+ yes) printf "%s\n" "#define HAVE_SOLARIS_AUDIT 1" >>confdefs.h
SUDOERS_LIBS="${SUDOERS_LIBS} -lbsm"
SUDOERS_OBJS="${SUDOERS_OBJS} solaris_audit.lo"
@@ -4698,14 +5029,15 @@ fi
# Check whether --with-sssd was given.
-if test "${with_sssd+set}" = set; then :
+if test ${with_sssd+y}
+then :
withval=$with_sssd; case $with_sssd in
yes) SUDOERS_OBJS="${SUDOERS_OBJS} sssd.lo"
case "$SUDOERS_OBJS" in
*ldap_util.lo*) ;;
*) SUDOERS_OBJS="${SUDOERS_OBJS} ldap_util.lo";;
esac
- $as_echo "#define HAVE_SSSD 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SSSD 1" >>confdefs.h
;;
no) ;;
@@ -4717,7 +5049,8 @@ fi
# Check whether --with-sssd-conf was given.
-if test "${with_sssd_conf+set}" = set; then :
+if test ${with_sssd_conf+y}
+then :
withval=$with_sssd_conf;
fi
@@ -4730,7 +5063,8 @@ EOF
# Check whether --with-sssd-lib was given.
-if test "${with_sssd_lib+set}" = set; then :
+if test ${with_sssd_lib+y}
+then :
withval=$with_sssd_lib;
fi
@@ -4743,43 +5077,45 @@ EOF
# Check whether --with-incpath was given.
-if test "${with_incpath+set}" = set; then :
+if test ${with_incpath+y}
+then :
withval=$with_incpath; case $with_incpath in
yes) as_fn_error $? "\"must give --with-incpath an argument.\"" "$LINENO" 5
;;
no) as_fn_error $? "\"--without-incpath not supported.\"" "$LINENO" 5
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: Adding ${with_incpath} to CPPFLAGS" >&5
-$as_echo "$as_me: Adding ${with_incpath} to CPPFLAGS" >&6;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Adding ${with_incpath} to CPPFLAGS" >&5
+printf "%s\n" "$as_me: Adding ${with_incpath} to CPPFLAGS" >&6;}
for i in ${with_incpath}; do
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${i} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${i}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${i}"; } >&5
(: CPPFLAGS already contains -I${i}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${i}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${i}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -4792,14 +5128,15 @@ fi
# Check whether --with-libpath was given.
-if test "${with_libpath+set}" = set; then :
+if test ${with_libpath+y}
+then :
withval=$with_libpath; case $with_libpath in
yes) as_fn_error $? "\"must give --with-libpath an argument.\"" "$LINENO" 5
;;
no) as_fn_error $? "\"--without-libpath not supported.\"" "$LINENO" 5
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: Adding ${with_libpath} to LDFLAGS" >&5
-$as_echo "$as_me: Adding ${with_libpath} to LDFLAGS" >&6;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Adding ${with_libpath} to LDFLAGS" >&5
+printf "%s\n" "$as_me: Adding ${with_libpath} to LDFLAGS" >&6;}
;;
esac
fi
@@ -4807,14 +5144,15 @@ fi
# Check whether --with-libraries was given.
-if test "${with_libraries+set}" = set; then :
+if test ${with_libraries+y}
+then :
withval=$with_libraries; case $with_libraries in
yes) as_fn_error $? "\"must give --with-libraries an argument.\"" "$LINENO" 5
;;
no) as_fn_error $? "\"--without-libraries not supported.\"" "$LINENO" 5
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: Adding ${with_libraries} to LIBS" >&5
-$as_echo "$as_me: Adding ${with_libraries} to LIBS" >&6;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Adding ${with_libraries} to LIBS" >&5
+printf "%s\n" "$as_me: Adding ${with_libraries} to LIBS" >&6;}
;;
esac
fi
@@ -4822,18 +5160,19 @@ fi
# Check whether --with-efence was given.
-if test "${with_efence+set}" = set; then :
+if test ${with_efence+y}
+then :
withval=$with_efence; case $with_efence in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: Sudo will link with -lefence (Electric Fence)" >&5
-$as_echo "$as_me: Sudo will link with -lefence (Electric Fence)" >&6;}
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Sudo will link with -lefence (Electric Fence)" >&5
+printf "%s\n" "$as_me: Sudo will link with -lefence (Electric Fence)" >&6;}
LIBS="${LIBS} -lefence"
if test -f /usr/local/lib/libefence.a; then
with_libpath="${with_libpath} /usr/local/lib"
fi
;;
no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --with-efence: $with_efence" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --with-efence: $with_efence" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --with-efence: $with_efence" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --with-efence: $with_efence" >&2;}
;;
esac
fi
@@ -4841,10 +5180,11 @@ fi
# Check whether --with-csops was given.
-if test "${with_csops+set}" = set; then :
+if test ${with_csops+y}
+then :
withval=$with_csops; case $with_csops in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: Adding CSOps standard options" >&5
-$as_echo "$as_me: Adding CSOps standard options" >&6;}
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Adding CSOps standard options" >&5
+printf "%s\n" "$as_me: Adding CSOps standard options" >&6;}
CHECKSIA=false
with_ignore_dot=yes
insults=on
@@ -4855,8 +5195,8 @@ $as_echo "$as_me: Adding CSOps standard options" >&6;}
: ${mansectform='5'}
;;
no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --with-csops: $with_csops" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --with-csops: $with_csops" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --with-csops: $with_csops" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --with-csops: $with_csops" >&2;}
;;
esac
fi
@@ -4864,12 +5204,13 @@ fi
# Check whether --with-passwd was given.
-if test "${with_passwd+set}" = set; then :
+if test ${with_passwd+y}
+then :
withval=$with_passwd; case $with_passwd in
- yes|no) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use shadow/passwd file authentication" >&5
-$as_echo_n "checking whether to use shadow/passwd file authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_passwd" >&5
-$as_echo "$with_passwd" >&6; }
+ yes|no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use shadow/passwd file authentication" >&5
+printf %s "checking whether to use shadow/passwd file authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_passwd" >&5
+printf "%s\n" "$with_passwd" >&6; }
AUTH_DEF=""
test "$with_passwd" = "yes" && AUTH_REG="$AUTH_REG passwd"
;;
@@ -4881,15 +5222,16 @@ fi
# Check whether --with-skey was given.
-if test "${with_skey+set}" = set; then :
+if test ${with_skey+y}
+then :
withval=$with_skey; case $with_skey in
no) ;;
- *) $as_echo "#define HAVE_SKEY 1" >>confdefs.h
+ *) printf "%s\n" "#define HAVE_SKEY 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try S/Key authentication" >&5
-$as_echo_n "checking whether to try S/Key authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to try S/Key authentication" >&5
+printf %s "checking whether to try S/Key authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
AUTH_REG="$AUTH_REG S/Key"
;;
esac
@@ -4898,15 +5240,16 @@ fi
# Check whether --with-opie was given.
-if test "${with_opie+set}" = set; then :
+if test ${with_opie+y}
+then :
withval=$with_opie; case $with_opie in
no) ;;
- *) $as_echo "#define HAVE_OPIE 1" >>confdefs.h
+ *) printf "%s\n" "#define HAVE_OPIE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try NRL OPIE authentication" >&5
-$as_echo_n "checking whether to try NRL OPIE authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to try NRL OPIE authentication" >&5
+printf %s "checking whether to try NRL OPIE authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
AUTH_REG="$AUTH_REG NRL_OPIE"
;;
esac
@@ -4915,14 +5258,15 @@ fi
# Check whether --with-long-otp-prompt was given.
-if test "${with_long_otp_prompt+set}" = set; then :
+if test ${with_long_otp_prompt+y}
+then :
withval=$with_long_otp_prompt; case $with_long_otp_prompt in
- yes) $as_echo "#define LONG_OTP_PROMPT 1" >>confdefs.h
+ yes) printf "%s\n" "#define LONG_OTP_PROMPT 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use a two line prompt for OTP authentication" >&5
-$as_echo_n "checking whether to use a two line prompt for OTP authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use a two line prompt for OTP authentication" >&5
+printf %s "checking whether to use a two line prompt for OTP authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
long_otp_prompt=on
;;
no) long_otp_prompt=off
@@ -4935,15 +5279,16 @@ fi
# Check whether --with-SecurID was given.
-if test "${with_SecurID+set}" = set; then :
+if test ${with_SecurID+y}
+then :
withval=$with_SecurID; case $with_SecurID in
no) ;;
- *) $as_echo "#define HAVE_SECURID 1" >>confdefs.h
+ *) printf "%s\n" "#define HAVE_SECURID 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use SecurID for authentication" >&5
-$as_echo_n "checking whether to use SecurID for authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use SecurID for authentication" >&5
+printf %s "checking whether to use SecurID for authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
AUTH_EXCL="$AUTH_EXCL SecurID"
;;
esac
@@ -4952,15 +5297,16 @@ fi
# Check whether --with-fwtk was given.
-if test "${with_fwtk+set}" = set; then :
+if test ${with_fwtk+y}
+then :
withval=$with_fwtk; case $with_fwtk in
no) ;;
- *) $as_echo "#define HAVE_FWTK 1" >>confdefs.h
+ *) printf "%s\n" "#define HAVE_FWTK 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use FWTK AuthSRV for authentication" >&5
-$as_echo_n "checking whether to use FWTK AuthSRV for authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use FWTK AuthSRV for authentication" >&5
+printf %s "checking whether to use FWTK AuthSRV for authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
AUTH_EXCL="$AUTH_EXCL FWTK"
;;
esac
@@ -4969,13 +5315,14 @@ fi
# Check whether --with-kerb5 was given.
-if test "${with_kerb5+set}" = set; then :
+if test ${with_kerb5+y}
+then :
withval=$with_kerb5; case $with_kerb5 in
no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try Kerberos V authentication" >&5
-$as_echo_n "checking whether to try Kerberos V authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to try Kerberos V authentication" >&5
+printf %s "checking whether to try Kerberos V authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
AUTH_REG="$AUTH_REG kerb5"
;;
esac
@@ -4984,7 +5331,8 @@ fi
# Check whether --with-aixauth was given.
-if test "${with_aixauth+set}" = set; then :
+if test ${with_aixauth+y}
+then :
withval=$with_aixauth; case $with_aixauth in
yes) AUTH_EXCL="$AUTH_EXCL AIX_AUTH";;
no) ;;
@@ -4996,7 +5344,8 @@ fi
# Check whether --with-pam was given.
-if test "${with_pam+set}" = set; then :
+if test ${with_pam+y}
+then :
withval=$with_pam; case $with_pam in
yes) AUTH_EXCL="$AUTH_EXCL PAM";;
no) ;;
@@ -5008,14 +5357,15 @@ fi
# Check whether --with-AFS was given.
-if test "${with_AFS+set}" = set; then :
+if test ${with_AFS+y}
+then :
withval=$with_AFS; case $with_AFS in
- yes) $as_echo "#define HAVE_AFS 1" >>confdefs.h
+ yes) printf "%s\n" "#define HAVE_AFS 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try AFS (kerberos) authentication" >&5
-$as_echo_n "checking whether to try AFS (kerberos) authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to try AFS (kerberos) authentication" >&5
+printf %s "checking whether to try AFS (kerberos) authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
AUTH_REG="$AUTH_REG AFS"
;;
no) ;;
@@ -5027,14 +5377,15 @@ fi
# Check whether --with-DCE was given.
-if test "${with_DCE+set}" = set; then :
+if test ${with_DCE+y}
+then :
withval=$with_DCE; case $with_DCE in
- yes) $as_echo "#define HAVE_DCE 1" >>confdefs.h
+ yes) printf "%s\n" "#define HAVE_DCE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to try DCE (kerberos) authentication" >&5
-$as_echo_n "checking whether to try DCE (kerberos) authentication... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to try DCE (kerberos) authentication" >&5
+printf %s "checking whether to try DCE (kerberos) authentication... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
AUTH_REG="$AUTH_REG DCE"
;;
no) ;;
@@ -5046,7 +5397,8 @@ fi
# Check whether --with-logincap was given.
-if test "${with_logincap+set}" = set; then :
+if test ${with_logincap+y}
+then :
withval=$with_logincap; case $with_logincap in
yes|no) ;;
*) as_fn_error $? "\"--with-logincap does not take an argument.\"" "$LINENO" 5
@@ -5057,7 +5409,8 @@ fi
# Check whether --with-bsdauth was given.
-if test "${with_bsdauth+set}" = set; then :
+if test ${with_bsdauth+y}
+then :
withval=$with_bsdauth; case $with_bsdauth in
yes) AUTH_EXCL="$AUTH_EXCL BSD_AUTH";;
no) ;;
@@ -5069,7 +5422,8 @@ fi
# Check whether --with-project was given.
-if test "${with_project+set}" = set; then :
+if test ${with_project+y}
+then :
withval=$with_project; case $with_project in
yes|no) ;;
no) ;;
@@ -5079,11 +5433,12 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to lecture users the first time they run sudo" >&5
-$as_echo_n "checking whether to lecture users the first time they run sudo... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to lecture users the first time they run sudo" >&5
+printf %s "checking whether to lecture users the first time they run sudo... " >&6; }
# Check whether --with-lecture was given.
-if test "${with_lecture+set}" = set; then :
+if test ${with_lecture+y}
+then :
withval=$with_lecture; case $with_lecture in
yes|short|always) lecture=once
;;
@@ -5095,53 +5450,55 @@ esac
fi
if test "$lecture" = "once"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- $as_echo "#define NO_LECTURE 1" >>confdefs.h
+ printf "%s\n" "#define NO_LECTURE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sudo should log via syslog or to a file by default" >&5
-$as_echo_n "checking whether sudo should log via syslog or to a file by default... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sudo should log via syslog or to a file by default" >&5
+printf %s "checking whether sudo should log via syslog or to a file by default... " >&6; }
# Check whether --with-logging was given.
-if test "${with_logging+set}" = set; then :
+if test ${with_logging+y}
+then :
withval=$with_logging; case $with_logging in
yes) as_fn_error $? "\"must give --with-logging an argument.\"" "$LINENO" 5
;;
no) as_fn_error $? "\"--without-logging not supported.\"" "$LINENO" 5
;;
- syslog) $as_echo "#define LOGGING SLOG_SYSLOG" >>confdefs.h
+ syslog) printf "%s\n" "#define LOGGING SLOG_SYSLOG" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: syslog" >&5
-$as_echo "syslog" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: syslog" >&5
+printf "%s\n" "syslog" >&6; }
;;
- file) $as_echo "#define LOGGING SLOG_FILE" >>confdefs.h
+ file) printf "%s\n" "#define LOGGING SLOG_FILE" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: file" >&5
-$as_echo "file" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: file" >&5
+printf "%s\n" "file" >&6; }
;;
- both) $as_echo "#define LOGGING SLOG_BOTH" >>confdefs.h
+ both) printf "%s\n" "#define LOGGING SLOG_BOTH" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: both" >&5
-$as_echo "both" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: both" >&5
+printf "%s\n" "both" >&6; }
;;
*) as_fn_error $? "\"unknown argument to --with-logging: $with_logging\"" "$LINENO" 5
;;
esac
-else
- $as_echo "#define LOGGING SLOG_SYSLOG" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: syslog" >&5
-$as_echo "syslog" >&6; }
+else $as_nop
+ printf "%s\n" "#define LOGGING SLOG_SYSLOG" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: syslog" >&5
+printf "%s\n" "syslog" >&6; }
fi
# Check whether --with-logfac was given.
-if test "${with_logfac+set}" = set; then :
+if test ${with_logfac+y}
+then :
withval=$with_logfac; case $with_logfac in
yes) as_fn_error $? "\"must give --with-logfac an argument.\"" "$LINENO" 5
;;
@@ -5155,11 +5512,12 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking at which syslog priority to log commands" >&5
-$as_echo_n "checking at which syslog priority to log commands... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking at which syslog priority to log commands" >&5
+printf %s "checking at which syslog priority to log commands... " >&6; }
# Check whether --with-goodpri was given.
-if test "${with_goodpri+set}" = set; then :
+if test ${with_goodpri+y}
+then :
withval=$with_goodpri; case $with_goodpri in
yes) as_fn_error $? "\"must give --with-goodpri an argument.\"" "$LINENO" 5
;;
@@ -5174,18 +5532,17 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define PRI_SUCCESS "$goodpri"
-_ACEOF
+printf "%s\n" "#define PRI_SUCCESS \"$goodpri\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $goodpri" >&5
-$as_echo "$goodpri" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $goodpri" >&5
+printf "%s\n" "$goodpri" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking at which syslog priority to log failures" >&5
-$as_echo_n "checking at which syslog priority to log failures... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking at which syslog priority to log failures" >&5
+printf %s "checking at which syslog priority to log failures... " >&6; }
# Check whether --with-badpri was given.
-if test "${with_badpri+set}" = set; then :
+if test ${with_badpri+y}
+then :
withval=$with_badpri; case $with_badpri in
yes) as_fn_error $? "\"must give --with-badpri an argument.\"" "$LINENO" 5
;;
@@ -5200,16 +5557,15 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define PRI_FAILURE "$badpri"
-_ACEOF
+printf "%s\n" "#define PRI_FAILURE \"$badpri\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $badpri" >&5
-$as_echo "$badpri" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $badpri" >&5
+printf "%s\n" "$badpri" >&6; }
# Check whether --with-logpath was given.
-if test "${with_logpath+set}" = set; then :
+if test ${with_logpath+y}
+then :
withval=$with_logpath; case $with_logpath in
yes) as_fn_error $? "\"must give --with-logpath an argument.\"" "$LINENO" 5
;;
@@ -5219,11 +5575,12 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how long a line in the log file should be" >&5
-$as_echo_n "checking how long a line in the log file should be... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how long a line in the log file should be" >&5
+printf %s "checking how long a line in the log file should be... " >&6; }
# Check whether --with-loglen was given.
-if test "${with_loglen+set}" = set; then :
+if test ${with_loglen+y}
+then :
withval=$with_loglen; case $with_loglen in
yes) as_fn_error $? "\"must give --with-loglen an argument.\"" "$LINENO" 5
;;
@@ -5237,18 +5594,17 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define MAXLOGFILELEN $loglen
-_ACEOF
+printf "%s\n" "#define MAXLOGFILELEN $loglen" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $loglen" >&5
-$as_echo "$loglen" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $loglen" >&5
+printf "%s\n" "$loglen" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sudo should ignore '.' or '' in \$PATH" >&5
-$as_echo_n "checking whether sudo should ignore '.' or '' in \$PATH... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sudo should ignore '.' or '' in \$PATH" >&5
+printf %s "checking whether sudo should ignore '.' or '' in \$PATH... " >&6; }
# Check whether --with-ignore-dot was given.
-if test "${with_ignore_dot+set}" = set; then :
+if test ${with_ignore_dot+y}
+then :
withval=$with_ignore_dot; case $with_ignore_dot in
yes) ignore_dot=on
;;
@@ -5260,20 +5616,21 @@ esac
fi
if test "$ignore_dot" = "on"; then
- $as_echo "#define IGNORE_DOT_PATH 1" >>confdefs.h
+ printf "%s\n" "#define IGNORE_DOT_PATH 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to send mail when a user is not in sudoers" >&5
-$as_echo_n "checking whether to send mail when a user is not in sudoers... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to send mail when a user is not in sudoers" >&5
+printf %s "checking whether to send mail when a user is not in sudoers... " >&6; }
# Check whether --with-mail-if-no-user was given.
-if test "${with_mail_if_no_user+set}" = set; then :
+if test ${with_mail_if_no_user+y}
+then :
withval=$with_mail_if_no_user; case $with_mail_if_no_user in
yes) mail_no_user=on
;;
@@ -5285,20 +5642,21 @@ esac
fi
if test "$mail_no_user" = "on"; then
- $as_echo "#define SEND_MAIL_WHEN_NO_USER 1" >>confdefs.h
+ printf "%s\n" "#define SEND_MAIL_WHEN_NO_USER 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to send mail when user listed but not for this host" >&5
-$as_echo_n "checking whether to send mail when user listed but not for this host... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to send mail when user listed but not for this host" >&5
+printf %s "checking whether to send mail when user listed but not for this host... " >&6; }
# Check whether --with-mail-if-no-host was given.
-if test "${with_mail_if_no_host+set}" = set; then :
+if test ${with_mail_if_no_host+y}
+then :
withval=$with_mail_if_no_host; case $with_mail_if_no_host in
yes) mail_no_host=on
;;
@@ -5310,20 +5668,21 @@ esac
fi
if test "$mail_no_host" = "on"; then
- $as_echo "#define SEND_MAIL_WHEN_NO_HOST 1" >>confdefs.h
+ printf "%s\n" "#define SEND_MAIL_WHEN_NO_HOST 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to send mail when a user tries a disallowed command" >&5
-$as_echo_n "checking whether to send mail when a user tries a disallowed command... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to send mail when a user tries a disallowed command" >&5
+printf %s "checking whether to send mail when a user tries a disallowed command... " >&6; }
# Check whether --with-mail-if-noperms was given.
-if test "${with_mail_if_noperms+set}" = set; then :
+if test ${with_mail_if_noperms+y}
+then :
withval=$with_mail_if_noperms; case $with_mail_if_noperms in
yes) mail_noperms=on
;;
@@ -5335,20 +5694,21 @@ esac
fi
if test "$mail_noperms" = "on"; then
- $as_echo "#define SEND_MAIL_WHEN_NOT_OK 1" >>confdefs.h
+ printf "%s\n" "#define SEND_MAIL_WHEN_NOT_OK 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking who should get the mail that sudo sends" >&5
-$as_echo_n "checking who should get the mail that sudo sends... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking who should get the mail that sudo sends" >&5
+printf %s "checking who should get the mail that sudo sends... " >&6; }
# Check whether --with-mailto was given.
-if test "${with_mailto+set}" = set; then :
+if test ${with_mailto+y}
+then :
withval=$with_mailto; case $with_mailto in
yes) as_fn_error $? "\"must give --with-mailto an argument.\"" "$LINENO" 5
;;
@@ -5360,70 +5720,67 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define MAILTO "$mailto"
-_ACEOF
+printf "%s\n" "#define MAILTO \"$mailto\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $mailto" >&5
-$as_echo "$mailto" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $mailto" >&5
+printf "%s\n" "$mailto" >&6; }
# Check whether --with-mailsubject was given.
-if test "${with_mailsubject+set}" = set; then :
+if test ${with_mailsubject+y}
+then :
withval=$with_mailsubject; case $with_mailsubject in
yes) as_fn_error $? "\"must give --with-mailsubject an argument.\"" "$LINENO" 5
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, --without-mailsubject not supported." >&5
-$as_echo "$as_me: WARNING: Sorry, --without-mailsubject not supported." >&2;}
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, --without-mailsubject not supported." >&5
+printf "%s\n" "$as_me: WARNING: Sorry, --without-mailsubject not supported." >&2;}
;;
*) mailsub="$with_mailsubject"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking sudo mail subject" >&5
-$as_echo_n "checking sudo mail subject... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using alert mail subject: $mailsub" >&5
-$as_echo "Using alert mail subject: $mailsub" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking sudo mail subject" >&5
+printf %s "checking sudo mail subject... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Using alert mail subject: $mailsub" >&5
+printf "%s\n" "Using alert mail subject: $mailsub" >&6; }
;;
esac
fi
-cat >>confdefs.h <<_ACEOF
-#define MAILSUBJECT "$mailsub"
-_ACEOF
+printf "%s\n" "#define MAILSUBJECT \"$mailsub\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bad password prompt" >&5
-$as_echo_n "checking for bad password prompt... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bad password prompt" >&5
+printf %s "checking for bad password prompt... " >&6; }
# Check whether --with-passprompt was given.
-if test "${with_passprompt+set}" = set; then :
+if test ${with_passprompt+y}
+then :
withval=$with_passprompt; case $with_passprompt in
yes) as_fn_error $? "\"must give --with-passprompt an argument.\"" "$LINENO" 5
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, --without-passprompt not supported." >&5
-$as_echo "$as_me: WARNING: Sorry, --without-passprompt not supported." >&2;}
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, --without-passprompt not supported." >&5
+printf "%s\n" "$as_me: WARNING: Sorry, --without-passprompt not supported." >&2;}
;;
*) passprompt="$with_passprompt"
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $passprompt" >&5
-$as_echo "$passprompt" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $passprompt" >&5
+printf "%s\n" "$passprompt" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define PASSPROMPT "$passprompt"
-_ACEOF
+printf "%s\n" "#define PASSPROMPT \"$passprompt\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for bad password message" >&5
-$as_echo_n "checking for bad password message... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for bad password message" >&5
+printf %s "checking for bad password message... " >&6; }
# Check whether --with-badpass-message was given.
-if test "${with_badpass_message+set}" = set; then :
+if test ${with_badpass_message+y}
+then :
withval=$with_badpass_message; case $with_badpass_message in
yes) as_fn_error $? "\"Must give --with-badpass-message an argument.\"" "$LINENO" 5
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, --without-badpass-message not supported." >&5
-$as_echo "$as_me: WARNING: Sorry, --without-badpass-message not supported." >&2;}
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Sorry, --without-badpass-message not supported." >&5
+printf "%s\n" "$as_me: WARNING: Sorry, --without-badpass-message not supported." >&2;}
;;
*) badpass_message="$with_badpass_message"
;;
@@ -5431,18 +5788,17 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define INCORRECT_PASSWORD "$badpass_message"
-_ACEOF
+printf "%s\n" "#define INCORRECT_PASSWORD \"$badpass_message\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $badpass_message" >&5
-$as_echo "$badpass_message" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $badpass_message" >&5
+printf "%s\n" "$badpass_message" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to expect fully qualified hosts in sudoers" >&5
-$as_echo_n "checking whether to expect fully qualified hosts in sudoers... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to expect fully qualified hosts in sudoers" >&5
+printf %s "checking whether to expect fully qualified hosts in sudoers... " >&6; }
# Check whether --with-fqdn was given.
-if test "${with_fqdn+set}" = set; then :
+if test ${with_fqdn+y}
+then :
withval=$with_fqdn; case $with_fqdn in
yes) fqdn=on
;;
@@ -5454,18 +5810,19 @@ esac
fi
if test "$fqdn" = "on"; then
- $as_echo "#define FQDN 1" >>confdefs.h
+ printf "%s\n" "#define FQDN 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check whether --with-timedir was given.
-if test "${with_timedir+set}" = set; then :
+if test ${with_timedir+y}
+then :
withval=$with_timedir; case $with_timedir in
*) as_fn_error $? "\"--without-timedir no longer supported, see --with-rundir.\"" "$LINENO" 5
;;
@@ -5475,7 +5832,8 @@ fi
# Check whether --with-rundir was given.
-if test "${with_rundir+set}" = set; then :
+if test ${with_rundir+y}
+then :
withval=$with_rundir; case $with_rundir in
yes) as_fn_error $? "\"must give --with-rundir an argument.\"" "$LINENO" 5
;;
@@ -5487,7 +5845,8 @@ fi
# Check whether --with-vardir was given.
-if test "${with_vardir+set}" = set; then :
+if test ${with_vardir+y}
+then :
withval=$with_vardir; case $with_vardir in
yes) as_fn_error $? "\"must give --with-vardir an argument.\"" "$LINENO" 5
;;
@@ -5499,7 +5858,8 @@ fi
# Check whether --with-iologdir was given.
-if test "${with_iologdir+set}" = set; then :
+if test ${with_iologdir+y}
+then :
withval=$with_iologdir; case $with_iologdir in
yes) ;;
no) as_fn_error $? "\"--without-iologdir not supported.\"" "$LINENO" 5
@@ -5510,7 +5870,8 @@ fi
# Check whether --with-tzdir was given.
-if test "${with_tzdir+set}" = set; then :
+if test ${with_tzdir+y}
+then :
withval=$with_tzdir; case $with_tzdir in
yes) as_fn_error $? "\"must give --with-tzdir an argument.\"" "$LINENO" 5
;;
@@ -5520,7 +5881,8 @@ fi
# Check whether --with-sendmail was given.
-if test "${with_sendmail+set}" = set; then :
+if test ${with_sendmail+y}
+then :
withval=$with_sendmail; case $with_sendmail in
yes) with_sendmail=""
;;
@@ -5536,7 +5898,8 @@ fi
# Check whether --with-sudoers-mode was given.
-if test "${with_sudoers_mode+set}" = set; then :
+if test ${with_sudoers_mode+y}
+then :
withval=$with_sudoers_mode; case $with_sudoers_mode in
yes) as_fn_error $? "\"must give --with-sudoers-mode an argument.\"" "$LINENO" 5
;;
@@ -5554,7 +5917,8 @@ fi
# Check whether --with-sudoers-uid was given.
-if test "${with_sudoers_uid+set}" = set; then :
+if test ${with_sudoers_uid+y}
+then :
withval=$with_sudoers_uid; case $with_sudoers_uid in
yes) as_fn_error $? "\"must give --with-sudoers-uid an argument.\"" "$LINENO" 5
;;
@@ -5570,7 +5934,8 @@ fi
# Check whether --with-sudoers-gid was given.
-if test "${with_sudoers_gid+set}" = set; then :
+if test ${with_sudoers_gid+y}
+then :
withval=$with_sudoers_gid; case $with_sudoers_gid in
yes) as_fn_error $? "\"must give --with-sudoers-gid an argument.\"" "$LINENO" 5
;;
@@ -5584,11 +5949,12 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for umask programs should be run with" >&5
-$as_echo_n "checking for umask programs should be run with... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for umask programs should be run with" >&5
+printf %s "checking for umask programs should be run with... " >&6; }
# Check whether --with-umask was given.
-if test "${with_umask+set}" = set; then :
+if test ${with_umask+y}
+then :
withval=$with_umask; case $with_umask in
yes) as_fn_error $? "\"must give --with-umask an argument.\"" "$LINENO" 5
;;
@@ -5602,23 +5968,22 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define SUDO_UMASK $sudo_umask
-_ACEOF
+printf "%s\n" "#define SUDO_UMASK $sudo_umask" >>confdefs.h
if test "$sudo_umask" = "0777"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: user" >&5
-$as_echo "user" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: user" >&5
+printf "%s\n" "user" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_umask" >&5
-$as_echo "$sudo_umask" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_umask" >&5
+printf "%s\n" "$sudo_umask" >&6; }
fi
# Check whether --with-umask-override was given.
-if test "${with_umask_override+set}" = set; then :
+if test ${with_umask_override+y}
+then :
withval=$with_umask_override; case $with_umask_override in
- yes) $as_echo "#define UMASK_OVERRIDE 1" >>confdefs.h
+ yes) printf "%s\n" "#define UMASK_OVERRIDE 1" >>confdefs.h
umask_override=on
;;
@@ -5630,11 +5995,12 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for default user to run commands as" >&5
-$as_echo_n "checking for default user to run commands as... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for default user to run commands as" >&5
+printf %s "checking for default user to run commands as... " >&6; }
# Check whether --with-runas-default was given.
-if test "${with_runas_default+set}" = set; then :
+if test ${with_runas_default+y}
+then :
withval=$with_runas_default; case $with_runas_default in
yes) as_fn_error $? "\"must give --with-runas-default an argument.\"" "$LINENO" 5
;;
@@ -5646,67 +6012,64 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define RUNAS_DEFAULT "$runas_default"
-_ACEOF
+printf "%s\n" "#define RUNAS_DEFAULT \"$runas_default\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $runas_default" >&5
-$as_echo "$runas_default" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $runas_default" >&5
+printf "%s\n" "$runas_default" >&6; }
# Check whether --with-exempt was given.
-if test "${with_exempt+set}" = set; then :
+if test ${with_exempt+y}
+then :
withval=$with_exempt; case $with_exempt in
yes) as_fn_error $? "\"must give --with-exempt an argument.\"" "$LINENO" 5
;;
no) as_fn_error $? "\"--without-exempt not supported.\"" "$LINENO" 5
;;
*)
-cat >>confdefs.h <<_ACEOF
-#define EXEMPTGROUP "$with_exempt"
-_ACEOF
+printf "%s\n" "#define EXEMPTGROUP \"$with_exempt\"" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for group to be exempt from password" >&5
-$as_echo_n "checking for group to be exempt from password... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_exempt" >&5
-$as_echo "$with_exempt" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for group to be exempt from password" >&5
+printf %s "checking for group to be exempt from password... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_exempt" >&5
+printf "%s\n" "$with_exempt" >&6; }
;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for editor that visudo should use" >&5
-$as_echo_n "checking for editor that visudo should use... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for editor that visudo should use" >&5
+printf %s "checking for editor that visudo should use... " >&6; }
# Check whether --with-editor was given.
-if test "${with_editor+set}" = set; then :
+if test ${with_editor+y}
+then :
withval=$with_editor; case $with_editor in
yes) as_fn_error $? "\"must give --with-editor an argument.\"" "$LINENO" 5
;;
no) as_fn_error $? "\"--without-editor not supported.\"" "$LINENO" 5
;;
*)
-cat >>confdefs.h <<_ACEOF
-#define EDITOR "$with_editor"
-_ACEOF
+printf "%s\n" "#define EDITOR \"$with_editor\"" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_editor" >&5
-$as_echo "$with_editor" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_editor" >&5
+printf "%s\n" "$with_editor" >&6; }
editor="$with_editor"
;;
esac
-else
- $as_echo "#define EDITOR _PATH_VI" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: vi" >&5
-$as_echo "vi" >&6; }
+else $as_nop
+ printf "%s\n" "#define EDITOR _PATH_VI" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: vi" >&5
+printf "%s\n" "vi" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to obey EDITOR and VISUAL environment variables" >&5
-$as_echo_n "checking whether to obey EDITOR and VISUAL environment variables... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to obey EDITOR and VISUAL environment variables" >&5
+printf %s "checking whether to obey EDITOR and VISUAL environment variables... " >&6; }
# Check whether --with-env-editor was given.
-if test "${with_env_editor+set}" = set; then :
+if test ${with_env_editor+y}
+then :
withval=$with_env_editor; case $with_env_editor in
yes) env_editor=on
;;
@@ -5718,20 +6081,21 @@ esac
fi
if test "$env_editor" = "on"; then
- $as_echo "#define ENV_EDITOR 1" >>confdefs.h
+ printf "%s\n" "#define ENV_EDITOR 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking number of tries a user gets to enter their password" >&5
-$as_echo_n "checking number of tries a user gets to enter their password... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking number of tries a user gets to enter their password" >&5
+printf %s "checking number of tries a user gets to enter their password... " >&6; }
# Check whether --with-passwd-tries was given.
-if test "${with_passwd_tries+set}" = set; then :
+if test ${with_passwd_tries+y}
+then :
withval=$with_passwd_tries; case $with_passwd_tries in
yes) ;;
no) as_fn_error $? "\"--without-editor not supported.\"" "$LINENO" 5
@@ -5744,18 +6108,17 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define TRIES_FOR_PASSWORD $passwd_tries
-_ACEOF
+printf "%s\n" "#define TRIES_FOR_PASSWORD $passwd_tries" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $passwd_tries" >&5
-$as_echo "$passwd_tries" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $passwd_tries" >&5
+printf "%s\n" "$passwd_tries" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking time in minutes after which sudo will ask for a password again" >&5
-$as_echo_n "checking time in minutes after which sudo will ask for a password again... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking time in minutes after which sudo will ask for a password again" >&5
+printf %s "checking time in minutes after which sudo will ask for a password again... " >&6; }
# Check whether --with-timeout was given.
-if test "${with_timeout+set}" = set; then :
+if test ${with_timeout+y}
+then :
withval=$with_timeout; case $with_timeout in
yes) ;;
no) timeout=0
@@ -5768,18 +6131,17 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define TIMEOUT $timeout
-_ACEOF
+printf "%s\n" "#define TIMEOUT $timeout" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $timeout" >&5
-$as_echo "$timeout" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $timeout" >&5
+printf "%s\n" "$timeout" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking time in minutes after the password prompt will time out" >&5
-$as_echo_n "checking time in minutes after the password prompt will time out... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking time in minutes after the password prompt will time out" >&5
+printf %s "checking time in minutes after the password prompt will time out... " >&6; }
# Check whether --with-password-timeout was given.
-if test "${with_password_timeout+set}" = set; then :
+if test ${with_password_timeout+y}
+then :
withval=$with_password_timeout; case $with_password_timeout in
yes) ;;
no) password_timeout=0
@@ -5792,16 +6154,15 @@ esac
fi
-cat >>confdefs.h <<_ACEOF
-#define PASSWORD_TIMEOUT $password_timeout
-_ACEOF
+printf "%s\n" "#define PASSWORD_TIMEOUT $password_timeout" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $password_timeout" >&5
-$as_echo "$password_timeout" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $password_timeout" >&5
+printf "%s\n" "$password_timeout" >&6; }
# Check whether --with-tty-tickets was given.
-if test "${with_tty_tickets+set}" = set; then :
+if test ${with_tty_tickets+y}
+then :
withval=$with_tty_tickets; case $with_tty_tickets in
yes) timestamp_type=tty
;;
@@ -5813,11 +6174,12 @@ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to include insults" >&5
-$as_echo_n "checking whether to include insults... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to include insults" >&5
+printf %s "checking whether to include insults... " >&6; }
# Check whether --with-insults was given.
-if test "${with_insults+set}" = set; then :
+if test ${with_insults+y}
+then :
withval=$with_insults; case $with_insults in
yes) insults=on
with_classic_insults=yes
@@ -5835,18 +6197,19 @@ esac
fi
if test "$insults" = "on"; then
- $as_echo "#define USE_INSULTS 1" >>confdefs.h
+ printf "%s\n" "#define USE_INSULTS 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check whether --with-all-insults was given.
-if test "${with_all_insults+set}" = set; then :
+if test ${with_all_insults+y}
+then :
withval=$with_all_insults; case $with_all_insults in
yes) with_classic_insults=yes
with_csops_insults=yes
@@ -5863,9 +6226,10 @@ fi
# Check whether --with-classic-insults was given.
-if test "${with_classic_insults+set}" = set; then :
+if test ${with_classic_insults+y}
+then :
withval=$with_classic_insults; case $with_classic_insults in
- yes) $as_echo "#define CLASSIC_INSULTS 1" >>confdefs.h
+ yes) printf "%s\n" "#define CLASSIC_INSULTS 1" >>confdefs.h
;;
no) ;;
@@ -5877,9 +6241,10 @@ fi
# Check whether --with-csops-insults was given.
-if test "${with_csops_insults+set}" = set; then :
+if test ${with_csops_insults+y}
+then :
withval=$with_csops_insults; case $with_csops_insults in
- yes) $as_echo "#define CSOPS_INSULTS 1" >>confdefs.h
+ yes) printf "%s\n" "#define CSOPS_INSULTS 1" >>confdefs.h
;;
no) ;;
@@ -5891,9 +6256,10 @@ fi
# Check whether --with-hal-insults was given.
-if test "${with_hal_insults+set}" = set; then :
+if test ${with_hal_insults+y}
+then :
withval=$with_hal_insults; case $with_hal_insults in
- yes) $as_echo "#define HAL_INSULTS 1" >>confdefs.h
+ yes) printf "%s\n" "#define HAL_INSULTS 1" >>confdefs.h
;;
no) ;;
@@ -5905,9 +6271,10 @@ fi
# Check whether --with-goons-insults was given.
-if test "${with_goons_insults+set}" = set; then :
+if test ${with_goons_insults+y}
+then :
withval=$with_goons_insults; case $with_goons_insults in
- yes) $as_echo "#define GOONS_INSULTS 1" >>confdefs.h
+ yes) printf "%s\n" "#define GOONS_INSULTS 1" >>confdefs.h
;;
no) ;;
@@ -5919,9 +6286,10 @@ fi
# Check whether --with-python-insults was given.
-if test "${with_python_insults+set}" = set; then :
+if test ${with_python_insults+y}
+then :
withval=$with_python_insults; case $with_python_insults in
- yes) $as_echo "#define PYTHON_INSULTS 1" >>confdefs.h
+ yes) printf "%s\n" "#define PYTHON_INSULTS 1" >>confdefs.h
;;
no) ;;
@@ -5933,7 +6301,8 @@ fi
# Check whether --with-nsswitch was given.
-if test "${with_nsswitch+set}" = set; then :
+if test ${with_nsswitch+y}
+then :
withval=$with_nsswitch; case $with_nsswitch in
no) ;;
yes) with_nsswitch="/etc/nsswitch.conf"
@@ -5945,15 +6314,16 @@ fi
# Check whether --with-ldap was given.
-if test "${with_ldap+set}" = set; then :
+if test ${with_ldap+y}
+then :
withval=$with_ldap; case $with_ldap in
no) ;;
- *) $as_echo "#define HAVE_LDAP 1" >>confdefs.h
+ *) printf "%s\n" "#define HAVE_LDAP 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use sudoers from LDAP" >&5
-$as_echo_n "checking whether to use sudoers from LDAP... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use sudoers from LDAP" >&5
+printf %s "checking whether to use sudoers from LDAP... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
esac
fi
@@ -5961,7 +6331,8 @@ fi
# Check whether --with-ldap-conf-file was given.
-if test "${with_ldap_conf_file+set}" = set; then :
+if test ${with_ldap_conf_file+y}
+then :
withval=$with_ldap_conf_file;
fi
@@ -5973,7 +6344,8 @@ EOF
# Check whether --with-ldap-secret-file was given.
-if test "${with_ldap_secret_file+set}" = set; then :
+if test ${with_ldap_secret_file+y}
+then :
withval=$with_ldap_secret_file;
fi
@@ -5984,90 +6356,89 @@ EOF
if test "$insults" = "on"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which insult sets to include" >&5
-$as_echo_n "checking which insult sets to include... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which insult sets to include" >&5
+printf %s "checking which insult sets to include... " >&6; }
i=""
test "$with_python_insults" = "yes" && i="python ${i}"
test "$with_goons_insults" = "yes" && i="goons ${i}"
test "$with_hal_insults" = "yes" && i="hal ${i}"
test "$with_csops_insults" = "yes" && i="csops ${i}"
test "$with_classic_insults" = "yes" && i="classic ${i}"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $i" >&5
-$as_echo "$i" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $i" >&5
+printf "%s\n" "$i" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to override the user's path" >&5
-$as_echo_n "checking whether to override the user's path... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to override the user's path" >&5
+printf %s "checking whether to override the user's path... " >&6; }
# Check whether --with-secure-path was given.
-if test "${with_secure_path+set}" = set; then :
+if test ${with_secure_path+y}
+then :
withval=$with_secure_path; case $with_secure_path in
yes) with_secure_path="/bin:/usr/ucb:/usr/bin:/usr/sbin:/sbin:/usr/etc:/etc"
- cat >>confdefs.h <<_ACEOF
-#define SECURE_PATH "$with_secure_path"
-_ACEOF
+ printf "%s\n" "#define SECURE_PATH \"$with_secure_path\"" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_secure_path" >&5
-$as_echo "$with_secure_path" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_secure_path" >&5
+printf "%s\n" "$with_secure_path" >&6; }
secure_path="set to $with_secure_path"
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- *) cat >>confdefs.h <<_ACEOF
-#define SECURE_PATH "$with_secure_path"
-_ACEOF
+ *) printf "%s\n" "#define SECURE_PATH \"$with_secure_path\"" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_secure_path" >&5
-$as_echo "$with_secure_path" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_secure_path" >&5
+printf "%s\n" "$with_secure_path" >&6; }
secure_path="set to F<$with_secure_path>"
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to get ip addresses from the network interfaces" >&5
-$as_echo_n "checking whether to get ip addresses from the network interfaces... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to get ip addresses from the network interfaces" >&5
+printf %s "checking whether to get ip addresses from the network interfaces... " >&6; }
# Check whether --with-interfaces was given.
-if test "${with_interfaces+set}" = set; then :
+if test ${with_interfaces+y}
+then :
withval=$with_interfaces; case $with_interfaces in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
- no) $as_echo "#define STUB_LOAD_INTERFACES 1" >>confdefs.h
+ no) printf "%s\n" "#define STUB_LOAD_INTERFACES 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
*) as_fn_error $? "\"--with-interfaces does not take an argument.\"" "$LINENO" 5
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use an askpass helper" >&5
-$as_echo_n "checking whether to use an askpass helper... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use an askpass helper" >&5
+printf %s "checking whether to use an askpass helper... " >&6; }
# Check whether --with-askpass was given.
-if test "${with_askpass+set}" = set; then :
+if test ${with_askpass+y}
+then :
withval=$with_askpass; case $with_askpass in
yes) as_fn_error $? "\"--with-askpass takes a path as an argument.\"" "$LINENO" 5
;;
no) ;;
*) ;;
esac
-else
+else $as_nop
with_askpass=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -6085,7 +6456,8 @@ fi
# Check whether --with-exampledir was given.
-if test "${with_exampledir+set}" = set; then :
+if test ${with_exampledir+y}
+then :
withval=$with_exampledir; case $with_exampledir in
yes) as_fn_error $? "\"must give --with-exampledir an argument.\"" "$LINENO" 5
;;
@@ -6098,7 +6470,8 @@ fi
# Check whether --with-plugindir was given.
-if test "${with_plugindir+set}" = set; then :
+if test ${with_plugindir+y}
+then :
withval=$with_plugindir; case $with_plugindir in
yes) as_fn_error $? "\"must give --with-plugindir an argument.\"" "$LINENO" 5
;;
@@ -6112,7 +6485,8 @@ fi
# Check whether --with-man was given.
-if test "${with_man+set}" = set; then :
+if test ${with_man+y}
+then :
withval=$with_man; case $with_man in
yes) MANTYPE=man
;;
@@ -6126,7 +6500,8 @@ fi
# Check whether --with-mdoc was given.
-if test "${with_mdoc+set}" = set; then :
+if test ${with_mdoc+y}
+then :
withval=$with_mdoc; case $with_mdoc in
yes) MANTYPE=mdoc
;;
@@ -6139,60 +6514,63 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to do user authentication by default" >&5
-$as_echo_n "checking whether to do user authentication by default... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to do user authentication by default" >&5
+printf %s "checking whether to do user authentication by default... " >&6; }
# Check whether --enable-authentication was given.
-if test "${enable_authentication+set}" = set; then :
+if test ${enable_authentication+y}
+then :
enableval=$enable_authentication; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- $as_echo "#define NO_AUTHENTICATION 1" >>confdefs.h
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ printf "%s\n" "#define NO_AUTHENTICATION 1" >>confdefs.h
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-authentication: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-authentication: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-authentication: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-authentication: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable running the mailer as root" >&5
-$as_echo_n "checking whether to disable running the mailer as root... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to disable running the mailer as root" >&5
+printf %s "checking whether to disable running the mailer as root... " >&6; }
# Check whether --enable-root-mailer was given.
-if test "${enable_root_mailer+set}" = set; then :
+if test ${enable_root_mailer+y}
+then :
enableval=$enable_root_mailer; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define NO_ROOT_MAILER 1" >>confdefs.h
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define NO_ROOT_MAILER 1" >>confdefs.h
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-root-mailer: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-root-mailer: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-root-mailer: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-root-mailer: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check whether --enable-setreuid was given.
-if test "${enable_setreuid+set}" = set; then :
+if test ${enable_setreuid+y}
+then :
enableval=$enable_setreuid; case "$enableval" in
no) SKIP_SETREUID=yes
;;
@@ -6203,7 +6581,8 @@ fi
# Check whether --enable-setresuid was given.
-if test "${enable_setresuid+set}" = set; then :
+if test ${enable_setresuid+y}
+then :
enableval=$enable_setresuid; case "$enableval" in
no) SKIP_SETRESUID=yes
;;
@@ -6213,262 +6592,273 @@ if test "${enable_setresuid+set}" = set; then :
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable shadow password support" >&5
-$as_echo_n "checking whether to disable shadow password support... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to disable shadow password support" >&5
+printf %s "checking whether to disable shadow password support... " >&6; }
# Check whether --enable-shadow was given.
-if test "${enable_shadow+set}" = set; then :
+if test ${enable_shadow+y}
+then :
enableval=$enable_shadow; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CHECKSHADOW="false"
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-shadow: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-shadow: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-shadow: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-shadow: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether root should be allowed to use sudo" >&5
-$as_echo_n "checking whether root should be allowed to use sudo... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether root should be allowed to use sudo" >&5
+printf %s "checking whether root should be allowed to use sudo... " >&6; }
# Check whether --enable-root-sudo was given.
-if test "${enable_root_sudo+set}" = set; then :
+if test ${enable_root_sudo+y}
+then :
enableval=$enable_root_sudo; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
- no) $as_echo "#define NO_ROOT_SUDO 1" >>confdefs.h
+ no) printf "%s\n" "#define NO_ROOT_SUDO 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
root_sudo=off
;;
*) as_fn_error $? "\"--enable-root-sudo does not take an argument.\"" "$LINENO" 5
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to log the hostname in the log file" >&5
-$as_echo_n "checking whether to log the hostname in the log file... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to log the hostname in the log file" >&5
+printf %s "checking whether to log the hostname in the log file... " >&6; }
# Check whether --enable-log-host was given.
-if test "${enable_log_host+set}" = set; then :
+if test ${enable_log_host+y}
+then :
enableval=$enable_log_host; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define HOST_IN_LOG 1" >>confdefs.h
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define HOST_IN_LOG 1" >>confdefs.h
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-log-host: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-log-host: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-log-host: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-log-host: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to invoke a shell if sudo is given no arguments" >&5
-$as_echo_n "checking whether to invoke a shell if sudo is given no arguments... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to invoke a shell if sudo is given no arguments" >&5
+printf %s "checking whether to invoke a shell if sudo is given no arguments... " >&6; }
# Check whether --enable-noargs-shell was given.
-if test "${enable_noargs_shell+set}" = set; then :
+if test ${enable_noargs_shell+y}
+then :
enableval=$enable_noargs_shell; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define SHELL_IF_NO_ARGS 1" >>confdefs.h
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define SHELL_IF_NO_ARGS 1" >>confdefs.h
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-noargs-shell: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-noargs-shell: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-noargs-shell: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-noargs-shell: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to set \$HOME to target user in shell mode" >&5
-$as_echo_n "checking whether to set \$HOME to target user in shell mode... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to set \$HOME to target user in shell mode" >&5
+printf %s "checking whether to set \$HOME to target user in shell mode... " >&6; }
# Check whether --enable-shell-sets-home was given.
-if test "${enable_shell_sets_home+set}" = set; then :
+if test ${enable_shell_sets_home+y}
+then :
enableval=$enable_shell_sets_home; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define SHELL_SETS_HOME 1" >>confdefs.h
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define SHELL_SETS_HOME 1" >>confdefs.h
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-shell-sets-home: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-shell-sets-home: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-shell-sets-home: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-shell-sets-home: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable 'command not found' messages" >&5
-$as_echo_n "checking whether to disable 'command not found' messages... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to disable 'command not found' messages" >&5
+printf %s "checking whether to disable 'command not found' messages... " >&6; }
# Check whether --enable-path_info was given.
-if test "${enable_path_info+set}" = set; then :
+if test ${enable_path_info+y}
+then :
enableval=$enable_path_info; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define DONT_LEAK_PATH_INFO 1" >>confdefs.h
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define DONT_LEAK_PATH_INFO 1" >>confdefs.h
path_info=off
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-path-info: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-path-info: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-path-info: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-path-info: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable environment debugging" >&5
-$as_echo_n "checking whether to enable environment debugging... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable environment debugging" >&5
+printf %s "checking whether to enable environment debugging... " >&6; }
# Check whether --enable-env_debug was given.
-if test "${enable_env_debug+set}" = set; then :
+if test ${enable_env_debug+y}
+then :
enableval=$enable_env_debug; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define ENV_DEBUG 1" >>confdefs.h
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define ENV_DEBUG 1" >>confdefs.h
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-env-debug: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-env-debug: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-env-debug: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-env-debug: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Check whether --enable-zlib was given.
-if test "${enable_zlib+set}" = set; then :
+if test ${enable_zlib+y}
+then :
enableval=$enable_zlib;
-else
+else $as_nop
enable_zlib=yes
fi
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -DZLIB_CONST "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -DZLIB_CONST"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -DZLIB_CONST"; } >&5
(: CPPFLAGS already contains -DZLIB_CONST) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -DZLIB_CONST"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-DZLIB_CONST
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable environment resetting by default" >&5
-$as_echo_n "checking whether to enable environment resetting by default... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to enable environment resetting by default" >&5
+printf %s "checking whether to enable environment resetting by default... " >&6; }
# Check whether --enable-env_reset was given.
-if test "${enable_env_reset+set}" = set; then :
+if test ${enable_env_reset+y}
+then :
enableval=$enable_env_reset; case "$enableval" in
yes) env_reset=on
;;
no) env_reset=off
;;
*) env_reset=on
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-env-reset: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-env-reset: $enableval" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-env-reset: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-env-reset: $enableval" >&2;}
;;
esac
fi
if test "$env_reset" = "on"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define ENV_RESET 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define ENV_RESET 1" >>confdefs.h
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- $as_echo "#define ENV_RESET 0" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ printf "%s\n" "#define ENV_RESET 0" >>confdefs.h
fi
# Check whether --enable-warnings was given.
-if test "${enable_warnings+set}" = set; then :
+if test ${enable_warnings+y}
+then :
enableval=$enable_warnings; case "$enableval" in
yes) ;;
no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-warnings: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-warnings: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-warnings: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-warnings: $enableval" >&2;}
;;
esac
@@ -6476,12 +6866,13 @@ fi
# Check whether --enable-werror was given.
-if test "${enable_werror+set}" = set; then :
+if test ${enable_werror+y}
+then :
enableval=$enable_werror; case "$enableval" in
yes) ;;
no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-werror: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-werror: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-werror: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-werror: $enableval" >&2;}
;;
esac
@@ -6489,58 +6880,137 @@ fi
# Check whether --enable-openssl was given.
-if test "${enable_openssl+set}" = set; then :
+if test ${enable_openssl+y}
+then :
enableval=$enable_openssl;
fi
# Check whether --enable-gcrypt was given.
-if test "${enable_gcrypt+set}" = set; then :
+if test ${enable_gcrypt+y}
+then :
enableval=$enable_gcrypt;
if test "${enable_openssl-no}" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring --enable-gcrypt when OpenSSL is enabled." >&5
-$as_echo "$as_me: WARNING: Ignoring --enable-gcrypt when OpenSSL is enabled." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring --enable-gcrypt when OpenSSL is enabled." >&5
+printf "%s\n" "$as_me: WARNING: Ignoring --enable-gcrypt when OpenSSL is enabled." >&2;}
enable_gcrypt=no
fi
fi
+# Check whether --enable-ssp was given.
+if test ${enable_ssp+y}
+then :
+ enableval=$enable_ssp;
+else $as_nop
+ enable_ssp=yes
+fi
+
+
# Check whether --enable-hardening was given.
-if test "${enable_hardening+set}" = set; then :
+if test ${enable_hardening+y}
+then :
enableval=$enable_hardening;
-else
+else $as_nop
enable_hardening=yes
fi
# Check whether --enable-pie was given.
-if test "${enable_pie+set}" = set; then :
+if test ${enable_pie+y}
+then :
enableval=$enable_pie;
fi
-# Check whether --enable-asan was given.
-if test "${enable_asan+set}" = set; then :
- enableval=$enable_asan;
+# Check whether --enable-sanitizer was given.
+if test ${enable_sanitizer+y}
+then :
+ enableval=$enable_sanitizer;
+if test X"$enable_sanitizer" = X"yes"; then
+ enable_sanitizer="-fsanitize=address,undefined"
+fi
+
+else $as_nop
+ enable_sanitizer=no
+fi
+
+
+# Check whether --enable-fuzzer was given.
+if test ${enable_fuzzer+y}
+then :
+ enableval=$enable_fuzzer;
+else $as_nop
+ enable_fuzzer=no
+fi
+
+
+# Check whether --enable-fuzzer-engine was given.
+if test ${enable_fuzzer_engine+y}
+then :
+ enableval=$enable_fuzzer_engine; case "$enableval" in
+ yes) as_fn_error $? "\"must give --enable-fuzzer-engine an argument.\"" "$LINENO" 5
+ ;;
+ no) ;;
+ *) FUZZ_ENGINE="$enableval"
+ ;;
+ esac
+
+fi
+
+
+# Check whether --enable-fuzzer-linker was given.
+if test ${enable_fuzzer_linker+y}
+then :
+ enableval=$enable_fuzzer_linker; case "$enableval" in
+ yes) as_fn_error $? "\"must give --enable-fuzzer-linker an argument.\"" "$LINENO" 5
+ ;;
+ no) ;;
+ *) FUZZ_LD="$enableval"
+ ;;
+ esac
+
+fi
+
+
+# Check whether --enable-leaks was given.
+if test ${enable_leaks+y}
+then :
+ enableval=$enable_leaks; case "$enableval" in
+ yes) ;;
+ no) printf "%s\n" "#define NO_LEAKS 1" >>confdefs.h
+
+ ;;
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --disable-leaks: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --disable-leaks: $enableval" >&2;}
+ ;;
+ esac
+
fi
# Check whether --enable-poll was given.
-if test "${enable_poll+set}" = set; then :
+if test ${enable_poll+y}
+then :
enableval=$enable_poll;
fi
# Check whether --enable-admin-flag was given.
-if test "${enable_admin_flag+set}" = set; then :
+if test ${enable_admin_flag+y}
+then :
enableval=$enable_admin_flag; case "$enableval" in
- yes) $as_echo "#define USE_ADMIN_FLAG 1" >>confdefs.h
+ yes) cat >>confdefs.h <<EOF
+#define _PATH_SUDO_ADMIN_FLAG "~/.sudo_as_admin_successful"
+EOF
;;
no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-admin-flag: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-admin-flag: $enableval" >&2;}
+ *) cat >>confdefs.h <<EOF
+#define _PATH_SUDO_ADMIN_FLAG "$enableval"
+EOF
+
;;
esac
@@ -6548,39 +7018,44 @@ fi
# Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
+if test ${enable_nls+y}
+then :
enableval=$enable_nls;
-else
+else $as_nop
enable_nls=yes
fi
# Check whether --enable-rpath was given.
-if test "${enable_rpath+set}" = set; then :
+if test ${enable_rpath+y}
+then :
enableval=$enable_rpath;
-else
+else $as_nop
enable_rpath=yes
fi
# Check whether --enable-static-sudoers was given.
-if test "${enable_static_sudoers+set}" = set; then :
+if test ${enable_static_sudoers+y}
+then :
enableval=$enable_static_sudoers;
-else
+else $as_nop
enable_static_sudoers=no
fi
# Check whether --enable-shared_libutil was given.
-if test "${enable_shared_libutil+set}" = set; then :
+if test ${enable_shared_libutil+y}
+then :
enableval=$enable_shared_libutil;
-else
+else $as_nop
enable_shared_libutil=yes
fi
# Check whether --enable-tmpfiles.d was given.
-if test "${enable_tmpfiles_d+set}" = set; then :
+if test ${enable_tmpfiles_d+y}
+then :
enableval=$enable_tmpfiles_d; case $enableval in
yes) TMPFILES_D=/usr/lib/tmpfiles.d
;;
@@ -6588,7 +7063,7 @@ if test "${enable_tmpfiles_d+set}" = set; then :
;;
*) TMPFILES_D="$enableval"
esac
-else
+else $as_nop
test -f /usr/lib/tmpfiles.d/systemd.conf && TMPFILES_D=/usr/lib/tmpfiles.d
@@ -6596,12 +7071,13 @@ fi
# Check whether --enable-devsearch was given.
-if test "${enable_devsearch+set}" = set; then :
+if test ${enable_devsearch+y}
+then :
enableval=$enable_devsearch; case $enableval in
yes) # use default value
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring attempt to disable the device search path" >&5
-$as_echo "$as_me: WARNING: Ignoring attempt to disable the device search path" >&2;}
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring attempt to disable the device search path" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring attempt to disable the device search path" >&2;}
;;
*) devsearch="$enableval"
;;
@@ -6616,20 +7092,22 @@ EOF
# Check whether --with-selinux was given.
-if test "${with_selinux+set}" = set; then :
+if test ${with_selinux+y}
+then :
withval=$with_selinux; case $with_selinux in
yes) SELINUX_USAGE="[-r role] [-t type] "
- $as_echo "#define HAVE_SELINUX 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SELINUX 1" >>confdefs.h
SUDO_LIBS="${SUDO_LIBS} -lselinux"
SUDO_OBJS="${SUDO_OBJS} selinux.o"
PROGS="${PROGS} sesh"
SEMAN=1
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setkeycreatecon in -lselinux" >&5
-$as_echo_n "checking for setkeycreatecon in -lselinux... " >&6; }
-if ${ac_cv_lib_selinux_setkeycreatecon+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setkeycreatecon in -lselinux" >&5
+printf %s "checking for setkeycreatecon in -lselinux... " >&6; }
+if test ${ac_cv_lib_selinux_setkeycreatecon+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lselinux $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -6638,31 +7116,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 setkeycreatecon ();
int
-main ()
+main (void)
{
return setkeycreatecon ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_selinux_setkeycreatecon=yes
-else
+else $as_nop
ac_cv_lib_selinux_setkeycreatecon=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_setkeycreatecon" >&5
-$as_echo "$ac_cv_lib_selinux_setkeycreatecon" >&6; }
-if test "x$ac_cv_lib_selinux_setkeycreatecon" = xyes; then :
- $as_echo "#define HAVE_SETKEYCREATECON 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_setkeycreatecon" >&5
+printf "%s\n" "$ac_cv_lib_selinux_setkeycreatecon" >&6; }
+if test "x$ac_cv_lib_selinux_setkeycreatecon" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETKEYCREATECON 1" >>confdefs.h
fi
@@ -6671,17 +7148,18 @@ fi
*) as_fn_error $? "\"--with-selinux does not take an argument.\"" "$LINENO" 5
;;
esac
-else
+else $as_nop
with_selinux=no
fi
# Check whether --enable-sasl was given.
-if test "${enable_sasl+set}" = set; then :
+if test ${enable_sasl+y}
+then :
enableval=$enable_sasl; case "$enableval" in
yes|no) ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-sasl: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-sasl: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-sasl: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-sasl: $enableval" >&2;}
;;
esac
@@ -6689,59 +7167,63 @@ fi
# Check whether --enable-timestamp-type was given.
-if test "${enable_timestamp_type+set}" = set; then :
+if test ${enable_timestamp_type+y}
+then :
enableval=$enable_timestamp_type; case "$enableval" in
global|ppid|tty)
timestamp_type=$enableval
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-timestamp-type: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-timestamp-type: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-timestamp-type: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-timestamp-type: $enableval" >&2;}
;;
esac
fi
-cat >>confdefs.h <<_ACEOF
-#define TIMESTAMP_TYPE $timestamp_type
-_ACEOF
+printf "%s\n" "#define TIMESTAMP_TYPE $timestamp_type" >>confdefs.h
# Check whether --enable-offensive_insults was given.
-if test "${enable_offensive_insults+set}" = set; then :
+if test ${enable_offensive_insults+y}
+then :
enableval=$enable_offensive_insults;
-else
+else $as_nop
enable_offensive_insults=no
fi
if test "$enable_offensive_insults" = "yes"; then
- $as_echo "#define OFFENSIVE_INSULTS 1" >>confdefs.h
+ printf "%s\n" "#define OFFENSIVE_INSULTS 1" >>confdefs.h
fi
# Check whether --enable-package_build was given.
-if test "${enable_package_build+set}" = set; then :
+if test ${enable_package_build+y}
+then :
enableval=$enable_package_build;
-else
+else $as_nop
enable_package_build=no
fi
# Check whether --enable-gss_krb5_ccache_name was given.
-if test "${enable_gss_krb5_ccache_name+set}" = set; then :
+if test ${enable_gss_krb5_ccache_name+y}
+then :
enableval=$enable_gss_krb5_ccache_name; check_gss_krb5_ccache_name=$enableval
-else
+else $as_nop
check_gss_krb5_ccache_name=no
fi
# Check whether --enable-pvs-studio was given.
-if test "${enable_pvs_studio+set}" = set; then :
+if test ${enable_pvs_studio+y}
+then :
enableval=$enable_pvs_studio;
fi
# Check whether --enable-log-server was given.
-if test "${enable_log_server+set}" = set; then :
+if test ${enable_log_server+y}
+then :
enableval=$enable_log_server; case "$enableval" in
yes)
;;
@@ -6750,8 +7232,8 @@ if test "${enable_log_server+set}" = set; then :
LOGSRVD_SRC=
LOGSRVD_CONF=
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-log-server: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-log-server: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-log-server: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-log-server: $enableval" >&2;}
;;
esac
@@ -6759,21 +7241,22 @@ fi
# Check whether --enable-log-client was given.
-if test "${enable_log_client+set}" = set; then :
+if test ${enable_log_client+y}
+then :
enableval=$enable_log_client; case "$enableval" in
yes)
- $as_echo "#define SUDOERS_LOG_CLIENT 1" >>confdefs.h
+ printf "%s\n" "#define SUDOERS_LOG_CLIENT 1" >>confdefs.h
;;
no)
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-log-client: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-log-client: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-log-client: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-log-client: $enableval" >&2;}
;;
esac
-else
- $as_echo "#define SUDOERS_LOG_CLIENT 1" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define SUDOERS_LOG_CLIENT 1" >>confdefs.h
fi
@@ -6792,40 +7275,36 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
-$as_echo_n "checking how to run the C preprocessor... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5
+printf %s "checking how to run the C preprocessor... " >&6; }
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
fi
if test -z "$CPP"; then
- if ${ac_cv_prog_CPP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- # Double quotes because CPP needs to be expanded
- for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ if test ${ac_cv_prog_CPP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ # Double quotes because $CC needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp
do
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
@@ -6837,10 +7316,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
@@ -6850,7 +7330,8 @@ rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
break
fi
@@ -6862,29 +7343,24 @@ fi
else
ac_cv_prog_CPP=$CPP
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
-$as_echo "$CPP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5
+printf "%s\n" "$CPP" >&6; }
ac_preproc_ok=false
for ac_c_preproc_warn_flag in '' yes
do
# Use a header file that comes with gcc, so configuring glibc
# with a fresh cross-compiler works.
- # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
- # <limits.h> exists even on freestanding compilers.
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp. "Syntax error" is here to catch this case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+#include <limits.h>
Syntax error
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
-else
+else $as_nop
# Broken: fails on valid input.
continue
fi
@@ -6896,10 +7372,11 @@ rm -f conftest.err conftest.i conftest.$ac_ext
/* end confdefs.h. */
#include <ac_nonexistent.h>
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
# Broken: success on invalid input.
continue
-else
+else $as_nop
# Passes both tests.
ac_preproc_ok=:
break
@@ -6909,11 +7386,12 @@ rm -f conftest.err conftest.i conftest.$ac_ext
done
# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
rm -f conftest.i conftest.err conftest.$ac_ext
-if $ac_preproc_ok; then :
+if $ac_preproc_ok
+then :
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+else $as_nop
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
See \`config.log' for more details" "$LINENO" 5; }
fi
@@ -6927,11 +7405,12 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
@@ -6939,11 +7418,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="${ac_tool_prefix}ar"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6954,11 +7437,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -6967,11 +7450,12 @@ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
@@ -6979,11 +7463,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="ar"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -6994,11 +7482,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_AR" = x; then
@@ -7006,8 +7494,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
@@ -7019,11 +7507,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
@@ -7031,11 +7520,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7046,11 +7539,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+printf "%s\n" "$RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7059,11 +7552,12 @@ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
@@ -7071,11 +7565,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7086,11 +7584,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+printf "%s\n" "$ac_ct_RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
@@ -7098,8 +7596,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
@@ -7117,60 +7615,35 @@ if test "x$ac_cv_prog_cc_c89" = "xno"; then
fi
if test "$enable_static" = "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring --disable-static, sudo does not install static libs" >&5
-$as_echo "$as_me: WARNING: Ignoring --disable-static, sudo does not install static libs" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring --disable-static, sudo does not install static libs" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring --disable-static, sudo does not install static libs" >&2;}
enable_static=yes
fi
-ac_aux_dir=
-for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
- if test -f "$ac_dir/install-sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install-sh -c"
- break
- elif test -f "$ac_dir/install.sh"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/install.sh -c"
- break
- elif test -f "$ac_dir/shtool"; then
- ac_aux_dir=$ac_dir
- ac_install_sh="$ac_aux_dir/shtool install -c"
- break
- fi
-done
-if test -z "$ac_aux_dir"; then
- as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5
-fi
-# These three variables are undocumented and unsupported,
-# and are intended to be withdrawn in a future Autoconf release.
-# They can cause serious problems if a builder's source tree is in a directory
-# whose full name contains unusual characters.
-ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var.
-ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var.
-ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
-# 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
+ # 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5
+printf %s "checking build system type... " >&6; }
+if test ${ac_cv_build+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_build_alias=$build_alias
test "x$ac_build_alias" = x &&
- ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"`
+ ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"`
test "x$ac_build_alias" = x &&
as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5
-ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5
+ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
-$as_echo "$ac_cv_build" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5
+printf "%s\n" "$ac_cv_build" >&6; }
case $ac_cv_build in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;;
@@ -7189,21 +7662,22 @@ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5
+printf %s "checking host system type... " >&6; }
+if test ${ac_cv_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$host_alias" = x; then
ac_cv_host=$ac_cv_build
else
- ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` ||
- as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
+ ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` ||
+ as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
-$as_echo "$ac_cv_host" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5
+printf "%s\n" "$ac_cv_host" >&6; }
case $ac_cv_host in
*-*-*) ;;
*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;;
@@ -7227,33 +7701,34 @@ case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
case "$host_os" in
aix4.[23]|aix4.[23].*|aix[5-9]*)
-if ${LDFLAGS+:} false; then :
+if test ${LDFLAGS+y}
+then :
case " $LDFLAGS " in #(
*" -Wl,-brtl "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,-brtl"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,-brtl"; } >&5
(: LDFLAGS already contains -Wl,-brtl) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS " -Wl,-brtl"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS=-Wl,-brtl
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -7270,10 +7745,11 @@ hiuxmpp*|hpux11.1[1-9]|hpux11.[2-9][0-9]|hpux1[2-9].*)
esac
+
case `pwd` in
*\ * | *\ *)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+printf "%s\n" "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
esac
@@ -7293,6 +7769,7 @@ macro_revision='2.4.6'
+
ltmain=$ac_aux_dir/ltmain.sh
# Backslashify metacharacters that are still active within
@@ -7316,8 +7793,8 @@ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+printf %s "checking how to print strings... " >&6; }
# Test print first, because it will be a builtin if present.
if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
@@ -7343,12 +7820,12 @@ func_echo_all ()
}
case $ECHO in
- printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
- print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
+ printf*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+printf "%s\n" "printf" >&6; } ;;
+ print*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+printf "%s\n" "print -r" >&6; } ;;
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+printf "%s\n" "cat" >&6; } ;;
esac
@@ -7364,11 +7841,12 @@ esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+printf %s "checking for a sed that does not truncate output... " >&6; }
+if test ${ac_cv_path_SED+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
for ac_i in 1 2 3 4 5 6 7; do
ac_script="$ac_script$as_nl$ac_script"
@@ -7382,10 +7860,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in sed gsed; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in sed gsed
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_SED="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_SED" || continue
# Check for GNU ac_path_SED and select it if it is found.
# Check for GNU $ac_path_SED
@@ -7394,13 +7877,13 @@ case `"$ac_path_SED" --version 2>&1` in
ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo '' >> "conftest.nl"
+ printf "%s\n" '' >> "conftest.nl"
"$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -7428,8 +7911,8 @@ else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+printf "%s\n" "$ac_cv_path_SED" >&6; }
SED="$ac_cv_path_SED"
rm -f conftest.sed
@@ -7446,11 +7929,154 @@ Xsed="$SED -e 1s/^X//"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
- $as_echo_n "(cached) " >&6
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+printf %s "checking for grep that handles long lines and -e... " >&6; }
+if test ${ac_cv_path_GREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test -z "$GREP"; then
+ ac_path_GREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in grep ggrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_GREP" || continue
+# Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+case `"$ac_path_GREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'GREP' >> "conftest.nl"
+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_GREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_GREP="$ac_path_GREP"
+ ac_path_GREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_GREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_GREP"; then
+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+printf "%s\n" "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+printf %s "checking for egrep... " >&6; }
+if test ${ac_cv_path_EGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ if test -z "$EGREP"; then
+ ac_path_EGREP_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
+ IFS=$as_save_IFS
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in egrep
+ do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_EGREP" || continue
+# Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+case `"$ac_path_EGREP" --version 2>&1` in
+*GNU*)
+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+ ac_count=0
+ printf %s 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ printf "%s\n" 'EGREP' >> "conftest.nl"
+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_EGREP="$ac_path_EGREP"
+ ac_path_EGREP_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_EGREP_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_EGREP"; then
+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+ fi
else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+ fi
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+printf "%s\n" "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+printf %s "checking for fgrep... " >&6; }
+if test ${ac_cv_path_FGREP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
then ac_cv_path_FGREP="$GREP -F"
else
@@ -7461,10 +8087,15 @@ else
for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in fgrep; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in fgrep
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_FGREP="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_FGREP" || continue
# Check for GNU ac_path_FGREP and select it if it is found.
# Check for GNU $ac_path_FGREP
@@ -7473,13 +8104,13 @@ case `"$ac_path_FGREP" --version 2>&1` in
ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
*)
ac_count=0
- $as_echo_n 0123456789 >"conftest.in"
+ printf %s 0123456789 >"conftest.in"
while :
do
cat "conftest.in" "conftest.in" >"conftest.tmp"
mv "conftest.tmp" "conftest.in"
cp "conftest.in" "conftest.nl"
- $as_echo 'FGREP' >> "conftest.nl"
+ printf "%s\n" 'FGREP' >> "conftest.nl"
"$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
as_fn_arith $ac_count + 1 && ac_count=$as_val
@@ -7508,8 +8139,8 @@ fi
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+printf "%s\n" "$ac_cv_path_FGREP" >&6; }
FGREP="$ac_cv_path_FGREP"
@@ -7534,17 +8165,18 @@ test -z "$GREP" && GREP=grep
# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
+if test ${with_gnu_ld+y}
+then :
withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes
-else
+else $as_nop
with_gnu_ld=no
fi
ac_prog=ld
if test yes = "$GCC"; then
# Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+printf %s "checking for ld used by $CC... " >&6; }
case $host in
*-*-mingw*)
# gcc leaves a trailing carriage return, which upsets mingw
@@ -7573,15 +8205,16 @@ $as_echo_n "checking for ld used by $CC... " >&6; }
;;
esac
elif test yes = "$with_gnu_ld"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+printf %s "checking for GNU ld... " >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+printf %s "checking for non-GNU ld... " >&6; }
fi
-if ${lt_cv_path_LD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test ${lt_cv_path_LD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -z "$LD"; then
lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR
for ac_dir in $PATH; do
@@ -7610,18 +8243,19 @@ fi
LD=$lt_cv_path_LD
if test -n "$LD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+printf "%s\n" "$LD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+printf %s "checking if the linker ($LD) is GNU ld... " >&6; }
+if test ${lt_cv_prog_gnu_ld+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# I'd rather use --version here, but apparently some GNU lds only accept -v.
case `$LD -v 2>&1 </dev/null` in
*GNU* | *'with BFD'*)
@@ -7632,8 +8266,8 @@ case `$LD -v 2>&1 </dev/null` in
;;
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+printf "%s\n" "$lt_cv_prog_gnu_ld" >&6; }
with_gnu_ld=$lt_cv_prog_gnu_ld
@@ -7644,11 +8278,12 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+printf %s "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if test ${lt_cv_path_NM+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$NM"; then
# Let the user override the test.
lt_cv_path_NM=$NM
@@ -7698,8 +8333,8 @@ else
: ${lt_cv_path_NM=no}
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+printf "%s\n" "$lt_cv_path_NM" >&6; }
if test no != "$lt_cv_path_NM"; then
NM=$lt_cv_path_NM
else
@@ -7712,11 +8347,12 @@ else
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DUMPBIN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DUMPBIN"; then
ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
else
@@ -7724,11 +8360,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7739,11 +8379,11 @@ fi
fi
DUMPBIN=$ac_cv_prog_DUMPBIN
if test -n "$DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+printf "%s\n" "$DUMPBIN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7756,11 +8396,12 @@ if test -z "$DUMPBIN"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DUMPBIN+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DUMPBIN"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
else
@@ -7768,11 +8409,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -7783,11 +8428,11 @@ fi
fi
ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
if test -n "$ac_ct_DUMPBIN"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+printf "%s\n" "$ac_ct_DUMPBIN" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -7799,8 +8444,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DUMPBIN=$ac_ct_DUMPBIN
@@ -7828,11 +8473,12 @@ test -z "$NM" && NM=nm
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+printf %s "checking the name lister ($NM) interface... " >&6; }
+if test ${lt_cv_nm_interface+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_nm_interface="BSD nm"
echo "int some_variable = 0;" > conftest.$ac_ext
(eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
@@ -7848,26 +8494,27 @@ else
fi
rm -f conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+printf "%s\n" "$lt_cv_nm_interface" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+printf %s "checking whether ln -s works... " >&6; }
LN_S=$as_ln_s
if test "$LN_S" = "ln -s"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+printf "%s\n" "no, using $LN_S" >&6; }
fi
# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+printf %s "checking the maximum length of command line arguments... " >&6; }
+if test ${lt_cv_sys_max_cmd_len+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
i=0
teststring=ABCD
@@ -7994,11 +8641,11 @@ else
fi
if test -n "$lt_cv_sys_max_cmd_len"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+printf "%s\n" "$lt_cv_sys_max_cmd_len" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none" >&5
+printf "%s\n" "none" >&6; }
fi
max_cmd_len=$lt_cv_sys_max_cmd_len
@@ -8042,11 +8689,12 @@ esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+printf %s "checking how to convert $build file names to $host format... " >&6; }
+if test ${lt_cv_to_host_file_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $host in
*-*-mingw* )
case $build in
@@ -8082,18 +8730,19 @@ esac
fi
to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_host_file_cmd" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+printf %s "checking how to convert $build file names to toolchain format... " >&6; }
+if test ${lt_cv_to_tool_file_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
#assume ordinary cross tools, or native build.
lt_cv_to_tool_file_cmd=func_convert_file_noop
case $host in
@@ -8109,22 +8758,23 @@ esac
fi
to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+printf "%s\n" "$lt_cv_to_tool_file_cmd" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+printf %s "checking for $LD option to reload object files... " >&6; }
+if test ${lt_cv_ld_reload_flag+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_reload_flag='-r'
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+printf "%s\n" "$lt_cv_ld_reload_flag" >&6; }
reload_flag=$lt_cv_ld_reload_flag
case $reload_flag in
"" | " "*) ;;
@@ -8157,11 +8807,12 @@ esac
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
set dummy ${ac_tool_prefix}objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OBJDUMP"; then
ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
else
@@ -8169,11 +8820,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8184,11 +8839,11 @@ fi
fi
OBJDUMP=$ac_cv_prog_OBJDUMP
if test -n "$OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+printf "%s\n" "$OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8197,11 +8852,12 @@ if test -z "$ac_cv_prog_OBJDUMP"; then
ac_ct_OBJDUMP=$OBJDUMP
# Extract the first word of "objdump", so it can be a program name with args.
set dummy objdump; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OBJDUMP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OBJDUMP"; then
ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
else
@@ -8209,11 +8865,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OBJDUMP="objdump"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8224,11 +8884,11 @@ fi
fi
ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
if test -n "$ac_ct_OBJDUMP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+printf "%s\n" "$ac_ct_OBJDUMP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OBJDUMP" = x; then
@@ -8236,8 +8896,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OBJDUMP=$ac_ct_OBJDUMP
@@ -8256,11 +8916,12 @@ test -z "$OBJDUMP" && OBJDUMP=objdump
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+printf %s "checking how to recognize dependent libraries... " >&6; }
+if test ${lt_cv_deplibs_check_method+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
lt_cv_deplibs_check_method='unknown'
@@ -8442,8 +9103,8 @@ os2*)
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+printf "%s\n" "$lt_cv_deplibs_check_method" >&6; }
file_magic_glob=
want_nocaseglob=no
@@ -8487,11 +9148,12 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
set dummy ${ac_tool_prefix}dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DLLTOOL"; then
ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
else
@@ -8499,11 +9161,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8514,11 +9180,11 @@ fi
fi
DLLTOOL=$ac_cv_prog_DLLTOOL
if test -n "$DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+printf "%s\n" "$DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8527,11 +9193,12 @@ if test -z "$ac_cv_prog_DLLTOOL"; then
ac_ct_DLLTOOL=$DLLTOOL
# Extract the first word of "dlltool", so it can be a program name with args.
set dummy dlltool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DLLTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DLLTOOL"; then
ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
else
@@ -8539,11 +9206,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DLLTOOL="dlltool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8554,11 +9225,11 @@ fi
fi
ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
if test -n "$ac_ct_DLLTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+printf "%s\n" "$ac_ct_DLLTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DLLTOOL" = x; then
@@ -8566,8 +9237,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DLLTOOL=$ac_ct_DLLTOOL
@@ -8587,11 +9258,12 @@ test -z "$DLLTOOL" && DLLTOOL=dlltool
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+printf %s "checking how to associate runtime and link libraries... " >&6; }
+if test ${lt_cv_sharedlib_from_linklib_cmd+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_sharedlib_from_linklib_cmd='unknown'
case $host_os in
@@ -8614,8 +9286,8 @@ cygwin* | mingw* | pw32* | cegcc*)
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+printf "%s\n" "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
@@ -8630,11 +9302,12 @@ if test -n "$ac_tool_prefix"; then
do
# Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AR"; then
ac_cv_prog_AR="$AR" # Let the user override the test.
else
@@ -8642,11 +9315,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8657,11 +9334,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+printf "%s\n" "$AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8674,11 +9351,12 @@ if test -z "$AR"; then
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_AR+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_AR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_AR"; then
ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
else
@@ -8686,11 +9364,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_AR="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8701,11 +9383,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+printf "%s\n" "$ac_ct_AR" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8717,8 +9399,8 @@ done
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
AR=$ac_ct_AR
@@ -8738,30 +9420,32 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+printf %s "checking for archiver @FILE support... " >&6; }
+if test ${lt_cv_ar_at_file+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ar_at_file=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
echo conftest.$ac_objext > conftest.lst
lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
(eval $lt_ar_try) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if test 0 -eq "$ac_status"; then
# Ensure the archiver fails upon bogus file names.
@@ -8769,7 +9453,7 @@ if ac_fn_c_try_compile "$LINENO"; then :
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
(eval $lt_ar_try) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
if test 0 -ne "$ac_status"; then
lt_cv_ar_at_file=@
@@ -8778,11 +9462,11 @@ if ac_fn_c_try_compile "$LINENO"; then :
rm -f conftest.* libconftest.a
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+printf "%s\n" "$lt_cv_ar_at_file" >&6; }
if test no = "$lt_cv_ar_at_file"; then
archiver_list_spec=
@@ -8799,11 +9483,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$STRIP"; then
ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
else
@@ -8811,11 +9496,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_STRIP="${ac_tool_prefix}strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8826,11 +9515,11 @@ fi
fi
STRIP=$ac_cv_prog_STRIP
if test -n "$STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+printf "%s\n" "$STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8839,11 +9528,12 @@ if test -z "$ac_cv_prog_STRIP"; then
ac_ct_STRIP=$STRIP
# Extract the first word of "strip", so it can be a program name with args.
set dummy strip; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_STRIP+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_STRIP"; then
ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
else
@@ -8851,11 +9541,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_STRIP="strip"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8866,11 +9560,11 @@ fi
fi
ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
if test -n "$ac_ct_STRIP"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+printf "%s\n" "$ac_ct_STRIP" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_STRIP" = x; then
@@ -8878,8 +9572,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
STRIP=$ac_ct_STRIP
@@ -8898,11 +9592,12 @@ test -z "$STRIP" && STRIP=:
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_RANLIB+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
@@ -8910,11 +9605,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8925,11 +9624,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+printf "%s\n" "$RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -8938,11 +9637,12 @@ 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
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_RANLIB+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
@@ -8950,11 +9650,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -8965,11 +9669,11 @@ 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; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+printf "%s\n" "$ac_ct_RANLIB" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
@@ -8977,8 +9681,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
@@ -9042,11 +9746,12 @@ for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
@@ -9054,11 +9759,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -9069,11 +9778,11 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -9109,11 +9818,12 @@ compiler=$CC
# Check for command to grab the raw symbol name followed by C symbol from nm.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
-$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; }
-if ${lt_cv_sys_global_symbol_pipe+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5
+printf %s "checking command to parse $NM output from $compiler object... " >&6; }
+if test ${lt_cv_sys_global_symbol_pipe+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# These are sane defaults that work on at least a few old systems.
# [They come from Ultrix. What could be older than Ultrix?!! ;)]
@@ -9265,14 +9975,14 @@ _LT_EOF
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
# Now try to grab the symbols.
nlist=conftest.nm
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5
(eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s "$nlist"; then
# Try sorting and uniquifying the output.
if sort "$nlist" | uniq > "$nlist"T; then
@@ -9341,7 +10051,7 @@ _LT_EOF
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s conftest$ac_exeext; then
pipe_works=yes
fi
@@ -9376,11 +10086,11 @@ if test -z "$lt_cv_sys_global_symbol_pipe"; then
lt_cv_sys_global_symbol_to_cdecl=
fi
if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5
-$as_echo "failed" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5
+printf "%s\n" "failed" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
-$as_echo "ok" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5
+printf "%s\n" "ok" >&6; }
fi
# Response file support.
@@ -9426,13 +10136,14 @@ fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
-$as_echo_n "checking for sysroot... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5
+printf %s "checking for sysroot... " >&6; }
# Check whether --with-sysroot was given.
-if test "${with_sysroot+set}" = set; then :
+if test ${with_sysroot+y}
+then :
withval=$with_sysroot;
-else
+else $as_nop
with_sysroot=no
fi
@@ -9450,24 +10161,25 @@ case $with_sysroot in #(
no|'')
;; #(
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
-$as_echo "$with_sysroot" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5
+printf "%s\n" "$with_sysroot" >&6; }
as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
-$as_echo "${lt_sysroot:-no}" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5
+printf "%s\n" "${lt_sysroot:-no}" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
-$as_echo_n "checking for a working dd... " >&6; }
-if ${ac_cv_path_lt_DD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5
+printf %s "checking for a working dd... " >&6; }
+if test ${ac_cv_path_lt_DD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
printf 0123456789abcdef0123456789abcdef >conftest.i
cat conftest.i conftest.i >conftest2.i
: ${lt_DD:=$DD}
@@ -9478,10 +10190,15 @@ if test -z "$lt_DD"; then
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_prog in dd; do
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ for ac_prog in dd
+ do
for ac_exec_ext in '' $ac_executable_extensions; do
- ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext"
+ ac_path_lt_DD="$as_dir$ac_prog$ac_exec_ext"
as_fn_executable_p "$ac_path_lt_DD" || continue
if "$ac_path_lt_DD" bs=32 count=1 <conftest2.i >conftest.out 2>/dev/null; then
cmp -s conftest.i conftest.out \
@@ -9501,15 +10218,16 @@ fi
rm -f conftest.i conftest2.i conftest.out
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
-$as_echo "$ac_cv_path_lt_DD" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5
+printf "%s\n" "$ac_cv_path_lt_DD" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
-$as_echo_n "checking how to truncate binary pipes... " >&6; }
-if ${lt_cv_truncate_bin+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5
+printf %s "checking how to truncate binary pipes... " >&6; }
+if test ${lt_cv_truncate_bin+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
printf 0123456789abcdef0123456789abcdef >conftest.i
cat conftest.i conftest.i >conftest2.i
lt_cv_truncate_bin=
@@ -9520,8 +10238,8 @@ fi
rm -f conftest.i conftest2.i conftest.out
test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
-$as_echo "$lt_cv_truncate_bin" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5
+printf "%s\n" "$lt_cv_truncate_bin" >&6; }
@@ -9544,7 +10262,8 @@ func_cc_basename ()
}
# Check whether --enable-libtool-lock was given.
-if test "${enable_libtool_lock+set}" = set; then :
+if test ${enable_libtool_lock+y}
+then :
enableval=$enable_libtool_lock;
fi
@@ -9560,7 +10279,7 @@ ia64-*-hpux*)
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.$ac_objext` in
*ELF-32*)
@@ -9580,7 +10299,7 @@ ia64-*-hpux*)
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
if test yes = "$lt_cv_prog_gnu_ld"; then
case `/usr/bin/file conftest.$ac_objext` in
@@ -9618,7 +10337,7 @@ mips64*-*linux*)
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
emul=elf
case `/usr/bin/file conftest.$ac_objext` in
@@ -9659,7 +10378,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.o` in
*32-bit*)
@@ -9722,11 +10441,12 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
# On SCO OpenServer 5, we need -belf to get full-featured binaries.
SAVE_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -belf"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
-$as_echo_n "checking whether the C compiler needs -belf... " >&6; }
-if ${lt_cv_cc_needs_belf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5
+printf %s "checking whether the C compiler needs -belf... " >&6; }
+if test ${lt_cv_cc_needs_belf+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -9737,19 +10457,20 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_cc_needs_belf=yes
-else
+else $as_nop
lt_cv_cc_needs_belf=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -9758,8 +10479,8 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
-$as_echo "$lt_cv_cc_needs_belf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5
+printf "%s\n" "$lt_cv_cc_needs_belf" >&6; }
if test yes != "$lt_cv_cc_needs_belf"; then
# this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf
CFLAGS=$SAVE_CFLAGS
@@ -9772,7 +10493,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
case `/usr/bin/file conftest.o` in
*64-bit*)
@@ -9809,11 +10530,12 @@ need_locks=$enable_libtool_lock
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args.
set dummy ${ac_tool_prefix}mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_MANIFEST_TOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$MANIFEST_TOOL"; then
ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test.
else
@@ -9821,11 +10543,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -9836,11 +10562,11 @@ fi
fi
MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL
if test -n "$MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
-$as_echo "$MANIFEST_TOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5
+printf "%s\n" "$MANIFEST_TOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -9849,11 +10575,12 @@ if test -z "$ac_cv_prog_MANIFEST_TOOL"; then
ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL
# Extract the first word of "mt", so it can be a program name with args.
set dummy mt; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_MANIFEST_TOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_MANIFEST_TOOL"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test.
else
@@ -9861,11 +10588,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_MANIFEST_TOOL="mt"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -9876,11 +10607,11 @@ fi
fi
ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL
if test -n "$ac_ct_MANIFEST_TOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
-$as_echo "$ac_ct_MANIFEST_TOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5
+printf "%s\n" "$ac_ct_MANIFEST_TOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_MANIFEST_TOOL" = x; then
@@ -9888,8 +10619,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL
@@ -9899,11 +10630,12 @@ else
fi
test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
-$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
-if ${lt_cv_path_mainfest_tool+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5
+printf %s "checking if $MANIFEST_TOOL is a manifest tool... " >&6; }
+if test ${lt_cv_path_mainfest_tool+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_path_mainfest_tool=no
echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5
$MANIFEST_TOOL '-?' 2>conftest.err > conftest.out
@@ -9913,8 +10645,8 @@ else
fi
rm -f conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
-$as_echo "$lt_cv_path_mainfest_tool" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5
+printf "%s\n" "$lt_cv_path_mainfest_tool" >&6; }
if test yes != "$lt_cv_path_mainfest_tool"; then
MANIFEST_TOOL=:
fi
@@ -9929,11 +10661,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_DSYMUTIL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$DSYMUTIL"; then
ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
else
@@ -9941,11 +10674,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -9956,11 +10693,11 @@ fi
fi
DSYMUTIL=$ac_cv_prog_DSYMUTIL
if test -n "$DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
-$as_echo "$DSYMUTIL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5
+printf "%s\n" "$DSYMUTIL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -9969,11 +10706,12 @@ if test -z "$ac_cv_prog_DSYMUTIL"; then
ac_ct_DSYMUTIL=$DSYMUTIL
# Extract the first word of "dsymutil", so it can be a program name with args.
set dummy dsymutil; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_DSYMUTIL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_DSYMUTIL"; then
ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
else
@@ -9981,11 +10719,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -9996,11 +10738,11 @@ fi
fi
ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
if test -n "$ac_ct_DSYMUTIL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
-$as_echo "$ac_ct_DSYMUTIL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5
+printf "%s\n" "$ac_ct_DSYMUTIL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_DSYMUTIL" = x; then
@@ -10008,8 +10750,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
DSYMUTIL=$ac_ct_DSYMUTIL
@@ -10021,11 +10763,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
set dummy ${ac_tool_prefix}nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_NMEDIT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$NMEDIT"; then
ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
else
@@ -10033,11 +10776,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10048,11 +10795,11 @@ fi
fi
NMEDIT=$ac_cv_prog_NMEDIT
if test -n "$NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
-$as_echo "$NMEDIT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5
+printf "%s\n" "$NMEDIT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -10061,11 +10808,12 @@ if test -z "$ac_cv_prog_NMEDIT"; then
ac_ct_NMEDIT=$NMEDIT
# Extract the first word of "nmedit", so it can be a program name with args.
set dummy nmedit; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_NMEDIT+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_NMEDIT"; then
ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
else
@@ -10073,11 +10821,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_NMEDIT="nmedit"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10088,11 +10840,11 @@ fi
fi
ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
if test -n "$ac_ct_NMEDIT"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
-$as_echo "$ac_ct_NMEDIT" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5
+printf "%s\n" "$ac_ct_NMEDIT" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_NMEDIT" = x; then
@@ -10100,8 +10852,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
NMEDIT=$ac_ct_NMEDIT
@@ -10113,11 +10865,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args.
set dummy ${ac_tool_prefix}lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_LIPO+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$LIPO"; then
ac_cv_prog_LIPO="$LIPO" # Let the user override the test.
else
@@ -10125,11 +10878,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_LIPO="${ac_tool_prefix}lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10140,11 +10897,11 @@ fi
fi
LIPO=$ac_cv_prog_LIPO
if test -n "$LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
-$as_echo "$LIPO" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5
+printf "%s\n" "$LIPO" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -10153,11 +10910,12 @@ if test -z "$ac_cv_prog_LIPO"; then
ac_ct_LIPO=$LIPO
# Extract the first word of "lipo", so it can be a program name with args.
set dummy lipo; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_LIPO+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_LIPO+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_LIPO"; then
ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test.
else
@@ -10165,11 +10923,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_LIPO="lipo"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10180,11 +10942,11 @@ fi
fi
ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO
if test -n "$ac_ct_LIPO"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
-$as_echo "$ac_ct_LIPO" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5
+printf "%s\n" "$ac_ct_LIPO" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_LIPO" = x; then
@@ -10192,8 +10954,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
LIPO=$ac_ct_LIPO
@@ -10205,11 +10967,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args.
set dummy ${ac_tool_prefix}otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OTOOL"; then
ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test.
else
@@ -10217,11 +10980,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL="${ac_tool_prefix}otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10232,11 +10999,11 @@ fi
fi
OTOOL=$ac_cv_prog_OTOOL
if test -n "$OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
-$as_echo "$OTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5
+printf "%s\n" "$OTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -10245,11 +11012,12 @@ if test -z "$ac_cv_prog_OTOOL"; then
ac_ct_OTOOL=$OTOOL
# Extract the first word of "otool", so it can be a program name with args.
set dummy otool; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OTOOL"; then
ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test.
else
@@ -10257,11 +11025,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL="otool"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10272,11 +11044,11 @@ fi
fi
ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL
if test -n "$ac_ct_OTOOL"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
-$as_echo "$ac_ct_OTOOL" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5
+printf "%s\n" "$ac_ct_OTOOL" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OTOOL" = x; then
@@ -10284,8 +11056,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OTOOL=$ac_ct_OTOOL
@@ -10297,11 +11069,12 @@ fi
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args.
set dummy ${ac_tool_prefix}otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_OTOOL64+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$OTOOL64"; then
ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test.
else
@@ -10309,11 +11082,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10324,11 +11101,11 @@ fi
fi
OTOOL64=$ac_cv_prog_OTOOL64
if test -n "$OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
-$as_echo "$OTOOL64" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5
+printf "%s\n" "$OTOOL64" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -10337,11 +11114,12 @@ if test -z "$ac_cv_prog_OTOOL64"; then
ac_ct_OTOOL64=$OTOOL64
# Extract the first word of "otool64", so it can be a program name with args.
set dummy otool64; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_ac_ct_OTOOL64+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$ac_ct_OTOOL64"; then
ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test.
else
@@ -10349,11 +11127,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_ac_ct_OTOOL64="otool64"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -10364,11 +11146,11 @@ fi
fi
ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64
if test -n "$ac_ct_OTOOL64"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
-$as_echo "$ac_ct_OTOOL64" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5
+printf "%s\n" "$ac_ct_OTOOL64" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test "x$ac_ct_OTOOL64" = x; then
@@ -10376,8 +11158,8 @@ fi
else
case $cross_compiling:$ac_tool_warned in
yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
OTOOL64=$ac_ct_OTOOL64
@@ -10412,11 +11194,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
-$as_echo_n "checking for -single_module linker flag... " >&6; }
-if ${lt_cv_apple_cc_single_mod+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5
+printf %s "checking for -single_module linker flag... " >&6; }
+if test ${lt_cv_apple_cc_single_mod+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_apple_cc_single_mod=no
if test -z "$LT_MULTI_MODULE"; then
# By default we will add the -single_module flag. You can override
@@ -10445,14 +11228,15 @@ else
rm -f conftest.*
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
-$as_echo "$lt_cv_apple_cc_single_mod" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+printf "%s\n" "$lt_cv_apple_cc_single_mod" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
-$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
-if ${lt_cv_ld_exported_symbols_list+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+printf %s "checking for -exported_symbols_list linker flag... " >&6; }
+if test ${lt_cv_ld_exported_symbols_list+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_exported_symbols_list=no
save_LDFLAGS=$LDFLAGS
echo "_main" > conftest.sym
@@ -10461,31 +11245,33 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_ld_exported_symbols_list=yes
-else
+else $as_nop
lt_cv_ld_exported_symbols_list=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
-$as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+printf "%s\n" "$lt_cv_ld_exported_symbols_list" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
-$as_echo_n "checking for -force_load linker flag... " >&6; }
-if ${lt_cv_ld_force_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+printf %s "checking for -force_load linker flag... " >&6; }
+if test ${lt_cv_ld_force_load+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ld_force_load=no
cat > conftest.c << _LT_EOF
int forced_loaded() { return 2;}
@@ -10513,8 +11299,8 @@ _LT_EOF
rm -rf conftest.dSYM
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
-$as_echo "$lt_cv_ld_force_load" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5
+printf "%s\n" "$lt_cv_ld_force_load" >&6; }
case $host_os in
rhapsody* | darwin1.[012])
_lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;;
@@ -10585,19 +11371,14 @@ func_munge_path_list ()
esac
}
-for ac_header in dlfcn.h
-do :
- ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
+ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default
"
-if test "x$ac_cv_header_dlfcn_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DLFCN_H 1
-_ACEOF
+if test "x$ac_cv_header_dlfcn_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_DLFCN_H 1" >>confdefs.h
fi
-done
-
@@ -10612,7 +11393,8 @@ enable_dlopen=yes
# Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
+if test ${enable_shared+y}
+then :
enableval=$enable_shared; p=${PACKAGE-default}
case $enableval in
yes) enable_shared=yes ;;
@@ -10630,7 +11412,7 @@ if test "${enable_shared+set}" = set; then :
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
enable_shared=yes
fi
@@ -10643,7 +11425,8 @@ fi
# Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
+if test ${enable_static+y}
+then :
enableval=$enable_static; p=${PACKAGE-default}
case $enableval in
yes) enable_static=yes ;;
@@ -10661,7 +11444,7 @@ if test "${enable_static+set}" = set; then :
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
enable_static=yes
fi
@@ -10675,7 +11458,8 @@ fi
# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
+if test ${with_pic+y}
+then :
withval=$with_pic; lt_p=${PACKAGE-default}
case $withval in
yes|no) pic_mode=$withval ;;
@@ -10692,7 +11476,7 @@ if test "${with_pic+set}" = set; then :
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
pic_mode=default
fi
@@ -10704,7 +11488,8 @@ fi
# Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
+if test ${enable_fast_install+y}
+then :
enableval=$enable_fast_install; p=${PACKAGE-default}
case $enableval in
yes) enable_fast_install=yes ;;
@@ -10722,7 +11507,7 @@ if test "${enable_fast_install+set}" = set; then :
IFS=$lt_save_ifs
;;
esac
-else
+else $as_nop
enable_fast_install=yes
fi
@@ -10736,11 +11521,12 @@ fi
shared_archive_member_spec=
case $host,$enable_shared in
power*-*-aix[5-9]*,yes)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
-$as_echo_n "checking which variant of shared library versioning to provide... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5
+printf %s "checking which variant of shared library versioning to provide... " >&6; }
# Check whether --with-aix-soname was given.
-if test "${with_aix_soname+set}" = set; then :
+if test ${with_aix_soname+y}
+then :
withval=$with_aix_soname; case $withval in
aix|svr4|both)
;;
@@ -10749,18 +11535,19 @@ if test "${with_aix_soname+set}" = set; then :
;;
esac
lt_cv_with_aix_soname=$with_aix_soname
-else
- if ${lt_cv_with_aix_soname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ if test ${lt_cv_with_aix_soname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_with_aix_soname=aix
fi
with_aix_soname=$lt_cv_with_aix_soname
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
-$as_echo "$with_aix_soname" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5
+printf "%s\n" "$with_aix_soname" >&6; }
if test aix != "$with_aix_soname"; then
# For the AIX way of multilib, we name the shared archive member
# based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o',
@@ -10842,11 +11629,12 @@ if test -n "${ZSH_VERSION+set}"; then
setopt NO_GLOB_SUBST
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
-$as_echo_n "checking for objdir... " >&6; }
-if ${lt_cv_objdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5
+printf %s "checking for objdir... " >&6; }
+if test ${lt_cv_objdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
rm -f .libs 2>/dev/null
mkdir .libs 2>/dev/null
if test -d .libs; then
@@ -10857,17 +11645,15 @@ else
fi
rmdir .libs 2>/dev/null
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
-$as_echo "$lt_cv_objdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5
+printf "%s\n" "$lt_cv_objdir" >&6; }
objdir=$lt_cv_objdir
-cat >>confdefs.h <<_ACEOF
-#define LT_OBJDIR "$lt_cv_objdir/"
-_ACEOF
+printf "%s\n" "#define LT_OBJDIR \"$lt_cv_objdir/\"" >>confdefs.h
@@ -10913,11 +11699,12 @@ test -z "$MAGIC_CMD" && MAGIC_CMD=file
case $deplibs_check_method in
file_magic*)
if test "$file_magic_cmd" = '$MAGIC_CMD'; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
-$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5
+printf %s "checking for ${ac_tool_prefix}file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
@@ -10966,11 +11753,11 @@ fi
MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -10979,11 +11766,12 @@ fi
if test -z "$lt_cv_path_MAGIC_CMD"; then
if test -n "$ac_tool_prefix"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5
-$as_echo_n "checking for file... " >&6; }
-if ${lt_cv_path_MAGIC_CMD+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for file" >&5
+printf %s "checking for file... " >&6; }
+if test ${lt_cv_path_MAGIC_CMD+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MAGIC_CMD in
[\\/*] | ?:[\\/]*)
lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path.
@@ -11032,11 +11820,11 @@ fi
MAGIC_CMD=$lt_cv_path_MAGIC_CMD
if test -n "$MAGIC_CMD"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
-$as_echo "$MAGIC_CMD" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5
+printf "%s\n" "$MAGIC_CMD" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -11121,11 +11909,12 @@ if test yes = "$GCC"; then
lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
-$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
-if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+printf %s "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; }
+if test ${lt_cv_prog_compiler_rtti_exceptions+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
@@ -11156,8 +11945,8 @@ else
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
-$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+printf "%s\n" "$lt_cv_prog_compiler_rtti_exceptions" >&6; }
if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then
lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions"
@@ -11514,26 +12303,28 @@ case $host_os in
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
-$as_echo_n "checking for $compiler option to produce PIC... " >&6; }
-if ${lt_cv_prog_compiler_pic+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5
+printf %s "checking for $compiler option to produce PIC... " >&6; }
+if test ${lt_cv_prog_compiler_pic+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic=$lt_prog_compiler_pic
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
-$as_echo "$lt_cv_prog_compiler_pic" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic" >&6; }
lt_prog_compiler_pic=$lt_cv_prog_compiler_pic
#
# Check to make sure the PIC flag actually works.
#
if test -n "$lt_prog_compiler_pic"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
-$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
-if ${lt_cv_prog_compiler_pic_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+printf %s "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; }
+if test ${lt_cv_prog_compiler_pic_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
@@ -11564,8 +12355,8 @@ else
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
-$as_echo "$lt_cv_prog_compiler_pic_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_pic_works" >&6; }
if test yes = "$lt_cv_prog_compiler_pic_works"; then
case $lt_prog_compiler_pic in
@@ -11593,11 +12384,12 @@ fi
# Check to make sure the static flag actually works.
#
wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
-$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
-if ${lt_cv_prog_compiler_static_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+printf %s "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; }
+if test ${lt_cv_prog_compiler_static_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_static_works=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
@@ -11621,8 +12413,8 @@ else
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
-$as_echo "$lt_cv_prog_compiler_static_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5
+printf "%s\n" "$lt_cv_prog_compiler_static_works" >&6; }
if test yes = "$lt_cv_prog_compiler_static_works"; then
:
@@ -11636,11 +12428,12 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
@@ -11683,19 +12476,20 @@ else
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
-$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
-if ${lt_cv_prog_compiler_c_o+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5
+printf %s "checking if $compiler supports -c -o file.$ac_objext... " >&6; }
+if test ${lt_cv_prog_compiler_c_o+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler_c_o=no
$RM -r conftest 2>/dev/null
mkdir conftest
@@ -11738,8 +12532,8 @@ else
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
-$as_echo "$lt_cv_prog_compiler_c_o" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5
+printf "%s\n" "$lt_cv_prog_compiler_c_o" >&6; }
@@ -11747,19 +12541,19 @@ $as_echo "$lt_cv_prog_compiler_c_o" >&6; }
hard_links=nottested
if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then
# do not overwrite the value of need_locks provided by the user
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
-$as_echo_n "checking if we can lock with hard links... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5
+printf %s "checking if we can lock with hard links... " >&6; }
hard_links=yes
$RM conftest*
ln conftest.a conftest.b 2>/dev/null && hard_links=no
touch conftest.a
ln conftest.a conftest.b 2>&5 || hard_links=no
ln conftest.a conftest.b 2>/dev/null && hard_links=no
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
-$as_echo "$hard_links" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5
+printf "%s\n" "$hard_links" >&6; }
if test no = "$hard_links"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
-$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5
+printf "%s\n" "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;}
need_locks=warn
fi
else
@@ -11771,8 +12565,8 @@ fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+printf %s "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; }
runpath_var=
allow_undefined_flag=
@@ -12329,21 +13123,23 @@ _LT_EOF
if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath_+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
@@ -12358,7 +13154,7 @@ if ac_fn_c_try_link "$LINENO"; then :
lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_=/usr/lib:/lib
@@ -12382,21 +13178,23 @@ fi
if test set = "${lt_cv_aix_libpath+set}"; then
aix_libpath=$lt_cv_aix_libpath
else
- if ${lt_cv_aix_libpath_+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_aix_libpath_+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_aix_libpath_sed='
/Import File Strings/,/^$/ {
@@ -12411,7 +13209,7 @@ if ac_fn_c_try_link "$LINENO"; then :
lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test -z "$lt_cv_aix_libpath_"; then
lt_cv_aix_libpath_=/usr/lib:/lib
@@ -12638,11 +13436,12 @@ fi
hardcode_minus_L=yes
# gcc-3.0.1 (collect2) breaks on -Wl,+cdp.
# HP-cc ignores -Wl,+cdp, and we test the linker for +cdp support.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if +cdp linker flag works" >&5
-$as_echo_n "checking if +cdp linker flag works... " >&6; }
-if ${lt_cv_ldflag_cdp_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if +cdp linker flag works" >&5
+printf %s "checking if +cdp linker flag works... " >&6; }
+if test ${lt_cv_ldflag_cdp_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ldflag_cdp_works=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,+cdp -Wl,/usr/lib/libc.1:/nonexistent -Wl,+cdp -Wl,/lib/libc.1:/nonexistent"
@@ -12650,25 +13449,26 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_ldflag_cdp_works=yes
-else
+else $as_nop
lt_cv_ldflag_cdp_works=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ldflag_cdp_works" >&5
-$as_echo "$lt_cv_ldflag_cdp_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ldflag_cdp_works" >&5
+printf "%s\n" "$lt_cv_ldflag_cdp_works" >&6; }
if test "$lt_cv_ldflag_cdp_works" = yes; then
fix_hardcoded_libdir_flag_spec='${wl}+cdp ${wl}${linkdir}/${dlname}:${libdir}/${dlname}'
fix_hardcoded_libdir_flag_spec_ld='+cdp ${linkdir}/${dlname}:${libdir}/${dlname}'
@@ -12706,11 +13506,12 @@ $as_echo "$lt_cv_ldflag_cdp_works" >&6; }
# Older versions of the 11.00 compiler do not understand -b yet
# (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
-$as_echo_n "checking if $CC understands -b... " >&6; }
-if ${lt_cv_prog_compiler__b+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5
+printf %s "checking if $CC understands -b... " >&6; }
+if test ${lt_cv_prog_compiler__b+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_prog_compiler__b=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -b"
@@ -12734,8 +13535,8 @@ else
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
-$as_echo "$lt_cv_prog_compiler__b" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5
+printf "%s\n" "$lt_cv_prog_compiler__b" >&6; }
if test yes = "$lt_cv_prog_compiler__b"; then
@@ -12771,11 +13572,12 @@ fi
hardcode_minus_L=yes
# gcc-3.0.1 (collect2) breaks on -Wl,+cdp.
# HP-cc ignores -Wl,+cdp, and we test the linker for +cdp support.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if +cdp linker flag works" >&5
-$as_echo_n "checking if +cdp linker flag works... " >&6; }
-if ${lt_cv_ldflag_cdp_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if +cdp linker flag works" >&5
+printf %s "checking if +cdp linker flag works... " >&6; }
+if test ${lt_cv_ldflag_cdp_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_ldflag_cdp_works=no
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,+cdp -Wl,/usr/lib/libc.1:/nonexistent -Wl,+cdp -Wl,/lib/libc.1:/nonexistent"
@@ -12783,25 +13585,26 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_ldflag_cdp_works=yes
-else
+else $as_nop
lt_cv_ldflag_cdp_works=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS="$save_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ldflag_cdp_works" >&5
-$as_echo "$lt_cv_ldflag_cdp_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ldflag_cdp_works" >&5
+printf "%s\n" "$lt_cv_ldflag_cdp_works" >&6; }
if test "$lt_cv_ldflag_cdp_works" = yes; then
fix_hardcoded_libdir_flag_spec='${wl}+cdp ${wl}${linkdir}/${dlname}:${libdir}/${dlname}'
fix_hardcoded_libdir_flag_spec_ld='+cdp ${linkdir}/${dlname}:${libdir}/${dlname}'
@@ -12818,28 +13621,30 @@ $as_echo "$lt_cv_ldflag_cdp_works" >&6; }
# work, assume that -exports_file does not work either and
# implicitly export all symbols.
# This should be the same for all languages, so no per-tag cache variable.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
-$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
-if ${lt_cv_irix_exported_symbol+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5
+printf %s "checking whether the $host_os linker accepts -exported_symbol... " >&6; }
+if test ${lt_cv_irix_exported_symbol+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
save_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int foo (void) { return 0; }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
lt_cv_irix_exported_symbol=yes
-else
+else $as_nop
lt_cv_irix_exported_symbol=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
-$as_echo "$lt_cv_irix_exported_symbol" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5
+printf "%s\n" "$lt_cv_irix_exported_symbol" >&6; }
if test yes = "$lt_cv_irix_exported_symbol"; then
archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib'
fi
@@ -13119,8 +13924,8 @@ $as_echo "$lt_cv_irix_exported_symbol" >&6; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
-$as_echo "$ld_shlibs" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5
+printf "%s\n" "$ld_shlibs" >&6; }
test no = "$ld_shlibs" && can_build_shared=no
with_gnu_ld=$with_gnu_ld
@@ -13156,18 +13961,19 @@ x|xyes)
# Test whether the compiler implicitly links with -lc since on some
# systems, -lgcc has to come before -lc. If gcc already passes -lc
# to ld, don't add -lc before -lgcc.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
-$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; }
-if ${lt_cv_archive_cmds_need_lc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5
+printf %s "checking whether -lc should be explicitly linked in... " >&6; }
+if test ${lt_cv_archive_cmds_need_lc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
$RM conftest*
echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
(eval $ac_compile) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } 2>conftest.err; then
soname=conftest
lib=conftest
@@ -13185,7 +13991,7 @@ else
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5
(eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
then
lt_cv_archive_cmds_need_lc=no
@@ -13199,8 +14005,8 @@ else
$RM conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
-$as_echo "$lt_cv_archive_cmds_need_lc" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5
+printf "%s\n" "$lt_cv_archive_cmds_need_lc" >&6; }
archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc
;;
esac
@@ -13369,8 +14175,8 @@ esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
-$as_echo_n "checking dynamic linker characteristics... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+printf %s "checking dynamic linker characteristics... " >&6; }
if test yes = "$GCC"; then
case $host_os in
@@ -13931,9 +14737,10 @@ linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
shlibpath_overrides_runpath=no
# Some binutils ld are patched to set DT_RUNPATH
- if ${lt_cv_shlibpath_overrides_runpath+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${lt_cv_shlibpath_overrides_runpath+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
lt_cv_shlibpath_overrides_runpath=no
save_LDFLAGS=$LDFLAGS
save_libdir=$libdir
@@ -13943,19 +14750,21 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then :
+if ac_fn_c_try_link "$LINENO"
+then :
+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null
+then :
lt_cv_shlibpath_overrides_runpath=yes
fi
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$save_LDFLAGS
libdir=$save_libdir
@@ -14187,8 +14996,8 @@ uts4*)
dynamic_linker=no
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+printf "%s\n" "$dynamic_linker" >&6; }
test no = "$dynamic_linker" && can_build_shared=no
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
@@ -14309,8 +15118,8 @@ configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+printf %s "checking how to hardcode library paths into programs... " >&6; }
hardcode_action=
if test -n "$hardcode_libdir_flag_spec" ||
test -n "$runpath_var" ||
@@ -14335,8 +15144,8 @@ else
# directories.
hardcode_action=unsupported
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+printf "%s\n" "$hardcode_action" >&6; }
if test relink = "$hardcode_action" ||
test yes = "$inherit_rpath"; then
@@ -14380,11 +15189,12 @@ else
darwin*)
# if libdl is installed we need to link against it
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14393,32 +15203,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
+else $as_nop
lt_cv_dlopen=dyld
lt_cv_dlopen_libs=
@@ -14438,14 +15247,16 @@ fi
*)
ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
+if test "x$ac_cv_func_shl_load" = xyes
+then :
lt_cv_dlopen=shl_load
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+printf %s "checking for shl_load in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_shl_load+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14454,41 +15265,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char shl_load ();
int
-main ()
+main (void)
{
return shl_load ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dld_shl_load=yes
-else
+else $as_nop
ac_cv_lib_dld_shl_load=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+printf "%s\n" "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes
+then :
lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld
-else
+else $as_nop
ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
+if test "x$ac_cv_func_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+printf %s "checking for dlopen in -ldl... " >&6; }
+if test ${ac_cv_lib_dl_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldl $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14497,37 +15309,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dl_dlopen=yes
-else
+else $as_nop
ac_cv_lib_dl_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+printf %s "checking for dlopen in -lsvld... " >&6; }
+if test ${ac_cv_lib_svld_dlopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsvld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14536,37 +15348,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dlopen ();
int
-main ()
+main (void)
{
return dlopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_svld_dlopen=yes
-else
+else $as_nop
ac_cv_lib_svld_dlopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+printf "%s\n" "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes
+then :
lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+printf %s "checking for dld_link in -ldld... " >&6; }
+if test ${ac_cv_lib_dld_dld_link+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-ldld $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -14575,30 +15387,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char dld_link ();
int
-main ()
+main (void)
{
return dld_link ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_dld_dld_link=yes
-else
+else $as_nop
ac_cv_lib_dld_dld_link=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+printf "%s\n" "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes
+then :
lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld
fi
@@ -14637,11 +15448,12 @@ fi
save_LIBS=$LIBS
LIBS="$lt_cv_dlopen_libs $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+printf %s "checking whether a program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self=cross
else
@@ -14720,7 +15532,7 @@ _LT_EOF
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
@@ -14738,16 +15550,17 @@ rm -fr conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+printf "%s\n" "$lt_cv_dlopen_self" >&6; }
if test yes = "$lt_cv_dlopen_self"; then
wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+printf %s "checking whether a statically linked program can dlopen itself... " >&6; }
+if test ${lt_cv_dlopen_self_static+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test yes = "$cross_compiling"; then :
lt_cv_dlopen_self_static=cross
else
@@ -14826,7 +15639,7 @@ _LT_EOF
if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
(eval $ac_link) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then
(./conftest; exit; ) >&5 2>/dev/null
lt_status=$?
@@ -14844,8 +15657,8 @@ rm -fr conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+printf "%s\n" "$lt_cv_dlopen_self_static" >&6; }
fi
CPPFLAGS=$save_CPPFLAGS
@@ -14883,13 +15696,13 @@ fi
striplib=
old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+printf %s "checking whether stripping libraries is possible... " >&6; }
if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
test -z "$striplib" && striplib="$STRIP --strip-unneeded"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
# FIXME - insert some real tests, host_os isn't really good enough
case $host_os in
@@ -14897,16 +15710,16 @@ else
if test -n "$STRIP"; then
striplib="$STRIP -x"
old_striplib="$STRIP -S"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
esac
fi
@@ -14923,13 +15736,13 @@ fi
# Report what library types will actually be built
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+printf %s "checking if libtool supports shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+printf "%s\n" "$can_build_shared" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+printf %s "checking whether to build shared libraries... " >&6; }
test no = "$can_build_shared" && enable_shared=no
# On AIX, shared libraries and static libraries use the same namespace, and
@@ -14953,15 +15766,15 @@ $as_echo_n "checking whether to build shared libraries... " >&6; }
fi
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+printf "%s\n" "$enable_shared" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+printf %s "checking whether to build static libraries... " >&6; }
# Make sure either enable_shared or enable_static is yes.
test yes = "$enable_shared" || enable_static=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+printf "%s\n" "$enable_static" >&6; }
@@ -15000,7 +15813,8 @@ CC=$lt_save_CC
# Check whether --with-libtool was given.
-if test "${with_libtool+set}" = set; then :
+if test ${with_libtool+y}
+then :
withval=$with_libtool; case $with_libtool in
yes|builtin) ;;
no) as_fn_error $? "\"--without-libtool not supported.\"" "$LINENO" 5
@@ -15024,33 +15838,35 @@ fi
LIBDL="$lt_cv_dlopen_libs"
SHLIB_ENABLE="$enable_dlopen"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking path to sudo_noexec.so" >&5
-$as_echo_n "checking path to sudo_noexec.so... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking path to sudo_noexec.so" >&5
+printf %s "checking path to sudo_noexec.so... " >&6; }
# Check whether --with-noexec was given.
-if test "${with_noexec+set}" = set; then :
+if test ${with_noexec+y}
+then :
withval=$with_noexec; case $with_noexec in
yes) ;;
no) ;;
*) noexec_file="$with_noexec"
;;
esac
-else
+else $as_nop
with_noexec="$noexec_file"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_noexec" >&5
-$as_echo "$with_noexec" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $with_noexec" >&5
+printf "%s\n" "$with_noexec" >&6; }
NOEXECFILE="sudo_noexec.so"
NOEXECDIR="`echo $noexec_file|sed -e 's:^${\([^}]*\)}:$(\1):' -e 's:^\(.*\)/[^/]*:\1:'`"
# Extract the first word of "uname", so it can be a program name with args.
set dummy uname; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_UNAMEPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_UNAMEPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $UNAMEPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_UNAMEPROG="$UNAMEPROG" # Let the user override the test with a path.
@@ -15060,11 +15876,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_UNAMEPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_UNAMEPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -15077,21 +15897,22 @@ esac
fi
UNAMEPROG=$ac_cv_path_UNAMEPROG
if test -n "$UNAMEPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $UNAMEPROG" >&5
-$as_echo "$UNAMEPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $UNAMEPROG" >&5
+printf "%s\n" "$UNAMEPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "tr", so it can be a program name with args.
set dummy tr; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_TRPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_TRPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $TRPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_TRPROG="$TRPROG" # Let the user override the test with a path.
@@ -15101,11 +15922,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_TRPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_TRPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -15118,21 +15943,22 @@ esac
fi
TRPROG=$ac_cv_path_TRPROG
if test -n "$TRPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $TRPROG" >&5
-$as_echo "$TRPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $TRPROG" >&5
+printf "%s\n" "$TRPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "mandoc", so it can be a program name with args.
set dummy mandoc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MANDOCPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MANDOCPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MANDOCPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_MANDOCPROG="$MANDOCPROG" # Let the user override the test with a path.
@@ -15142,11 +15968,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_MANDOCPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_MANDOCPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -15159,11 +15989,11 @@ esac
fi
MANDOCPROG=$ac_cv_path_MANDOCPROG
if test -n "$MANDOCPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANDOCPROG" >&5
-$as_echo "$MANDOCPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MANDOCPROG" >&5
+printf "%s\n" "$MANDOCPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -15172,11 +16002,12 @@ if test "$MANDOCPROG" != "mandoc"; then
else
# Extract the first word of "nroff", so it can be a program name with args.
set dummy nroff; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_NROFFPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_NROFFPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $NROFFPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_NROFFPROG="$NROFFPROG" # Let the user override the test with a path.
@@ -15186,11 +16017,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_NROFFPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_NROFFPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -15202,21 +16037,22 @@ esac
fi
NROFFPROG=$ac_cv_path_NROFFPROG
if test -n "$NROFFPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NROFFPROG" >&5
-$as_echo "$NROFFPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NROFFPROG" >&5
+printf "%s\n" "$NROFFPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test -n "$NROFFPROG"; then
test -n "$MANTYPE" && sudo_cv_var_mantype="$MANTYPE"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking which macro set to use for manual pages" >&5
-$as_echo_n "checking which macro set to use for manual pages... " >&6; }
-if ${sudo_cv_var_mantype+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which macro set to use for manual pages" >&5
+printf %s "checking which macro set to use for manual pages... " >&6; }
+if test ${sudo_cv_var_mantype+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
sudo_cv_var_mantype="man"
echo ".Sh NAME" > conftest
@@ -15231,8 +16067,8 @@ else
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_mantype" >&5
-$as_echo "$sudo_cv_var_mantype" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_mantype" >&5
+printf "%s\n" "$sudo_cv_var_mantype" >&6; }
MANTYPE="$sudo_cv_var_mantype"
else
: ${MANTYPE='mdoc'}
@@ -15243,22 +16079,24 @@ if test -n "$sudo_cv_prev_host"; then
if test "$sudo_cv_prev_host" != "$host"; then
as_fn_error $? "config.cache was created on a different host; remove it and re-run configure." "$LINENO" 5
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking previous host type" >&5
-$as_echo_n "checking previous host type... " >&6; }
- if ${sudo_cv_prev_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking previous host type" >&5
+printf %s "checking previous host type... " >&6; }
+ if test ${sudo_cv_prev_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
sudo_cv_prev_host="$host"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_prev_host" >&5
-$as_echo "$sudo_cv_prev_host" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_prev_host" >&5
+printf "%s\n" "$sudo_cv_prev_host" >&6; }
fi
else
# this will produce no output since there is no cached value
- if ${sudo_cv_prev_host+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if test ${sudo_cv_prev_host+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
sudo_cv_prev_host="$host"
fi
@@ -15276,12 +16114,17 @@ fi
case "$host" in
*-*-solaris2*)
- $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_SUN_CODEBASE 1" >>confdefs.h
# LD_PRELOAD is space-delimited
RTLD_PRELOAD_DELIM=" "
+ # illumos has a broken fmemopen(3)
+ if test X"`uname -o 2>/dev/null`" = X"illumos"; then
+ : ${ac_cv_func_fmemopen='no'}
+ fi
+
# Solaris-specific initialization
OS_INIT=os_init_solaris
SUDO_OBJS="${SUDO_OBJS} solaris.o"
@@ -15293,24 +16136,24 @@ case "$host" in
: ${mansectsu='1m'}
: ${mansectform='4'}
test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
- for ac_func in priv_set
+
+ for ac_func in priv_set
do :
ac_fn_c_check_func "$LINENO" "priv_set" "ac_cv_func_priv_set"
-if test "x$ac_cv_func_priv_set" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PRIV_SET 1
-_ACEOF
+if test "x$ac_cv_func_priv_set" = xyes
+then :
+ printf "%s\n" "#define HAVE_PRIV_SET 1" >>confdefs.h
PSMAN=1
fi
-done
+done
;;
*-*-aix*)
- $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_SUN_CODEBASE 1" >>confdefs.h
# To get all prototypes (so we pass -Wall)
- $as_echo "#define _LINUX_SOURCE_COMPAT 1" >>confdefs.h
+ printf "%s\n" "#define _LINUX_SOURCE_COMPAT 1" >>confdefs.h
# For AIX we build in support for both LAM and PAM
@@ -15323,7 +16166,8 @@ done
# AIX analog of nsswitch.conf, enabled by default
# Check whether --with-netsvc was given.
-if test "${with_netsvc+set}" = set; then :
+if test ${with_netsvc+y}
+then :
withval=$with_netsvc; case $with_netsvc in
no) ;;
yes) with_netsvc="/etc/netsvc.conf"
@@ -15349,14 +16193,20 @@ fi
# strnlen/strndup may be broken on AIX < 6 depending
# on the libc version, use our own.
if test $OSMAJOR -lt 6; then
- ac_cv_func_strnlen=no
+ : ${ac_cv_func_strnlen='no'}
+ fi
+
+ # fmemopen(3) may be broken on AIX < 7.1 depending
+ # on the libc version.
+ if test $OSMAJOR -lt 7; then
+ : ${ac_cv_func_fmemopen='no'}
fi
# getdelim() may or may not be present on AIX <= 6.1.
# bos610 is missing getdelim but bos61J has it.
if test "$enable_package_build" = "yes"; then
if test $OSMAJOR -le 6; then
- ac_cv_func_getdelim=no
+ : ${ac_cv_func_getdelim='no'}
fi
fi
@@ -15364,7 +16214,7 @@ fi
# bos710 is missing memset_s but bos71L has it.
if test "$enable_package_build" = "yes"; then
if test $OSMAJOR -le 7; then
- ac_cv_func_memset_s=no
+ : ${ac_cv_func_memset_s='no'}
fi
fi
@@ -15374,39 +16224,39 @@ fi
RC_LINK=/etc/rc.d/rc2.d/S90sudo
# AIX-specific functions
- for ac_func in getuserattr setrlimit64
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getuserattr" "ac_cv_func_getuserattr"
+if test "x$ac_cv_func_getuserattr" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUSERATTR 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "setrlimit64" "ac_cv_func_setrlimit64"
+if test "x$ac_cv_func_setrlimit64" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRLIMIT64 1" >>confdefs.h
fi
-done
- for ac_func in setauthdb
+
+ for ac_func in setauthdb
do :
ac_fn_c_check_func "$LINENO" "setauthdb" "ac_cv_func_setauthdb"
-if test "x$ac_cv_func_setauthdb" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETAUTHDB 1
-_ACEOF
+if test "x$ac_cv_func_setauthdb" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETAUTHDB 1" >>confdefs.h
ac_fn_c_check_type "$LINENO" "authdb_t" "ac_cv_type_authdb_t" "#include <usersec.h>
"
-if test "x$ac_cv_type_authdb_t" = xyes; then :
+if test "x$ac_cv_type_authdb_t" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_AUTHDB_T 1
-_ACEOF
+printf "%s\n" "#define HAVE_AUTHDB_T 1" >>confdefs.h
fi
fi
-done
+done
COMMON_OBJS="${COMMON_OBJS} aix.lo"
@@ -15417,39 +16267,115 @@ done
# These prototypes may be missing
- ac_fn_c_check_decl "$LINENO" "usrinfo" "ac_cv_have_decl_usrinfo" "
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC options needed to detect all undeclared functions" >&5
+printf %s "checking for $CC options needed to detect all undeclared functions... " >&6; }
+if test ${ac_cv_c_undeclared_builtin_options+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ ac_save_CFLAGS=$CFLAGS
+ ac_cv_c_undeclared_builtin_options='cannot detect'
+ for ac_arg in '' -fno-builtin; do
+ CFLAGS="$ac_save_CFLAGS $ac_arg"
+ # This test program should *not* compile successfully.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+(void) strchr;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+else $as_nop
+ # This test program should compile successfully.
+ # No library function is consistently available on
+ # freestanding implementations, so test against a dummy
+ # declaration. Include always-available headers on the
+ # off chance that they somehow elicit warnings.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <float.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stddef.h>
+extern void ac_decl (int, char *);
+
+int
+main (void)
+{
+(void) ac_decl (0, (char *) 0);
+ (void) ac_decl;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ if test x"$ac_arg" = x
+then :
+ ac_cv_c_undeclared_builtin_options='none needed'
+else $as_nop
+ ac_cv_c_undeclared_builtin_options=$ac_arg
+fi
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ done
+ CFLAGS=$ac_save_CFLAGS
+
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_undeclared_builtin_options" >&5
+printf "%s\n" "$ac_cv_c_undeclared_builtin_options" >&6; }
+ case $ac_cv_c_undeclared_builtin_options in #(
+ 'cannot detect') :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot make $CC report undeclared builtins
+See \`config.log' for more details" "$LINENO" 5; } ;; #(
+ 'none needed') :
+ ac_c_undeclared_builtin_options='' ;; #(
+ *) :
+ ac_c_undeclared_builtin_options=$ac_cv_c_undeclared_builtin_options ;;
+esac
+
+ac_fn_check_decl "$LINENO" "usrinfo" "ac_cv_have_decl_usrinfo" "
#include <sys/types.h>
#include <uinfo.h>
-"
-if test "x$ac_cv_have_decl_usrinfo" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_usrinfo" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_USRINFO $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_USRINFO $ac_have_decl
-_ACEOF
-
- ac_fn_c_check_decl "$LINENO" "setauthdb" "ac_cv_have_decl_setauthdb" "
+ ac_fn_check_decl "$LINENO" "setauthdb" "ac_cv_have_decl_setauthdb" "
#include <sys/types.h>
#include <usersec.h>
-"
-if test "x$ac_cv_have_decl_setauthdb" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_setauthdb" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SETAUTHDB $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_SETAUTHDB $ac_have_decl" >>confdefs.h
;;
*-*-hiuxmpp*)
- $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_SUN_CODEBASE 1" >>confdefs.h
: ${mansectsu='1m'}
@@ -15467,21 +16393,22 @@ _ACEOF
# HP-UX won't unlink a shared lib that is open
INSTALL_BACKUP='~'
- for ac_func in pstat_getproc gethrtime
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "pstat_getproc" "ac_cv_func_pstat_getproc"
+if test "x$ac_cv_func_pstat_getproc" = xyes
+then :
+ printf "%s\n" "#define HAVE_PSTAT_GETPROC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "gethrtime" "ac_cv_func_gethrtime"
+if test "x$ac_cv_func_gethrtime" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETHRTIME 1" >>confdefs.h
fi
-done
;;
*-*-hpux*)
- $as_echo "#define PAM_SUN_CODEBASE 1" >>confdefs.h
+ printf "%s\n" "#define PAM_SUN_CODEBASE 1" >>confdefs.h
# AFS support needs -lBSD
@@ -15505,11 +16432,12 @@ done
# The HP bundled compiler cannot generate shared libs
if test -z "$GCC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HP bundled C compiler" >&5
-$as_echo_n "checking for HP bundled C compiler... " >&6; }
-if ${sudo_cv_var_hpccbundled+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for HP bundled C compiler" >&5
+printf %s "checking for HP bundled C compiler... " >&6; }
+if test ${sudo_cv_var_hpccbundled+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if $CC -V 2>&1 | grep '^(Bundled)' >/dev/null 2>&1; then
sudo_cv_var_hpccbundled=yes
else
@@ -15517,8 +16445,8 @@ else
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_hpccbundled" >&5
-$as_echo "$sudo_cv_var_hpccbundled" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_hpccbundled" >&5
+printf "%s\n" "$sudo_cv_var_hpccbundled" >&6; }
if test "$sudo_cv_var_hpccbundled" = "yes"; then
as_fn_error $? "The HP bundled C compiler is unable to build Sudo, you must use gcc or the HP ANSI C compiler instead." "$LINENO" 5
fi
@@ -15534,35 +16462,37 @@ $as_echo "$sudo_cv_var_hpccbundled" >&6; }
portable_flag="+DAportable"
fi
CFLAGS="$CFLAGS $portable_flag"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands $portable_flag" >&5
-$as_echo_n "checking whether $CC understands $portable_flag... " >&6; }
-if ${sudo_cv_var_daportable+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC understands $portable_flag" >&5
+printf %s "checking whether $CC understands $portable_flag... " >&6; }
+if test ${sudo_cv_var_daportable+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_var_daportable=yes
-else
+else $as_nop
sudo_cv_var_daportable=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_daportable" >&5
-$as_echo "$sudo_cv_var_daportable" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_daportable" >&5
+printf "%s\n" "$sudo_cv_var_daportable" >&6; }
if test X"$sudo_cv_var_daportable" != X"yes"; then
CFLAGS="$_CFLAGS"
fi
@@ -15582,78 +16512,81 @@ $as_echo "$sudo_cv_var_daportable" >&6; }
test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
;;
esac
- for ac_func in pstat_getproc gethrtime
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "pstat_getproc" "ac_cv_func_pstat_getproc"
+if test "x$ac_cv_func_pstat_getproc" = xyes
+then :
+ printf "%s\n" "#define HAVE_PSTAT_GETPROC 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "gethrtime" "ac_cv_func_gethrtime"
+if test "x$ac_cv_func_gethrtime" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETHRTIME 1" >>confdefs.h
fi
-done
;;
*-dec-osf*)
# ignore envariables wrt dynamic lib path
-if ${SUDO_LDFLAGS+:} false; then :
+if test ${SUDO_LDFLAGS+y}
+then :
case " $SUDO_LDFLAGS " in #(
*" -Wl,-no_library_replacement "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS already contains -Wl,-no_library_replacement"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS already contains -Wl,-no_library_replacement"; } >&5
(: SUDO_LDFLAGS already contains -Wl,-no_library_replacement) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDO_LDFLAGS " -Wl,-no_library_replacement"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
(: SUDO_LDFLAGS="$SUDO_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDO_LDFLAGS=-Wl,-no_library_replacement
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
(: SUDO_LDFLAGS="$SUDO_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
: ${CHECKSIA='true'}
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to disable sia support on Digital UNIX" >&5
-$as_echo_n "checking whether to disable sia support on Digital UNIX... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to disable sia support on Digital UNIX" >&5
+printf %s "checking whether to disable sia support on Digital UNIX... " >&6; }
# Check whether --enable-sia was given.
-if test "${enable_sia+set}" = set; then :
+if test ${enable_sia+y}
+then :
enableval=$enable_sia; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
CHECKSIA=true
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
CHECKSIA=false
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-sia: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-sia: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-sia: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-sia: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -15673,8 +16606,8 @@ fi
# copy of prot.h, which we need for shadow passwords.
# XXX - make should remove this as part of distclean
#
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for broken prot.h" >&5
-$as_echo_n "checking for broken prot.h... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for broken prot.h" >&5
+printf %s "checking for broken prot.h... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -15683,23 +16616,24 @@ $as_echo_n "checking for broken prot.h... " >&6; }
#include <prot.h>
int
-main ()
+main (void)
{
return(0);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes, fixing locally" >&5
-$as_echo "yes, fixing locally" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes, fixing locally" >&5
+printf "%s\n" "yes, fixing locally" >&6; }
sed 's:<acl.h>:<sys/acl.h>:g' < /usr/include/prot.h > prot.h
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
# ":DEFAULT" must be appended to _RLD_LIST
RTLD_PRELOAD_VAR="_RLD_LIST"
RTLD_PRELOAD_DEFAULT="DEFAULT"
@@ -15707,7 +16641,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
: ${mansectform='4'}
;;
*-*-irix*)
- $as_echo "#define _BSD_TYPES 1" >>confdefs.h
+ printf "%s\n" "#define _BSD_TYPES 1" >>confdefs.h
if test "$prefix" = "/usr/local" -a "$mandir" = '${datarootdir}/man'; then
if test -d "/usr/share/man/local"; then
@@ -15718,11 +16652,12 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
# IRIX <= 4 needs -lsun
if test "$OSMAJOR" -le 4; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getpwnam in -lsun" >&5
-$as_echo_n "checking for getpwnam in -lsun... " >&6; }
-if ${ac_cv_lib_sun_getpwnam+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getpwnam in -lsun" >&5
+printf %s "checking for getpwnam in -lsun... " >&6; }
+if test ${ac_cv_lib_sun_getpwnam+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lsun $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15731,30 +16666,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 getpwnam ();
int
-main ()
+main (void)
{
return getpwnam ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_sun_getpwnam=yes
-else
+else $as_nop
ac_cv_lib_sun_getpwnam=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwnam" >&5
-$as_echo "$ac_cv_lib_sun_getpwnam" >&6; }
-if test "x$ac_cv_lib_sun_getpwnam" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sun_getpwnam" >&5
+printf "%s\n" "$ac_cv_lib_sun_getpwnam" >&6; }
+if test "x$ac_cv_lib_sun_getpwnam" = xyes
+then :
LIBS="${LIBS} -lsun"
fi
@@ -15769,37 +16703,30 @@ fi
shadow_funcs="getspnam"
test -z "$with_pam" && AUTH_EXCL_DEF="PAM"
# Check for SECCOMP_SET_MODE_FILTER in linux/seccomp.h
- ac_fn_c_check_decl "$LINENO" "SECCOMP_SET_MODE_FILTER" "ac_cv_have_decl_SECCOMP_SET_MODE_FILTER" "
+ ac_fn_check_decl "$LINENO" "SECCOMP_SET_MODE_FILTER" "ac_cv_have_decl_SECCOMP_SET_MODE_FILTER" "
#include <sys/types.h>
#include <sys/prctl.h>
#include <asm/unistd.h>
#include <linux/seccomp.h>
#include <linux/filter.h>
-"
-if test "x$ac_cv_have_decl_SECCOMP_SET_MODE_FILTER" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SECCOMP_SET_MODE_FILTER" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SECCOMP_SET_MODE_FILTER $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_SECCOMP_SET_MODE_FILTER $ac_have_decl" >>confdefs.h
# We call getrandom via syscall(3) in case it is not in libc
- for ac_header in linux/random.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "linux/random.h" "ac_cv_header_linux_random_h" "$ac_includes_default"
-if test "x$ac_cv_header_linux_random_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LINUX_RANDOM_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "linux/random.h" "ac_cv_header_linux_random_h" "$ac_includes_default"
+if test "x$ac_cv_header_linux_random_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LINUX_RANDOM_H 1" >>confdefs.h
fi
-done
-
;;
*-*-gnu*)
# lockf() is broken on the Hurd
@@ -15808,97 +16735,100 @@ done
*-*-riscos*)
LIBS="${LIBS} -lsun -lbsd"
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I/usr/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I/usr/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I/usr/include"; } >&5
(: CPPFLAGS already contains -I/usr/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I/usr/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I/usr/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I/usr/include/bsd "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I/usr/include/bsd"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I/usr/include/bsd"; } >&5
(: CPPFLAGS already contains -I/usr/include/bsd) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I/usr/include/bsd"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I/usr/include/bsd
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -D_MIPS "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -D_MIPS"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -D_MIPS"; } >&5
(: CPPFLAGS already contains -D_MIPS) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -D_MIPS"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-D_MIPS
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -15908,33 +16838,34 @@ fi
;;
*-*-isc*)
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -D_ISC "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -D_ISC"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -D_ISC"; } >&5
(: CPPFLAGS already contains -D_ISC) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -D_ISC"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-D_ISC
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -15966,11 +16897,12 @@ fi
: ${mansectform='4'}
;;
*-ncr-sysv4*|*-ncr-sysvr4*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strcasecmp in -lc89" >&5
-$as_echo_n "checking for strcasecmp in -lc89... " >&6; }
-if ${ac_cv_lib_c89_strcasecmp+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for strcasecmp in -lc89" >&5
+printf %s "checking for strcasecmp in -lc89... " >&6; }
+if test ${ac_cv_lib_c89_strcasecmp+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lc89 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -15979,30 +16911,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 strcasecmp ();
int
-main ()
+main (void)
{
return strcasecmp ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_c89_strcasecmp=yes
-else
+else $as_nop
ac_cv_lib_c89_strcasecmp=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c89_strcasecmp" >&5
-$as_echo "$ac_cv_lib_c89_strcasecmp" >&6; }
-if test "x$ac_cv_lib_c89_strcasecmp" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c89_strcasecmp" >&5
+printf "%s\n" "$ac_cv_lib_c89_strcasecmp" >&6; }
+if test "x$ac_cv_lib_c89_strcasecmp" = xyes
+then :
LIBS="${LIBS} -lc89"
fi
@@ -16018,21 +16949,21 @@ fi
SKIP_SETREUID=yes
# Check for newer BSD auth API
if test -z "$with_bsdauth"; then
- for ac_func in auth_challenge
+
+ for ac_func in auth_challenge
do :
ac_fn_c_check_func "$LINENO" "auth_challenge" "ac_cv_func_auth_challenge"
-if test "x$ac_cv_func_auth_challenge" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_AUTH_CHALLENGE 1
-_ACEOF
+if test "x$ac_cv_func_auth_challenge" = xyes
+then :
+ printf "%s\n" "#define HAVE_AUTH_CHALLENGE 1" >>confdefs.h
AUTH_EXCL_DEF="BSD_AUTH"
fi
-done
+done
fi
;;
*-*-freebsd*)
- $as_echo "#define _BSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h
# FreeBSD has a real setreuid(2) starting with 2.1 and
@@ -16055,7 +16986,7 @@ done
fi
;;
*-*-*openbsd*)
- $as_echo "#define _BSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h
# OpenBSD-specific initialization
@@ -16094,7 +17025,7 @@ done
: ${with_logincap='maybe'}
# For reallocarray()
- $as_echo "#define _OPENBSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _OPENBSD_SOURCE 1" >>confdefs.h
# Examples go in share/examples/sudo
@@ -16103,7 +17034,7 @@ done
fi
;;
*-*-dragonfly*)
- $as_echo "#define _BSD_SOURCE 1" >>confdefs.h
+ printf "%s\n" "#define _BSD_SOURCE 1" >>confdefs.h
if test "${with_skey-'no'}" = "yes"; then
@@ -16137,7 +17068,7 @@ done
: ${enable_poll='no'}
# Darwin 8 and above can interpose library symbols cleanly
if test $OSMAJOR -ge 8; then
- $as_echo "#define HAVE___INTERPOSE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE___INTERPOSE 1" >>confdefs.h
dlyld_interpose=yes
else
@@ -16146,52 +17077,43 @@ done
RTLD_PRELOAD_VAR="DYLD_INSERT_LIBRARIES"
# Mach monotonic timer that runs while sleeping
- for ac_func in mach_continuous_time
-do :
- ac_fn_c_check_func "$LINENO" "mach_continuous_time" "ac_cv_func_mach_continuous_time"
-if test "x$ac_cv_func_mach_continuous_time" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_MACH_CONTINUOUS_TIME 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "mach_continuous_time" "ac_cv_func_mach_continuous_time"
+if test "x$ac_cv_func_mach_continuous_time" = xyes
+then :
+ printf "%s\n" "#define HAVE_MACH_CONTINUOUS_TIME 1" >>confdefs.h
fi
-done
# Undocumented API that dynamically allocates the groups.
- for ac_func in getgrouplist_2
+
+ for ac_func in getgrouplist_2
do :
ac_fn_c_check_func "$LINENO" "getgrouplist_2" "ac_cv_func_getgrouplist_2"
-if test "x$ac_cv_func_getgrouplist_2" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETGROUPLIST_2 1
-_ACEOF
- ac_fn_c_check_decl "$LINENO" "getgrouplist_2" "ac_cv_have_decl_getgrouplist_2" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getgrouplist_2" = xyes; then :
+if test "x$ac_cv_func_getgrouplist_2" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGROUPLIST_2 1" >>confdefs.h
+ ac_fn_check_decl "$LINENO" "getgrouplist_2" "ac_cv_have_decl_getgrouplist_2" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getgrouplist_2" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETGROUPLIST_2 $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_GETGROUPLIST_2 $ac_have_decl" >>confdefs.h
fi
-done
-
-
- # macOS >= 10.6 getgroups(2) can support more than > 16 groups
- $as_echo "#define _DARWIN_UNLIMITED_GETGROUPS 1" >>confdefs.h
+done
# We need to force a flat namespace to make libc
# symbol hooking work like it does on ELF.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-force_flat_namespace" >&5
-$as_echo_n "checking whether the linker accepts -Wl,-force_flat_namespace... " >&6; }
-if ${ax_cv_check_ldflags___Wl__force_flat_namespace+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-force_flat_namespace" >&5
+printf %s "checking whether the linker accepts -Wl,-force_flat_namespace... " >&6; }
+if test ${ax_cv_check_ldflags___Wl__force_flat_namespace+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,-force_flat_namespace"
@@ -16199,58 +17121,61 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ax_cv_check_ldflags___Wl__force_flat_namespace=yes
-else
+else $as_nop
ax_cv_check_ldflags___Wl__force_flat_namespace=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__force_flat_namespace" >&5
-$as_echo "$ax_cv_check_ldflags___Wl__force_flat_namespace" >&6; }
-if test x"$ax_cv_check_ldflags___Wl__force_flat_namespace" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__force_flat_namespace" >&5
+printf "%s\n" "$ax_cv_check_ldflags___Wl__force_flat_namespace" >&6; }
+if test x"$ax_cv_check_ldflags___Wl__force_flat_namespace" = xyes
+then :
-if ${SUDO_LDFLAGS+:} false; then :
+if test ${SUDO_LDFLAGS+y}
+then :
case " $SUDO_LDFLAGS " in #(
*" -Wl,-force_flat_namespace "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS already contains -Wl,-force_flat_namespace"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS already contains -Wl,-force_flat_namespace"; } >&5
(: SUDO_LDFLAGS already contains -Wl,-force_flat_namespace) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDO_LDFLAGS " -Wl,-force_flat_namespace"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
(: SUDO_LDFLAGS="$SUDO_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDO_LDFLAGS=-Wl,-force_flat_namespace
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDO_LDFLAGS=\"\$SUDO_LDFLAGS\""; } >&5
(: SUDO_LDFLAGS="$SUDO_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-else
+else $as_nop
:
fi
@@ -16368,66 +17293,68 @@ if test -n "$with_libpath"; then
for i in ${with_libpath}; do
-if ${LDFLAGS+:} false; then :
+if test ${LDFLAGS+y}
+then :
case " $LDFLAGS " in #(
*" -L$i "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -L\$i"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -L\$i"; } >&5
(: LDFLAGS already contains -L$i) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS " -L$i"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS=-L$i
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${LDFLAGS_R+:} false; then :
+if test ${LDFLAGS_R+y}
+then :
case " $LDFLAGS_R " in #(
*" -R$i "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R already contains -R\$i"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R already contains -R\$i"; } >&5
(: LDFLAGS_R already contains -R$i) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS_R " -R$i"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
(: LDFLAGS_R="$LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS_R=-R$i
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
(: LDFLAGS_R="$LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -16448,308 +17375,17 @@ if test -n "$with_libraries"; then
done
fi
- case $ac_cv_prog_cc_stdc in #(
- no) :
- ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #(
- *) :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
-$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
-if ${ac_cv_prog_cc_c99+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c99=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <wchar.h>
-#include <stdio.h>
-
-// Check varargs macros. These examples are taken from C99 6.10.3.5.
-#define debug(...) fprintf (stderr, __VA_ARGS__)
-#define showlist(...) puts (#__VA_ARGS__)
-#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
-static void
-test_varargs_macros (void)
-{
- int x = 1234;
- int y = 5678;
- debug ("Flag");
- debug ("X = %d\n", x);
- showlist (The first, second, and third items.);
- report (x>y, "x is %d but y is %d", x, y);
-}
-
-// Check long long types.
-#define BIG64 18446744073709551615ull
-#define BIG32 4294967295ul
-#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
-#if !BIG_OK
- your preprocessor is broken;
-#endif
-#if BIG_OK
-#else
- your preprocessor is broken;
-#endif
-static long long int bignum = -9223372036854775807LL;
-static unsigned long long int ubignum = BIG64;
-
-struct incomplete_array
-{
- int datasize;
- double data[];
-};
-
-struct named_init {
- int number;
- const wchar_t *name;
- double average;
-};
-
-typedef const char *ccp;
-
-static inline int
-test_restrict (ccp restrict text)
-{
- // See if C++-style comments work.
- // Iterate through items via the restricted pointer.
- // Also check for declarations in for loops.
- for (unsigned int i = 0; *(text+i) != '\0'; ++i)
- continue;
- return 0;
-}
-
-// Check varargs and va_copy.
-static void
-test_varargs (const char *format, ...)
-{
- va_list args;
- va_start (args, format);
- va_list args_copy;
- va_copy (args_copy, args);
-
- const char *str;
- int number;
- float fnumber;
-
- while (*format)
- {
- switch (*format++)
- {
- case 's': // string
- str = va_arg (args_copy, const char *);
- break;
- case 'd': // int
- number = va_arg (args_copy, int);
- break;
- case 'f': // float
- fnumber = va_arg (args_copy, double);
- break;
- default:
- break;
- }
- }
- va_end (args_copy);
- va_end (args);
-}
-
-int
-main ()
-{
-
- // Check bool.
- _Bool success = false;
-
- // Check restrict.
- if (test_restrict ("String literal") == 0)
- success = true;
- char *restrict newvar = "Another string";
-
- // Check varargs.
- test_varargs ("s, d' f .", "string", 65, 34.234);
- test_varargs_macros ();
-
- // Check flexible array members.
- struct incomplete_array *ia =
- malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
- ia->datasize = 10;
- for (int i = 0; i < ia->datasize; ++i)
- ia->data[i] = i * 1.234;
-
- // Check named initializers.
- struct named_init ni = {
- .number = 34,
- .name = L"Test wide string",
- .average = 543.34343,
- };
-
- ni.number = 58;
-
- int dynamic_array[ni.number];
- dynamic_array[ni.number - 1] = 543;
-
- // work around unused variable warnings
- return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
- || dynamic_array[ni.number - 1] != 543);
-
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c99=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c99" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c99" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c99"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
-$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c99" != xno; then :
- ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdarg.h>
-#include <stdio.h>
-struct stat;
-/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
-struct buf { int x; };
-FILE * (*rcsopen) (struct buf *, struct stat *, int);
-static char *e (p, i)
- char **p;
- int i;
-{
- return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
- char *s;
- va_list v;
- va_start (v,p);
- s = g (p, va_arg (v,int));
- va_end (v);
- return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has
- function prototypes and stuff, but not '\xHH' hex character constants.
- These don't provoke an error unfortunately, instead are silently treated
- as 'x'. The following induces an error, until -std is added to get
- proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an
- array size at least. It's necessary to write '\x00'==0 to get something
- that's true only with -std. */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
-
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
- inside strings and character constants. */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
-
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1];
- ;
- return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
- -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
- CC="$ac_save_CC $ac_arg"
- if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
- test "x$ac_cv_prog_cc_c89" != "xno" && break
-done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
-
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
- x)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
- xno)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
- *)
- CC="$CC $ac_cv_prog_cc_c89"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
-esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
- ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89
-else
- ac_cv_prog_cc_stdc=no
-fi
-
-fi
- ;;
-esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5
-$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; }
- if ${ac_cv_prog_cc_stdc+:} false; then :
- $as_echo_n "(cached) " >&6
-fi
-
- case $ac_cv_prog_cc_stdc in #(
- no) :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;; #(
- '') :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;; #(
- *) :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5
-$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;;
-esac
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
-$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if ${ac_cv_c_const+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
+printf %s "checking for an ANSI C-conforming const... " >&6; }
+if test ${ac_cv_c_const+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
#ifndef __cplusplus
@@ -16762,7 +17398,7 @@ main ()
/* NEC SVR4.0.2 mips cc rejects this. */
struct point {int x, y;};
static struct point const zero = {0,0};
- /* AIX XL C 1.02.0.0 rejects this.
+ /* IBM XL C 1.02.0.0 rejects this.
It does not let you subtract one const X* pointer from another in
an arm of an if-expression whose if-part is not a constant
expression */
@@ -16790,7 +17426,7 @@ main ()
iptr p = 0;
++p;
}
- { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
+ { /* IBM XL C 1.02.0.0 rejects this sort of thing, saying
"k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
struct s { int j; const int *ap[3]; } bx;
struct s *b = &bx; b->j = 5;
@@ -16806,47 +17442,50 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_const=yes
-else
+else $as_nop
ac_cv_c_const=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
-$as_echo "$ac_cv_c_const" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5
+printf "%s\n" "$ac_cv_c_const" >&6; }
if test $ac_cv_c_const = no; then
-$as_echo "#define const /**/" >>confdefs.h
+printf "%s\n" "#define const /**/" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
-$as_echo_n "checking for inline... " >&6; }
-if ${ac_cv_c_inline+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
+printf %s "checking for inline... " >&6; }
+if test ${ac_cv_c_inline+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#ifndef __cplusplus
typedef int foo_t;
-static $ac_kw foo_t static_foo () {return 0; }
-$ac_kw foo_t foo () {return 0; }
+static $ac_kw foo_t static_foo (void) {return 0; }
+$ac_kw foo_t foo (void) {return 0; }
#endif
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_inline=$ac_kw
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
test "$ac_cv_c_inline" != no && break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
-$as_echo "$ac_cv_c_inline" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5
+printf "%s\n" "$ac_cv_c_inline" >&6; }
case $ac_cv_c_inline in
inline | yes) ;;
@@ -16863,16 +17502,17 @@ _ACEOF
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
-$as_echo_n "checking for working volatile... " >&6; }
-if ${ac_cv_c_volatile+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5
+printf %s "checking for working volatile... " >&6; }
+if test ${ac_cv_c_volatile+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
volatile int x;
@@ -16882,23 +17522,24 @@ return !x && !y;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_c_volatile=yes
-else
+else $as_nop
ac_cv_c_volatile=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
-$as_echo "$ac_cv_c_volatile" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5
+printf "%s\n" "$ac_cv_c_volatile" >&6; }
if test $ac_cv_c_volatile = no; then
-$as_echo "#define volatile /**/" >>confdefs.h
+printf "%s\n" "#define volatile /**/" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for variadic macro support in cpp" >&5
-$as_echo_n "checking for variadic macro support in cpp... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for variadic macro support in cpp" >&5
+printf %s "checking for variadic macro support in cpp... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -16910,24 +17551,25 @@ $ac_includes_default
#endif
int
-main ()
+main (void)
{
sudo_fprintf(stderr, "a %s", "test");
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if ac_fn_c_try_compile "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
-$as_echo "#define NO_VARIADIC_MACROS 1" >>confdefs.h
+printf "%s\n" "#define NO_VARIADIC_MACROS 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Your C preprocessor doesn't support variadic macros, debugging support will be limited" >&5
-$as_echo "$as_me: WARNING: Your C preprocessor doesn't support variadic macros, debugging support will be limited" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Your C preprocessor doesn't support variadic macros, debugging support will be limited" >&5
+printf "%s\n" "$as_me: WARNING: Your C preprocessor doesn't support variadic macros, debugging support will be limited" >&2;}
for _sym in sudo_debug_printf_nvm_v1; do
COMPAT_EXP="${COMPAT_EXP}${_sym}
@@ -16936,17 +17578,18 @@ $as_echo "$as_me: WARNING: Your C preprocessor doesn't support variadic macros,
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
for ac_prog in gawk mawk nawk awk
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_AWK+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$AWK"; then
ac_cv_prog_AWK="$AWK" # Let the user override the test.
else
@@ -16954,11 +17597,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -16969,11 +17616,11 @@ fi
fi
AWK=$ac_cv_prog_AWK
if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+printf "%s\n" "$AWK" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -16984,11 +17631,12 @@ for ac_prog in 'bison -y' byacc
do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_YACC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_YACC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$YACC"; then
ac_cv_prog_YACC="$YACC" # Let the user override the test.
else
@@ -16996,11 +17644,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_YACC="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -17011,11 +17663,11 @@ fi
fi
YACC=$ac_cv_prog_YACC
if test -n "$YACC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
-$as_echo "$YACC" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $YACC" >&5
+printf "%s\n" "$YACC" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -17025,11 +17677,12 @@ test -n "$YACC" || YACC="yacc"
# Extract the first word of "flex", so it can be a program name with args.
set dummy flex; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_FLEX+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_FLEX+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $FLEX in
[\\/]* | ?:[\\/]*)
ac_cv_path_FLEX="$FLEX" # Let the user override the test with a path.
@@ -17039,11 +17692,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_FLEX="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_FLEX="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -17056,22 +17713,23 @@ esac
fi
FLEX=$ac_cv_path_FLEX
if test -n "$FLEX"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5
-$as_echo "$FLEX" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5
+printf "%s\n" "$FLEX" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
# Extract the first word of "mv", so it can be a program name with args.
set dummy mv; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_MVPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_MVPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $MVPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_MVPROG="$MVPROG" # Let the user override the test with a path.
@@ -17081,11 +17739,15 @@ else
for as_dir in /usr/bin$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/ucb$PATH_SEPARATOR/usr/local/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_MVPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_MVPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -17097,11 +17759,11 @@ esac
fi
MVPROG=$ac_cv_path_MVPROG
if test -n "$MVPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MVPROG" >&5
-$as_echo "$MVPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MVPROG" >&5
+printf "%s\n" "$MVPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -17113,11 +17775,12 @@ EOF
# Extract the first word of "sh", so it can be a program name with args.
set dummy sh; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_BSHELLPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_BSHELLPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $BSHELLPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_BSHELLPROG="$BSHELLPROG" # Let the user override the test with a path.
@@ -17127,11 +17790,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_BSHELLPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_BSHELLPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -17144,11 +17811,11 @@ esac
fi
BSHELLPROG=$ac_cv_path_BSHELLPROG
if test -n "$BSHELLPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $BSHELLPROG" >&5
-$as_echo "$BSHELLPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BSHELLPROG" >&5
+printf "%s\n" "$BSHELLPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -17161,11 +17828,12 @@ if test -z "$with_sendmail"; then
# Extract the first word of "sendmail", so it can be a program name with args.
set dummy sendmail; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_SENDMAILPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_SENDMAILPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $SENDMAILPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_SENDMAILPROG="$SENDMAILPROG" # Let the user override the test with a path.
@@ -17175,11 +17843,15 @@ else
for as_dir in /usr/sbin$PATH_SEPARATOR/usr/lib$PATH_SEPARATOR/usr/etc$PATH_SEPARATOR/usr/ucblib$PATH_SEPARATOR/usr/local/lib$PATH_SEPARATOR/usr/local/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_SENDMAILPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_SENDMAILPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -17191,11 +17863,11 @@ esac
fi
SENDMAILPROG=$ac_cv_path_SENDMAILPROG
if test -n "$SENDMAILPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SENDMAILPROG" >&5
-$as_echo "$SENDMAILPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SENDMAILPROG" >&5
+printf "%s\n" "$SENDMAILPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -17208,11 +17880,12 @@ fi
# Extract the first word of "vi", so it can be a program name with args.
set dummy vi; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_VIPROG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_VIPROG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $VIPROG in
[\\/]* | ?:[\\/]*)
ac_cv_path_VIPROG="$VIPROG" # Let the user override the test with a path.
@@ -17222,11 +17895,15 @@ else
for as_dir in /usr/bin$PATH_SEPARATOR/bin$PATH_SEPARATOR/usr/ucb$PATH_SEPARATOR/usr/bsd$PATH_SEPARATOR/usr/local/bin
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_VIPROG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_VIPROG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -17238,11 +17915,11 @@ esac
fi
VIPROG=$ac_cv_path_VIPROG
if test -n "$VIPROG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $VIPROG" >&5
-$as_echo "$VIPROG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $VIPROG" >&5
+printf "%s\n" "$VIPROG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -17251,47 +17928,47 @@ fi
EOF
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking which syslog facility sudo should log with" >&5
-$as_echo_n "checking which syslog facility sudo should log with... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which syslog facility sudo should log with" >&5
+printf %s "checking which syslog facility sudo should log with... " >&6; }
if test X"$with_logfac" = X""; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <syslog.h>
int
-main ()
+main (void)
{
int i = LOG_AUTHPRIV; (void)i;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
logfac=authpriv
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-cat >>confdefs.h <<_ACEOF
-#define LOGFAC "$logfac"
-_ACEOF
+printf "%s\n" "#define LOGFAC \"$logfac\"" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $logfac" >&5
-$as_echo "$logfac" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $logfac" >&5
+printf "%s\n" "$logfac" >&6; }
ac_header_dirent=no
for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do
- as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
-$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval \${$as_ac_Header+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_Header=`printf "%s\n" "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
+printf %s "checking for $ac_hdr that defines DIR... " >&6; }
+if eval test \${$as_ac_Header+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <$ac_hdr>
int
-main ()
+main (void)
{
if ((DIR *) 0)
return 0;
@@ -17299,19 +17976,21 @@ return 0;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
eval "$as_ac_Header=yes"
-else
+else $as_nop
eval "$as_ac_Header=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
eval ac_res=\$$as_ac_Header
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_hdr" | $as_tr_cpp` 1
_ACEOF
ac_header_dirent=$ac_hdr; break
@@ -17320,11 +17999,12 @@ fi
done
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17332,56 +18012,59 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' dir; do
+for ac_lib in '' dir
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
-$as_echo_n "checking for library containing opendir... " >&6; }
-if ${ac_cv_search_opendir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
+printf %s "checking for library containing opendir... " >&6; }
+if test ${ac_cv_search_opendir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17389,182 +18072,214 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char opendir ();
int
-main ()
+main (void)
{
return opendir ();
;
return 0;
}
_ACEOF
-for ac_lib in '' x; do
+for ac_lib in '' x
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_opendir=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_opendir+:} false; then :
+ if test ${ac_cv_search_opendir+y}
+then :
break
fi
done
-if ${ac_cv_search_opendir+:} false; then :
+if test ${ac_cv_search_opendir+y}
+then :
-else
+else $as_nop
ac_cv_search_opendir=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
-$as_echo "$ac_cv_search_opendir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5
+printf "%s\n" "$ac_cv_search_opendir" >&6; }
ac_res=$ac_cv_search_opendir
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking 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
+ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
+if test "x$ac_cv_type__Bool" = xyes
+then :
+
+printf "%s\n" "#define HAVE__BOOL 1" >>confdefs.h
+
+
+fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
+printf %s "checking for stdbool.h that conforms to C99... " >&6; }
+if test ${ac_cv_header_stdbool_h+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#include <stdbool.h>
- #include <stdbool.h>
- #ifndef bool
- "error: bool is not defined"
- #endif
- #ifndef false
- "error: false is not defined"
- #endif
- #if false
- "error: false is not 0"
+ #ifndef __bool_true_false_are_defined
+ #error "__bool_true_false_are_defined is not defined"
#endif
- #ifndef true
- "error: true is not defined"
+ char a[__bool_true_false_are_defined == 1 ? 1 : -1];
+
+ /* Regardless of whether this is C++ or "_Bool" is a
+ valid type name, "true" and "false" should be usable
+ in #if expressions and integer constant expressions,
+ and "bool" should be a valid type name. */
+
+ #if !true
+ #error "'true' is not true"
#endif
#if true != 1
- "error: true is not 1"
+ #error "'true' is not equal to 1"
#endif
- #ifndef __bool_true_false_are_defined
- "error: __bool_true_false_are_defined is not defined"
+ char b[true == 1 ? 1 : -1];
+ char c[true];
+
+ #if false
+ #error "'false' is not false"
+ #endif
+ #if false != 0
+ #error "'false' is not equal to 0"
#endif
+ char d[false == 0 ? 1 : -1];
+
+ enum { e = false, f = true, g = false * true, h = true * 256 };
+
+ char i[(bool) 0.5 == true ? 1 : -1];
+ char j[(bool) 0.0 == false ? 1 : -1];
+ char k[sizeof (bool) > 0 ? 1 : -1];
+
+ struct sb { bool s: 1; bool t; } s;
+ char l[sizeof s.t > 0 ? 1 : -1];
- struct s { _Bool s: 1; _Bool t; } 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];
+ bool m[h];
+ char n[sizeof m == h * sizeof m[0] ? 1 : -1];
+ char o[-1 - (bool) 0 < 0 ? 1 : -1];
/* Catch a bug in an HP-UX C compiler. See
- http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
- http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
+ https://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
+ https://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
*/
- _Bool q = true;
- _Bool *pq = &q;
+ bool p = true;
+ bool *pp = &p;
+
+ /* C 1999 specifies that bool, true, and false are to be
+ macros, but C++ 2011 and later overrule this. */
+ #if __cplusplus < 201103
+ #ifndef bool
+ #error "bool is not defined"
+ #endif
+ #ifndef false
+ #error "false is not defined"
+ #endif
+ #ifndef true
+ #error "true is not defined"
+ #endif
+ #endif
+
+ /* If _Bool is available, repeat with it all the tests
+ above that used bool. */
+ #ifdef HAVE__BOOL
+ struct sB { _Bool s: 1; _Bool t; } t;
+
+ char q[(_Bool) 0.5 == true ? 1 : -1];
+ char r[(_Bool) 0.0 == false ? 1 : -1];
+ char u[sizeof (_Bool) > 0 ? 1 : -1];
+ char v[sizeof t.t > 0 ? 1 : -1];
+
+ _Bool w[h];
+ char x[sizeof m == h * sizeof m[0] ? 1 : -1];
+ char y[-1 - (_Bool) 0 < 0 ? 1 : -1];
+ _Bool z = true;
+ _Bool *pz = &p;
+ #endif
int
-main ()
+main (void)
{
- bool e = &s;
- *pq |= q;
- *pq |= ! q;
- /* Refer to every declared value, to avoid compiler optimizations. */
- return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l
- + !m + !n + !o + !p + !q + !pq);
+ bool ps = &s;
+ *pp |= p;
+ *pp |= ! p;
+
+ #ifdef HAVE__BOOL
+ _Bool pt = &t;
+ *pz |= z;
+ *pz |= ! z;
+ #endif
+
+ /* Refer to every declared value, so they cannot be
+ discarded as unused. */
+ return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !j + !k
+ + !l + !m + !n + !o + !p + !pp + !ps
+ #ifdef HAVE__BOOL
+ + !q + !r + !u + !v + !w + !x + !y + !z + !pt
+ #endif
+ );
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_header_stdbool_h=yes
-else
+else $as_nop
ac_cv_header_stdbool_h=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
-$as_echo "$ac_cv_header_stdbool_h" >&6; }
- ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
-if test "x$ac_cv_type__Bool" = xyes; then :
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE__BOOL 1
-_ACEOF
-
-
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
+printf "%s\n" "$ac_cv_header_stdbool_h" >&6; }
if test $ac_cv_header_stdbool_h = yes; then
-$as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h
-
-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
+printf "%s\n" "#define HAVE_STDBOOL_H 1" >>confdefs.h
fi
-done
-
-
-
-ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_mkdev_h" = xyes; then :
+ac_fn_c_check_header_compile "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mkdev_h" = xyes
+then :
-$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h
+printf "%s\n" "#define MAJOR_IN_MKDEV 1" >>confdefs.h
fi
-
if test $ac_cv_header_sys_mkdev_h = no; then
- ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes
+then :
-$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
+printf "%s\n" "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
fi
-
fi
@@ -17579,50 +18294,40 @@ fi
-
-
-
-
-
-
-
-
-
-
-
-for ac_header in utmps.h utmpx.h
+ for ac_header in utmps.h utmpx.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 :
+ as_ac_Header=`printf "%s\n" "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
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
break
fi
done
-
-for ac_header in endian.h sys/endian.h machine/endian.h
+ for ac_header in endian.h sys/endian.h machine/endian.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 :
+ as_ac_Header=`printf "%s\n" "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
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
break
fi
done
-
-for ac_header in procfs.h sys/procfs.h
+ for ac_header in procfs.h sys/procfs.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 :
+ as_ac_Header=`printf "%s\n" "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
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
ac_fn_c_check_member "$LINENO" "struct psinfo" "pr_ttydev" "ac_cv_member_struct_psinfo_pr_ttydev" "$ac_includes_default
#ifdef HAVE_PROCFS_H
@@ -17633,22 +18338,17 @@ _ACEOF
#endif
"
-if test "x$ac_cv_member_struct_psinfo_pr_ttydev" = xyes; then :
+if test "x$ac_cv_member_struct_psinfo_pr_ttydev" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_PSINFO_PR_TTYDEV 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_PSINFO_PR_TTYDEV 1" >>confdefs.h
-for ac_func in _ttyname_dev
-do :
- ac_fn_c_check_func "$LINENO" "_ttyname_dev" "ac_cv_func__ttyname_dev"
-if test "x$ac_cv_func__ttyname_dev" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE__TTYNAME_DEV 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "_ttyname_dev" "ac_cv_func__ttyname_dev"
+if test "x$ac_cv_func__ttyname_dev" = xyes
+then :
+ printf "%s\n" "#define HAVE__TTYNAME_DEV 1" >>confdefs.h
fi
-done
fi
@@ -17656,22 +18356,23 @@ break
fi
done
-
#
# Check for large file support.
#
# Check whether --enable-largefile was given.
-if test "${enable_largefile+set}" = set; then :
+if test ${enable_largefile+y}
+then :
enableval=$enable_largefile;
fi
if test "$enable_largefile" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
-$as_echo_n "checking for special C compiler options needed for large files... " >&6; }
-if ${ac_cv_sys_largefile_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5
+printf %s "checking for special C compiler options needed for large files... " >&6; }
+if test ${ac_cv_sys_largefile_CC+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_sys_largefile_CC=no
if test "$GCC" != yes; then
ac_save_CC=$CC
@@ -17685,44 +18386,47 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
CC="$CC -n32"
- if ac_fn_c_try_compile "$LINENO"; then :
+ if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_largefile_CC=' -n32'; break
fi
-rm -f core conftest.err conftest.$ac_objext
+rm -f core conftest.err conftest.$ac_objext conftest.beam
break
done
CC=$ac_save_CC
rm -f conftest.$ac_ext
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
-$as_echo "$ac_cv_sys_largefile_CC" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5
+printf "%s\n" "$ac_cv_sys_largefile_CC" >&6; }
if test "$ac_cv_sys_largefile_CC" != no; then
CC=$CC$ac_cv_sys_largefile_CC
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
-$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
-if ${ac_cv_sys_file_offset_bits+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+printf %s "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; }
+if test ${ac_cv_sys_file_offset_bits+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17731,22 +18435,23 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _FILE_OFFSET_BITS 64
@@ -17755,43 +18460,43 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_file_offset_bits=64; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_file_offset_bits=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
-$as_echo "$ac_cv_sys_file_offset_bits" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5
+printf "%s\n" "$ac_cv_sys_file_offset_bits" >&6; }
case $ac_cv_sys_file_offset_bits in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits
-_ACEOF
+printf "%s\n" "#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits" >>confdefs.h
;;
esac
rm -rf conftest*
if test $ac_cv_sys_file_offset_bits = unknown; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
-$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; }
-if ${ac_cv_sys_large_files+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5
+printf %s "checking for _LARGE_FILES value needed for large files... " >&6; }
+if test ${ac_cv_sys_large_files+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
while :; do
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17800,22 +18505,23 @@ else
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=no; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#define _LARGE_FILES 1
@@ -17824,40 +18530,37 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
We can't simply define LARGE_OFF_T to be 9223372036854775807,
since some C++ compilers masquerading as C compilers
incorrectly reject 9223372036854775807. */
-#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
+#define LARGE_OFF_T (((off_t) 1 << 31 << 31) - 1 + ((off_t) 1 << 31 << 31))
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
&& LARGE_OFF_T % 2147483647 == 1)
? 1 : -1];
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ac_cv_sys_large_files=1; break
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
ac_cv_sys_large_files=unknown
break
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
-$as_echo "$ac_cv_sys_large_files" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5
+printf "%s\n" "$ac_cv_sys_large_files" >&6; }
case $ac_cv_sys_large_files in #(
no | unknown) ;;
*)
-cat >>confdefs.h <<_ACEOF
-#define _LARGE_FILES $ac_cv_sys_large_files
-_ACEOF
+printf "%s\n" "#define _LARGE_FILES $ac_cv_sys_large_files" >>confdefs.h
;;
esac
rm -rf conftest*
fi
-
-
fi
#
@@ -17868,26 +18571,28 @@ fi
#
case "$host_os" in
hpux*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/socket.h needs _XOPEN_SOURCE_EXTENDED for MSG_WAITALL" >&5
-$as_echo_n "checking whether sys/socket.h needs _XOPEN_SOURCE_EXTENDED for MSG_WAITALL... " >&6; }
-if ${sudo_cv_xopen_source_extended+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sys/socket.h needs _XOPEN_SOURCE_EXTENDED for MSG_WAITALL" >&5
+printf %s "checking whether sys/socket.h needs _XOPEN_SOURCE_EXTENDED for MSG_WAITALL... " >&6; }
+if test ${sudo_cv_xopen_source_extended+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
# include <sys/socket.h>
int
-main ()
+main (void)
{
int a = MSG_WAITALL; return a;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_xopen_source_extended=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -17896,36 +18601,38 @@ else
# include <sys/socket.h>
# include <net/if.h>
int
-main ()
+main (void)
{
int a = MSG_WAITALL; return a;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_xopen_source_extended=yes
-else
+else $as_nop
sudo_cv_xopen_source_extended=error
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_xopen_source_extended" >&5
-$as_echo "$sudo_cv_xopen_source_extended" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_xopen_source_extended" >&5
+printf "%s\n" "$sudo_cv_xopen_source_extended" >&6; }
if test "$sudo_cv_xopen_source_extended" = "yes"; then
- $as_echo "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h
+ printf "%s\n" "#define _XOPEN_SOURCE_EXTENDED 1" >>confdefs.h
fi
;;
esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking POSIX termios" >&5
-$as_echo_n "checking POSIX termios... " >&6; }
-if ${ac_cv_sys_posix_termios+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking POSIX termios" >&5
+printf %s "checking POSIX termios... " >&6; }
+if test ${ac_cv_sys_posix_termios+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -17933,7 +18640,7 @@ else
#include <termios.h>
int
-main ()
+main (void)
{
/* SunOS 4.0.3 has termios.h but not the library calls. */
tcgetattr(0, 0);
@@ -17941,16 +18648,17 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_sys_posix_termios=yes
-else
+else $as_nop
ac_cv_sys_posix_termios=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_posix_termios" >&5
-$as_echo "$ac_cv_sys_posix_termios" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_posix_termios" >&5
+printf "%s\n" "$ac_cv_sys_posix_termios" >&6; }
if test "$ac_cv_sys_posix_termios" != "yes"; then
as_fn_error $? "Must have POSIX termios to build sudo" "$LINENO" 5
@@ -17963,27 +18671,27 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
$ac_includes_default
#include <paths.h>
int
-main ()
+main (void)
{
char *p = _PATH_MAILDIR;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
maildir=yes
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
if test $maildir = no; then
# Solaris has maillock.h which defines MAILDIR
- for ac_header in maillock.h
+ for ac_header in maillock.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "maillock.h" "ac_cv_header_maillock_h" "$ac_includes_default"
-if test "x$ac_cv_header_maillock_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_MAILLOCK_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "maillock.h" "ac_cv_header_maillock_h" "$ac_includes_default"
+if test "x$ac_cv_header_maillock_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_MAILLOCK_H 1" >>confdefs.h
cat >>confdefs.h <<\EOF
#define _PATH_MAILDIR MAILDIR
@@ -17994,7 +18702,6 @@ EOF
fi
done
-
if test $maildir = no; then
for d in /var/mail /var/spool/mail /usr/spool/mail; do
if test -d "$d"; then
@@ -18017,16 +18724,15 @@ EOF
fi
if test ${with_logincap-'no'} != "no"; then
- for ac_header in login_cap.h
+ for ac_header in login_cap.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "login_cap.h" "ac_cv_header_login_cap_h" "$ac_includes_default"
-if test "x$ac_cv_header_login_cap_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOGIN_CAP_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "login_cap.h" "ac_cv_header_login_cap_h" "$ac_includes_default"
+if test "x$ac_cv_header_login_cap_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOGIN_CAP_H 1" >>confdefs.h
LOGINCAP_USAGE='[-c class] '; LCMAN=1
case "$OS" in
- freebsd|netbsd)
+ freebsd*|netbsd*)
SUDO_LIBS="${SUDO_LIBS} -lutil"
SUDOERS_LIBS="${SUDOERS_LIBS} -lutil"
;;
@@ -18035,17 +18741,18 @@ _ACEOF
fi
done
-
fi
if test ${with_project-'no'} != "no"; then
- ac_fn_c_check_header_mongrel "$LINENO" "project.h" "ac_cv_header_project_h" "$ac_includes_default"
-if test "x$ac_cv_header_project_h" = xyes; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for setproject in -lproject" >&5
-$as_echo_n "checking for setproject in -lproject... " >&6; }
-if ${ac_cv_lib_project_setproject+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "project.h" "ac_cv_header_project_h" "$ac_includes_default"
+if test "x$ac_cv_header_project_h" = xyes
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for setproject in -lproject" >&5
+printf %s "checking for setproject in -lproject... " >&6; }
+if test ${ac_cv_lib_project_setproject+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lproject $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -18054,32 +18761,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 setproject ();
int
-main ()
+main (void)
{
return setproject ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_project_setproject=yes
-else
+else $as_nop
ac_cv_lib_project_setproject=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_project_setproject" >&5
-$as_echo "$ac_cv_lib_project_setproject" >&6; }
-if test "x$ac_cv_lib_project_setproject" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_project_setproject" >&5
+printf "%s\n" "$ac_cv_lib_project_setproject" >&6; }
+if test "x$ac_cv_lib_project_setproject" = xyes
+then :
- $as_echo "#define HAVE_PROJECT_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_PROJECT_H 1" >>confdefs.h
SUDO_LIBS="${SUDO_LIBS} -lproject"
@@ -18088,90 +18794,95 @@ fi
fi
-
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 :
+if test "x$ac_cv_type_mode_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define mode_t int
-_ACEOF
+printf "%s\n" "#define mode_t int" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
-$as_echo_n "checking for uid_t in sys/types.h... " >&6; }
-if ${ac_cv_type_uid_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5
+printf %s "checking for uid_t in sys/types.h... " >&6; }
+if test ${ac_cv_type_uid_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "uid_t" >/dev/null 2>&1; then :
+ $EGREP "uid_t" >/dev/null 2>&1
+then :
ac_cv_type_uid_t=yes
-else
+else $as_nop
ac_cv_type_uid_t=no
fi
-rm -f conftest*
+rm -rf conftest*
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
-$as_echo "$ac_cv_type_uid_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5
+printf "%s\n" "$ac_cv_type_uid_t" >&6; }
if test $ac_cv_type_uid_t = no; then
-$as_echo "#define uid_t int" >>confdefs.h
+printf "%s\n" "#define uid_t int" >>confdefs.h
-$as_echo "#define gid_t int" >>confdefs.h
+printf "%s\n" "#define gid_t int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "clockid_t" "ac_cv_type_clockid_t" "#include <sys/types.h>
#include <time.h>
"
-if test "x$ac_cv_type_clockid_t" = xyes; then :
+if test "x$ac_cv_type_clockid_t" = xyes
+then :
-else
- $as_echo "#define clockid_t int" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define clockid_t int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include <sys/types.h>
#include <signal.h>
"
-if test "x$ac_cv_type_sig_atomic_t" = xyes; then :
+if test "x$ac_cv_type_sig_atomic_t" = xyes
+then :
-else
- $as_echo "#define sig_atomic_t int" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define sig_atomic_t int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "struct in6_addr" "ac_cv_type_struct_in6_addr" "#include <sys/types.h>
#include <netinet/in.h>
"
-if test "x$ac_cv_type_struct_in6_addr" = xyes; then :
+if test "x$ac_cv_type_struct_in6_addr" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_IN6_ADDR 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_IN6_ADDR 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
-$as_echo_n "checking for unsigned long long int... " >&6; }
-if ${ac_cv_type_unsigned_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+printf %s "checking for unsigned long long int... " >&6; }
+if test ${ac_cv_type_unsigned_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_type_unsigned_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* For now, do not test the preprocessor; as of 2007 there are too many
@@ -18189,7 +18900,7 @@ else
? 1 : -1)];
int i = 63;
int
-main ()
+main (void)
{
/* Test availability of runtime routines for shift and division. */
long long int llmax = 9223372036854775807ll;
@@ -18203,80 +18914,86 @@ main ()
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
ac_cv_type_unsigned_long_long_int=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
-$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_unsigned_long_long_int" >&6; }
if test $ac_cv_type_unsigned_long_long_int = yes; then
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
-$as_echo_n "checking for long long int... " >&6; }
-if ${ac_cv_type_long_long_int+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+printf %s "checking for long long int... " >&6; }
+if test ${ac_cv_type_long_long_int+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_cv_type_long_long_int=yes
- if test "x${ac_cv_prog_cc_c99-no}" = xno; then
- ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
- if test $ac_cv_type_long_long_int = yes; then
- if test "$cross_compiling" = yes; then :
+ case $ac_prog_cc_stdc in
+ no | c89) ;;
+ *)
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_long_long_int = yes; then
+ if test "$cross_compiling" = yes
+then :
:
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <limits.h>
- #ifndef LLONG_MAX
- # define HALF \
- (1LL << (sizeof (long long int) * CHAR_BIT - 2))
- # define LLONG_MAX (HALF - 1 + HALF)
- #endif
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
int
-main ()
+main (void)
{
long long int n = 1;
- int i;
- for (i = 0; ; i++)
- {
- long long int m = n << i;
- if (m >> i != n)
- return 1;
- if (LLONG_MAX / 2 < m)
- break;
- }
- return 0;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
-else
+else $as_nop
ac_cv_type_long_long_int=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
- fi
- fi
+ fi;;
+ esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
-$as_echo "$ac_cv_type_long_long_int" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+printf "%s\n" "$ac_cv_type_long_long_int" >&6; }
if test $ac_cv_type_long_long_int = yes; then
-$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
fi
@@ -18284,57 +19001,52 @@ if test X"$ac_cv_type_long_long_int" != X"yes"; then
as_fn_error $? "\"C compiler does not appear to support the long long int type\"" "$LINENO" 5
fi
ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default"
-if test "x$ac_cv_type_intmax_t" = xyes; then :
+if test "x$ac_cv_type_intmax_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define intmax_t long long
-_ACEOF
+printf "%s\n" "#define intmax_t long long" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintmax_t" = xyes; then :
+if test "x$ac_cv_type_uintmax_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define uintmax_t unsigned long long
-_ACEOF
+printf "%s\n" "#define uintmax_t unsigned long long" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uint8_t" "ac_cv_type_uint8_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint8_t" = xyes; then :
+if test "x$ac_cv_type_uint8_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define uint8_t unsigned char
-_ACEOF
+printf "%s\n" "#define uint8_t unsigned char" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uint32_t" "ac_cv_type_uint32_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint32_t" = xyes; then :
+if test "x$ac_cv_type_uint32_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define uint32_t unsigned int
-_ACEOF
+printf "%s\n" "#define uint32_t unsigned int" >>confdefs.h
fi
ac_fn_c_check_type "$LINENO" "uint64_t" "ac_cv_type_uint64_t" "$ac_includes_default"
-if test "x$ac_cv_type_uint64_t" = xyes; then :
+if test "x$ac_cv_type_uint64_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define uint64_t unsigned long long
-_ACEOF
+printf "%s\n" "#define uint64_t unsigned long long" >>confdefs.h
fi
@@ -18342,23 +19054,26 @@ ac_fn_c_check_type "$LINENO" "socklen_t" "ac_cv_type_socklen_t" "
$ac_includes_default
#include <sys/socket.h>
"
-if test "x$ac_cv_type_socklen_t" = xyes; then :
+if test "x$ac_cv_type_socklen_t" = xyes
+then :
-else
- $as_echo "#define socklen_t unsigned int" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define socklen_t unsigned int" >>confdefs.h
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking max length of uid_t" >&5
-$as_echo_n "checking max length of uid_t... " >&6; }
-if ${sudo_cv_uid_t_len+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking max length of uid_t" >&5
+printf %s "checking max length of uid_t... " >&6; }
+if test ${sudo_cv_uid_t_len+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
rm -f conftestdata
-if test "$cross_compiling" = yes; then :
+if test "$cross_compiling" = yes
+then :
sudo_cv_uid_t_len=10
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -18381,9 +19096,10 @@ int main() {
return(0);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
sudo_cv_uid_t_len=`cat conftestdata`
-else
+else $as_nop
sudo_cv_uid_t_len=10
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -18394,12 +19110,10 @@ fi
fi
rm -f conftestdata
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_uid_t_len" >&5
-$as_echo "$sudo_cv_uid_t_len" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_uid_t_len" >&5
+printf "%s\n" "$sudo_cv_uid_t_len" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define MAX_UID_T_LEN $sudo_cv_uid_t_len
-_ACEOF
+printf "%s\n" "#define MAX_UID_T_LEN $sudo_cv_uid_t_len" >>confdefs.h
@@ -18408,9 +19122,10 @@ _ACEOF
# include <sys/socket.h>
"
-if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes; then :
+if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_SOCKADDR_SA_LEN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_SA_LEN 1" >>confdefs.h
fi
@@ -18421,9 +19136,10 @@ fi
# include <sys/socket.h>
"
-if test "x$ac_cv_member_struct_sockaddr_in_sin_len" = xyes; then :
+if test "x$ac_cv_member_struct_sockaddr_in_sin_len" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_IN_SIN_LEN 1" >>confdefs.h
fi
@@ -18432,17 +19148,19 @@ fi
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of id_t" >&5
-$as_echo_n "checking size of id_t... " >&6; }
-if ${ac_cv_sizeof_id_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (id_t))" "ac_cv_sizeof_id_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of id_t" >&5
+printf %s "checking size of id_t... " >&6; }
+if test ${ac_cv_sizeof_id_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (id_t))" "ac_cv_sizeof_id_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_id_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (id_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -18451,31 +19169,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_id_t" >&5
-$as_echo "$ac_cv_sizeof_id_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_id_t" >&5
+printf "%s\n" "$ac_cv_sizeof_id_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_ID_T $ac_cv_sizeof_id_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_ID_T $ac_cv_sizeof_id_t" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
-$as_echo_n "checking size of long long... " >&6; }
-if ${ac_cv_sizeof_long_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of long long" >&5
+printf %s "checking size of long long... " >&6; }
+if test ${ac_cv_sizeof_long_long+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long))" "ac_cv_sizeof_long_long" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_long_long" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (long long)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -18484,31 +19202,31 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
-$as_echo "$ac_cv_sizeof_long_long" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long" >&5
+printf "%s\n" "$ac_cv_sizeof_long_long" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long
-_ACEOF
+printf "%s\n" "#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long" >>confdefs.h
# The cast to long int works around a bug in the HP C Compiler
# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects
# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'.
# This bug is HP SR number 8606223364.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
-$as_echo_n "checking size of time_t... " >&6; }
-if ${ac_cv_sizeof_time_t+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default"; then :
-
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5
+printf %s "checking size of time_t... " >&6; }
+if test ${ac_cv_sizeof_time_t+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default"
+then :
+
+else $as_nop
if test "$ac_cv_type_time_t" = yes; then
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+printf "%s\n" "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "cannot compute sizeof (time_t)
See \`config.log' for more details" "$LINENO" 5; }
else
@@ -18517,14 +19235,12 @@ See \`config.log' for more details" "$LINENO" 5; }
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
-$as_echo "$ac_cv_sizeof_time_t" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5
+printf "%s\n" "$ac_cv_sizeof_time_t" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define SIZEOF_TIME_T $ac_cv_sizeof_time_t
-_ACEOF
+printf "%s\n" "#define SIZEOF_TIME_T $ac_cv_sizeof_time_t" >>confdefs.h
if test $ac_cv_header_utmps_h = "yes"; then
@@ -18534,10 +19250,11 @@ if test $ac_cv_header_utmps_h = "yes"; then
# include <utmps.h>
"
-if test "x$ac_cv_member_struct_utmps_ut_id" = xyes; then :
+if test "x$ac_cv_member_struct_utmps_ut_id" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_ID 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_ID 1" >>confdefs.h
fi
@@ -18547,10 +19264,11 @@ fi
# include <utmps.h>
"
-if test "x$ac_cv_member_struct_utmps_ut_pid" = xyes; then :
+if test "x$ac_cv_member_struct_utmps_ut_pid" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_PID 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_PID 1" >>confdefs.h
fi
@@ -18560,10 +19278,11 @@ fi
# include <utmps.h>
"
-if test "x$ac_cv_member_struct_utmps_ut_tv" = xyes; then :
+if test "x$ac_cv_member_struct_utmps_ut_tv" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_TV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TV 1" >>confdefs.h
fi
@@ -18573,10 +19292,11 @@ fi
# include <utmps.h>
"
-if test "x$ac_cv_member_struct_utmps_ut_type" = xyes; then :
+if test "x$ac_cv_member_struct_utmps_ut_type" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_TYPE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TYPE 1" >>confdefs.h
fi
@@ -18587,11 +19307,10 @@ fi
# include <utmps.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_user" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_user" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTMP_UT_USER 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_USER 1" >>confdefs.h
fi
@@ -18602,29 +19321,31 @@ fi
# include <utmps.h>
"
-if test "x$ac_cv_member_struct_utmps_ut_exit___e_termination" = xyes; then :
+if test "x$ac_cv_member_struct_utmps_ut_exit___e_termination" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT___E_TERMINATION 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT___E_TERMINATION 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct utmps" "ut_exit.e_termination" "ac_cv_member_struct_utmps_ut_exit_e_termination" "
# include <sys/types.h>
# include <utmps.h>
"
-if test "x$ac_cv_member_struct_utmps_ut_exit_e_termination" = xyes; then :
+if test "x$ac_cv_member_struct_utmps_ut_exit_e_termination" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION 1" >>confdefs.h
fi
@@ -18640,10 +19361,11 @@ elif test $ac_cv_header_utmpx_h = "yes"; then
# include <utmpx.h>
"
-if test "x$ac_cv_member_struct_utmpx_ut_id" = xyes; then :
+if test "x$ac_cv_member_struct_utmpx_ut_id" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_ID 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_ID 1" >>confdefs.h
fi
@@ -18653,10 +19375,11 @@ fi
# include <utmpx.h>
"
-if test "x$ac_cv_member_struct_utmpx_ut_pid" = xyes; then :
+if test "x$ac_cv_member_struct_utmpx_ut_pid" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_PID 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_PID 1" >>confdefs.h
fi
@@ -18666,10 +19389,11 @@ fi
# include <utmpx.h>
"
-if test "x$ac_cv_member_struct_utmpx_ut_tv" = xyes; then :
+if test "x$ac_cv_member_struct_utmpx_ut_tv" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_TV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TV 1" >>confdefs.h
fi
@@ -18679,10 +19403,11 @@ fi
# include <utmpx.h>
"
-if test "x$ac_cv_member_struct_utmpx_ut_type" = xyes; then :
+if test "x$ac_cv_member_struct_utmpx_ut_type" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_TYPE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TYPE 1" >>confdefs.h
fi
@@ -18693,11 +19418,10 @@ fi
# include <utmpx.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_user" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_user" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTMP_UT_USER 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_USER 1" >>confdefs.h
fi
@@ -18708,29 +19432,31 @@ fi
# include <utmpx.h>
"
-if test "x$ac_cv_member_struct_utmpx_ut_exit___e_termination" = xyes; then :
+if test "x$ac_cv_member_struct_utmpx_ut_exit___e_termination" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT___E_TERMINATION 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT___E_TERMINATION 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct utmpx" "ut_exit.e_termination" "ac_cv_member_struct_utmpx_ut_exit_e_termination" "
# include <sys/types.h>
# include <utmpx.h>
"
-if test "x$ac_cv_member_struct_utmpx_ut_exit_e_termination" = xyes; then :
+if test "x$ac_cv_member_struct_utmpx_ut_exit_e_termination" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION 1" >>confdefs.h
fi
@@ -18746,10 +19472,11 @@ else
# include <utmp.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_id" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_id" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_ID 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_ID 1" >>confdefs.h
fi
@@ -18759,10 +19486,11 @@ fi
# include <utmp.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_pid" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_pid" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_PID 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_PID 1" >>confdefs.h
fi
@@ -18772,10 +19500,11 @@ fi
# include <utmp.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_tv" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_tv" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_TV 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TV 1" >>confdefs.h
fi
@@ -18785,10 +19514,11 @@ fi
# include <utmp.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_type" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_type" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_TYPE 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_TYPE 1" >>confdefs.h
fi
@@ -18799,11 +19529,10 @@ fi
# include <utmp.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_user" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_user" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_UTMP_UT_USER 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_USER 1" >>confdefs.h
fi
@@ -18814,29 +19543,31 @@ fi
# include <utmp.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_exit___e_termination" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_exit___e_termination" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT___E_TERMINATION 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT___E_TERMINATION 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct utmp" "ut_exit.e_termination" "ac_cv_member_struct_utmp_ut_exit_e_termination" "
# include <sys/types.h>
# include <utmp.h>
"
-if test "x$ac_cv_member_struct_utmp_ut_exit_e_termination" = xyes; then :
+if test "x$ac_cv_member_struct_utmp_ut_exit_e_termination" = xyes
+then :
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT 1" >>confdefs.h
-$as_echo "#define HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION 1" >>confdefs.h
+printf "%s\n" "#define HAVE_STRUCT_UTMP_UT_EXIT_E_TERMINATION 1" >>confdefs.h
fi
@@ -18847,25 +19578,26 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to compile python plugin support" >&5
-$as_echo_n "checking whether to compile python plugin support... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to compile python plugin support" >&5
+printf %s "checking whether to compile python plugin support... " >&6; }
# Check whether --enable-python was given.
-if test "${enable_python+set}" = set; then :
+if test ${enable_python+y}
+then :
enableval=$enable_python; case "$enableval" in
yes|no)
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enableval" >&5
-$as_echo "$enableval" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enableval" >&5
+printf "%s\n" "$enableval" >&6; }
USE_PYTHON=$enableval
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-python: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-python: $enableval" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-python: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-python: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -18878,8 +19610,8 @@ if test ${USE_PYTHON-'no'} = "yes"; then
if test -n "$PYTHON"; then
# If the user set $PYTHON, use it and don't search something else.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3" >&5
-$as_echo_n "checking whether $PYTHON version is >= 3... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 3" >&5
+printf %s "checking whether $PYTHON version is >= 3... " >&6; }
prog="import sys
# split strings by '.' and convert to numeric. Append some zeros
# because we need at least 4 digits for the hex conversion.
@@ -18893,23 +19625,25 @@ sys.exit(sys.hexversion < minverhex)"
($PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ (exit $ac_status); }
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
as_fn_error $? "Python interpreter is too old" "$LINENO" 5
fi
am_display_PYTHON=$PYTHON
else
# Otherwise, try each interpreter until we find one that satisfies
# VERSION.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3" >&5
-$as_echo_n "checking for a Python interpreter with version >= 3... " >&6; }
-if ${am_cv_pathless_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 3" >&5
+printf %s "checking for a Python interpreter with version >= 3... " >&6; }
+if test ${am_cv_pathless_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
for am_cv_pathless_PYTHON in python python2 python3 python3.9 python3.8 python3.7 python3.6 python3.5 python3.4 python3.3 python3.2 python3.1 python3.0 python2.7 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0 none; do
test "$am_cv_pathless_PYTHON" = none && break
@@ -18926,24 +19660,26 @@ sys.exit(sys.hexversion < minverhex)"
($am_cv_pathless_PYTHON -c "$prog") >&5 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; then :
+ (exit $ac_status); }
+then :
break
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
-$as_echo "$am_cv_pathless_PYTHON" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_pathless_PYTHON" >&5
+printf "%s\n" "$am_cv_pathless_PYTHON" >&6; }
# Set $PYTHON to the absolute path of $am_cv_pathless_PYTHON.
if test "$am_cv_pathless_PYTHON" = none; then
PYTHON=:
else
# Extract the first word of "$am_cv_pathless_PYTHON", so it can be a program name with args.
set dummy $am_cv_pathless_PYTHON; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_path_PYTHON+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
@@ -18953,11 +19689,15 @@ else
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -18969,11 +19709,11 @@ esac
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
-$as_echo "$PYTHON" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
+printf "%s\n" "$PYTHON" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -18987,15 +19727,16 @@ fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
-$as_echo_n "checking for $am_display_PYTHON version... " >&6; }
-if ${am_cv_python_version+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON version" >&5
+printf %s "checking for $am_display_PYTHON version... " >&6; }
+if test ${am_cv_python_version+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
am_cv_python_version=`$PYTHON -c "import sys; sys.stdout.write(sys.version[:3])"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
-$as_echo "$am_cv_python_version" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_version" >&5
+printf "%s\n" "$am_cv_python_version" >&6; }
PYTHON_VERSION=$am_cv_python_version
@@ -19006,15 +19747,16 @@ $as_echo "$am_cv_python_version" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
-$as_echo_n "checking for $am_display_PYTHON platform... " >&6; }
-if ${am_cv_python_platform+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON platform" >&5
+printf %s "checking for $am_display_PYTHON platform... " >&6; }
+if test ${am_cv_python_platform+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
am_cv_python_platform=`$PYTHON -c "import sys; sys.stdout.write(sys.platform)"`
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
-$as_echo "$am_cv_python_platform" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_platform" >&5
+printf "%s\n" "$am_cv_python_platform" >&6; }
PYTHON_PLATFORM=$am_cv_python_platform
@@ -19039,11 +19781,12 @@ except ImportError:
pass"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
-$as_echo_n "checking for $am_display_PYTHON script directory... " >&6; }
-if ${am_cv_python_pythondir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON script directory" >&5
+printf %s "checking for $am_display_PYTHON script directory... " >&6; }
+if test ${am_cv_python_pythondir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$prefix" = xNONE
then
am_py_prefix=$ac_default_prefix
@@ -19074,8 +19817,8 @@ sys.stdout.write(sitedir)"`
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
-$as_echo "$am_cv_python_pythondir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pythondir" >&5
+printf "%s\n" "$am_cv_python_pythondir" >&6; }
pythondir=$am_cv_python_pythondir
@@ -19083,11 +19826,12 @@ $as_echo "$am_cv_python_pythondir" >&6; }
pkgpythondir=\${pythondir}/$PACKAGE
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
-$as_echo_n "checking for $am_display_PYTHON extension module directory... " >&6; }
-if ${am_cv_python_pyexecdir+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $am_display_PYTHON extension module directory" >&5
+printf %s "checking for $am_display_PYTHON extension module directory... " >&6; }
+if test ${am_cv_python_pyexecdir+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test "x$exec_prefix" = xNONE
then
am_py_exec_prefix=$am_py_prefix
@@ -19118,8 +19862,8 @@ sys.stdout.write(sitedir)"`
esac
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
-$as_echo "$am_cv_python_pyexecdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_python_pyexecdir" >&5
+printf "%s\n" "$am_cv_python_pyexecdir" >&6; }
pyexecdir=$am_cv_python_pyexecdir
@@ -19136,19 +19880,22 @@ $as_echo "$am_cv_python_pyexecdir" >&6; }
- if test -z "$PYTHON_INCLUDE" || test -z "$PYTHON_LIBS"; then :
+ if test -z "$PYTHON_INCLUDE" || test -z "$PYTHON_LIBS"
+then :
- if test -z "$PYTHON_CONFIG"; then :
+ if test -z "$PYTHON_CONFIG"
+then :
for ac_prog in python$PYTHON_VERSION-config python-config
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_path_PYTHON_CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_path_PYTHON_CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
case $PYTHON_CONFIG in
[\\/]* | ?:[\\/]*)
ac_cv_path_PYTHON_CONFIG="$PYTHON_CONFIG" # Let the user override the test with a path.
@@ -19158,11 +19905,15 @@ else
for as_dir in `dirname $PYTHON`
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_PYTHON_CONFIG="$as_dir/$ac_word$ac_exec_ext"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
+ ac_cv_path_PYTHON_CONFIG="$as_dir$ac_word$ac_exec_ext"
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -19174,11 +19925,11 @@ esac
fi
PYTHON_CONFIG=$ac_cv_path_PYTHON_CONFIG
if test -n "$PYTHON_CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5
-$as_echo "$PYTHON_CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_CONFIG" >&5
+printf "%s\n" "$PYTHON_CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -19186,7 +19937,8 @@ fi
done
test -n "$PYTHON_CONFIG" || PYTHON_CONFIG="no"
- if test "$PYTHON_CONFIG" = no; then :
+ if test "$PYTHON_CONFIG" = no
+then :
as_fn_error $? "cannot find python-config for $PYTHON." "$LINENO" 5
fi
@@ -19194,18 +19946,20 @@ fi
fi
- if test -z "$PYTHON_INCLUDE"; then :
+ if test -z "$PYTHON_INCLUDE"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python include flags" >&5
-$as_echo_n "checking python include flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python include flags" >&5
+printf %s "checking python include flags... " >&6; }
# Pull out python include path, ignore other flags
PYTHON_INCLUDE=`$PYTHON_CONFIG --cflags | tr " " "\n" | grep "^-I" | sort -u | tr "\n" " "`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCLUDE" >&5
-$as_echo "$PYTHON_INCLUDE" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_INCLUDE" >&5
+printf "%s\n" "$PYTHON_INCLUDE" >&6; }
fi
- if test -z "$PYTHON_LIBS"; then :
+ if test -z "$PYTHON_LIBS"
+then :
# Newer versions of python3-config need --embed to include libpython
if $PYTHON_CONFIG 2>&1 | grep embed >/dev/null; then
@@ -19213,12 +19967,12 @@ fi
else
PY_EMBED=
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking python linker flags" >&5
-$as_echo_n "checking python linker flags... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking python linker flags" >&5
+printf %s "checking python linker flags... " >&6; }
PYTHON_LIBS=`$PYTHON_CONFIG --ldflags $PY_EMBED`
PYTHON_LIBS=`$PYTHON_CONFIG --ldflags $PY_EMBED | tr " " "\n" | grep "^-[lL]" | tr "\n" " "`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
-$as_echo "$PYTHON_LIBS" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PYTHON_LIBS" >&5
+printf "%s\n" "$PYTHON_LIBS" >&6; }
fi
@@ -19229,14 +19983,16 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5
-$as_echo_n "checking type of array argument to getgroups... " >&6; }
-if ${ac_cv_type_getgroups+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking type of array argument to getgroups" >&5
+printf %s "checking type of array argument to getgroups... " >&6; }
+if test ${ac_cv_type_getgroups+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_type_getgroups=cross
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Thanks to Mike Rendell for this test. */
@@ -19246,7 +20002,7 @@ $ac_includes_default
#define MAX(x, y) ((x) > (y) ? (x) : (y))
int
-main ()
+main (void)
{
gid_t gidset[NGID];
int i, n;
@@ -19263,9 +20019,10 @@ main ()
return n > 0 && gidset[n] != val.gval;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_type_getgroups=gid_t
-else
+else $as_nop
ac_cv_type_getgroups=int
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19279,36 +20036,35 @@ if test $ac_cv_type_getgroups = cross; then
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1; then :
+ $EGREP "getgroups.*int.*gid_t" >/dev/null 2>&1
+then :
ac_cv_type_getgroups=gid_t
-else
+else $as_nop
ac_cv_type_getgroups=int
fi
-rm -f conftest*
+rm -rf conftest*
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5
-$as_echo "$ac_cv_type_getgroups" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_getgroups" >&5
+printf "%s\n" "$ac_cv_type_getgroups" >&6; }
-cat >>confdefs.h <<_ACEOF
-#define GETGROUPS_T $ac_cv_type_getgroups
-_ACEOF
+printf "%s\n" "#define GETGROUPS_T $ac_cv_type_getgroups" >>confdefs.h
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = xyes; then :
+if test "x$ac_cv_type_size_t" = xyes
+then :
-else
+else $as_nop
-cat >>confdefs.h <<_ACEOF
-#define size_t unsigned int
-_ACEOF
+printf "%s\n" "#define size_t unsigned int" >>confdefs.h
fi
ac_fn_c_check_func "$LINENO" "getgroups" "ac_cv_func_getgroups"
-if test "x$ac_cv_func_getgroups" = xyes; then :
+if test "x$ac_cv_func_getgroups" = xyes
+then :
fi
@@ -19317,11 +20073,12 @@ fi
# This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
ac_save_LIBS=$LIBS
if test $ac_cv_func_getgroups = no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getgroups in -lbsd" >&5
-$as_echo_n "checking for getgroups in -lbsd... " >&6; }
-if ${ac_cv_lib_bsd_getgroups+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getgroups in -lbsd" >&5
+printf %s "checking for getgroups in -lbsd... " >&6; }
+if test ${ac_cv_lib_bsd_getgroups+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lbsd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19330,30 +20087,29 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 getgroups ();
int
-main ()
+main (void)
{
return getgroups ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_bsd_getgroups=yes
-else
+else $as_nop
ac_cv_lib_bsd_getgroups=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_getgroups" >&5
-$as_echo "$ac_cv_lib_bsd_getgroups" >&6; }
-if test "x$ac_cv_lib_bsd_getgroups" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_getgroups" >&5
+printf "%s\n" "$ac_cv_lib_bsd_getgroups" >&6; }
+if test "x$ac_cv_lib_bsd_getgroups" = xyes
+then :
GETGROUPS_LIB=-lbsd
fi
@@ -19362,19 +20118,26 @@ fi
# Run the program to test the functionality of the system-supplied
# getgroups function only if there is such a function.
if test $ac_cv_func_getgroups = yes; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getgroups" >&5
-$as_echo_n "checking for working getgroups... " >&6; }
-if ${ac_cv_func_getgroups_works+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
- ac_cv_func_getgroups_works=no
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working getgroups" >&5
+printf %s "checking for working getgroups... " >&6; }
+if test ${ac_cv_func_getgroups_works+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
+ case "$host_os" in # ((
+ # Guess yes on glibc systems.
+ *-gnu*) ac_cv_func_getgroups_works="guessing yes" ;;
+ # If we don't know, assume the worst.
+ *) ac_cv_func_getgroups_works="guessing no" ;;
+ esac
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
/* On Ultrix 4.3, getgroups (0, 0) always fails. */
return getgroups (0, 0) == -1;
@@ -19382,9 +20145,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_getgroups_works=yes
-else
+else $as_nop
ac_cv_func_getgroups_works=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -19393,31 +20157,32 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getgroups_works" >&5
-$as_echo "$ac_cv_func_getgroups_works" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getgroups_works" >&5
+printf "%s\n" "$ac_cv_func_getgroups_works" >&6; }
else
ac_cv_func_getgroups_works=no
fi
-if test $ac_cv_func_getgroups_works = yes; then
+case "$ac_cv_func_getgroups_works" in
+ *yes)
-$as_echo "#define HAVE_GETGROUPS 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETGROUPS 1" >>confdefs.h
-fi
+ ;;
+esac
LIBS=$ac_save_LIBS
-
-
-
- for ac_func in $ac_func_list
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
+ac_func=
+for ac_item in $ac_func_c_list
+do
+ if test $ac_func; then
+ ac_fn_c_check_func "$LINENO" $ac_func ac_cv_func_$ac_func
+ if eval test \"x\$ac_cv_func_$ac_func\" = xyes; then
+ echo "#define $ac_item 1" >> confdefs.h
+ fi
+ ac_func=
+ else
+ ac_func=$ac_item
+ fi
done
@@ -19427,48 +20192,42 @@ done
-
-
-
-
-
-
-
-
case "$host_os" in
hpux*)
if test X"$ac_cv_func_pread" = X"yes"; then
O_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -D_LARGEFILE64_SOURCE"
- for ac_func in pread64 pwrite64
+
+ for ac_func in pread64 pwrite64
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
-$as_echo "#define _LARGEFILE64_SOURCE 1" >>confdefs.h
+printf "%s\n" "#define _LARGEFILE64_SOURCE 1" >>confdefs.h
fi
-done
+done
CPPFLAGS="$O_CPPFLAGS"
fi
;;
esac
-for ac_func in pread
+
+ for ac_func in pread
do :
ac_fn_c_check_func "$LINENO" "pread" "ac_cv_func_pread"
-if test "x$ac_cv_func_pread" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PREAD 1
-_ACEOF
+if test "x$ac_cv_func_pread" = xyes
+then :
+ printf "%s\n" "#define HAVE_PREAD 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" pread.$ac_objext "* ) ;;
@@ -19484,17 +20243,17 @@ esac
fi
+
done
-for ac_func in pwrite
+ for ac_func in pwrite
do :
ac_fn_c_check_func "$LINENO" "pwrite" "ac_cv_func_pwrite"
-if test "x$ac_cv_func_pwrite" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PWRITE 1
-_ACEOF
+if test "x$ac_cv_func_pwrite" = xyes
+then :
+ printf "%s\n" "#define HAVE_PWRITE 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" pwrite.$ac_objext "* ) ;;
@@ -19510,17 +20269,17 @@ esac
fi
+
done
-for ac_func in cfmakeraw
+ for ac_func in cfmakeraw
do :
ac_fn_c_check_func "$LINENO" "cfmakeraw" "ac_cv_func_cfmakeraw"
-if test "x$ac_cv_func_cfmakeraw" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CFMAKERAW 1
-_ACEOF
+if test "x$ac_cv_func_cfmakeraw" = xyes
+then :
+ printf "%s\n" "#define HAVE_CFMAKERAW 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" cfmakeraw.$ac_objext "* ) ;;
@@ -19536,113 +20295,102 @@ esac
fi
+
done
-for ac_func in getgrouplist
+ for ac_func in getgrouplist
do :
ac_fn_c_check_func "$LINENO" "getgrouplist" "ac_cv_func_getgrouplist"
-if test "x$ac_cv_func_getgrouplist" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETGROUPLIST 1
-_ACEOF
+if test "x$ac_cv_func_getgrouplist" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGROUPLIST 1" >>confdefs.h
-else
+else $as_nop
case "$host_os" in
aix*)
- for ac_func in getgrset
-do :
- ac_fn_c_check_func "$LINENO" "getgrset" "ac_cv_func_getgrset"
-if test "x$ac_cv_func_getgrset" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETGRSET 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getgrset" "ac_cv_func_getgrset"
+if test "x$ac_cv_func_getgrset" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETGRSET 1" >>confdefs.h
fi
-done
;;
*)
ac_fn_c_check_func "$LINENO" "nss_search" "ac_cv_func_nss_search"
-if test "x$ac_cv_func_nss_search" = xyes; then :
+if test "x$ac_cv_func_nss_search" = xyes
+then :
ac_fn_c_check_func "$LINENO" "_nss_XbyY_buf_alloc" "ac_cv_func__nss_XbyY_buf_alloc"
-if test "x$ac_cv_func__nss_XbyY_buf_alloc" = xyes; then :
+if test "x$ac_cv_func__nss_XbyY_buf_alloc" = xyes
+then :
# Solaris
ac_fn_c_check_func "$LINENO" "_nss_initf_group" "ac_cv_func__nss_initf_group"
-if test "x$ac_cv_func__nss_initf_group" = xyes; then :
+if test "x$ac_cv_func__nss_initf_group" = xyes
+then :
- for ac_header in nss_dbdefs.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "nss_dbdefs.h" "ac_cv_header_nss_dbdefs_h" "$ac_includes_default"
-if test "x$ac_cv_header_nss_dbdefs_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NSS_DBDEFS_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "nss_dbdefs.h" "ac_cv_header_nss_dbdefs_h" "$ac_includes_default"
+if test "x$ac_cv_header_nss_dbdefs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NSS_DBDEFS_H 1" >>confdefs.h
fi
-done
-
- $as_echo "#define HAVE_NSS_SEARCH 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_NSS_SEARCH 1" >>confdefs.h
- $as_echo "#define HAVE__NSS_XBYY_BUF_ALLOC 1" >>confdefs.h
+ printf "%s\n" "#define HAVE__NSS_XBYY_BUF_ALLOC 1" >>confdefs.h
- $as_echo "#define HAVE__NSS_INITF_GROUP 1" >>confdefs.h
+ printf "%s\n" "#define HAVE__NSS_INITF_GROUP 1" >>confdefs.h
-else
+else $as_nop
- for ac_header in nss_dbdefs.h
+ for ac_header in nss_dbdefs.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "nss_dbdefs.h" "ac_cv_header_nss_dbdefs_h" "$ac_includes_default"
-if test "x$ac_cv_header_nss_dbdefs_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NSS_DBDEFS_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "nss_dbdefs.h" "ac_cv_header_nss_dbdefs_h" "$ac_includes_default"
+if test "x$ac_cv_header_nss_dbdefs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NSS_DBDEFS_H 1" >>confdefs.h
# Older Solaris does not export _nss_initf_group
# but we can use our own.
- $as_echo "#define HAVE_NSS_SEARCH 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_NSS_SEARCH 1" >>confdefs.h
- $as_echo "#define HAVE__NSS_XBYY_BUF_ALLOC 1" >>confdefs.h
+ printf "%s\n" "#define HAVE__NSS_XBYY_BUF_ALLOC 1" >>confdefs.h
fi
done
-
fi
-else
+else $as_nop
# HP-UX
ac_fn_c_check_func "$LINENO" "__nss_XbyY_buf_alloc" "ac_cv_func___nss_XbyY_buf_alloc"
-if test "x$ac_cv_func___nss_XbyY_buf_alloc" = xyes; then :
+if test "x$ac_cv_func___nss_XbyY_buf_alloc" = xyes
+then :
ac_fn_c_check_func "$LINENO" "__nss_initf_group" "ac_cv_func___nss_initf_group"
-if test "x$ac_cv_func___nss_initf_group" = xyes; then :
+if test "x$ac_cv_func___nss_initf_group" = xyes
+then :
- for ac_header in nss_dbdefs.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "nss_dbdefs.h" "ac_cv_header_nss_dbdefs_h" "$ac_includes_default"
-if test "x$ac_cv_header_nss_dbdefs_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NSS_DBDEFS_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "nss_dbdefs.h" "ac_cv_header_nss_dbdefs_h" "$ac_includes_default"
+if test "x$ac_cv_header_nss_dbdefs_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_NSS_DBDEFS_H 1" >>confdefs.h
fi
-done
-
- $as_echo "#define HAVE_NSS_SEARCH 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_NSS_SEARCH 1" >>confdefs.h
- $as_echo "#define HAVE___NSS_XBYY_BUF_ALLOC 1" >>confdefs.h
+ printf "%s\n" "#define HAVE___NSS_XBYY_BUF_ALLOC 1" >>confdefs.h
- $as_echo "#define HAVE___NSS_INITF_GROUP 1" >>confdefs.h
+ printf "%s\n" "#define HAVE___NSS_INITF_GROUP 1" >>confdefs.h
fi
@@ -19666,30 +20414,28 @@ fi
fi
+
done
-for ac_func in getdelim
+ for ac_func in getdelim
do :
ac_fn_c_check_func "$LINENO" "getdelim" "ac_cv_func_getdelim"
-if test "x$ac_cv_func_getdelim" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETDELIM 1
-_ACEOF
+if test "x$ac_cv_func_getdelim" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETDELIM 1" >>confdefs.h
# Out of date gcc fixed includes may result in missing getdelim() prototype
- ac_fn_c_check_decl "$LINENO" "getdelim" "ac_cv_have_decl_getdelim" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getdelim" = xyes; then :
+ ac_fn_check_decl "$LINENO" "getdelim" "ac_cv_have_decl_getdelim" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getdelim" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETDELIM $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_GETDELIM $ac_have_decl" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" getdelim.$ac_objext "* ) ;;
@@ -19706,17 +20452,17 @@ esac
COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }getdelim_test"
fi
+
done
-for ac_func in getusershell
+ for ac_func in getusershell
do :
ac_fn_c_check_func "$LINENO" "getusershell" "ac_cv_func_getusershell"
-if test "x$ac_cv_func_getusershell" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETUSERSHELL 1
-_ACEOF
+if test "x$ac_cv_func_getusershell" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETUSERSHELL 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" getusershell.$ac_objext "* ) ;;
@@ -19732,17 +20478,17 @@ esac
fi
+
done
-for ac_func in reallocarray
+ for ac_func in reallocarray
do :
ac_fn_c_check_func "$LINENO" "reallocarray" "ac_cv_func_reallocarray"
-if test "x$ac_cv_func_reallocarray" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_REALLOCARRAY 1
-_ACEOF
+if test "x$ac_cv_func_reallocarray" = xyes
+then :
+ printf "%s\n" "#define HAVE_REALLOCARRAY 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" reallocarray.$ac_objext "* ) ;;
@@ -19758,25 +20504,25 @@ esac
fi
+
done
-for ac_func in arc4random
+ for ac_func in arc4random
do :
ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random"
-if test "x$ac_cv_func_arc4random" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ARC4RANDOM 1
-_ACEOF
+if test "x$ac_cv_func_arc4random" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM 1" >>confdefs.h
- for ac_func in arc4random_uniform
+
+ for ac_func in arc4random_uniform
do :
ac_fn_c_check_func "$LINENO" "arc4random_uniform" "ac_cv_func_arc4random_uniform"
-if test "x$ac_cv_func_arc4random_uniform" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ARC4RANDOM_UNIFORM 1
-_ACEOF
+if test "x$ac_cv_func_arc4random_uniform" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM_UNIFORM 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" arc4random_uniform.$ac_objext "* ) ;;
@@ -19792,17 +20538,17 @@ esac
fi
+
done
- for ac_func in arc4random_buf
+ for ac_func in arc4random_buf
do :
ac_fn_c_check_func "$LINENO" "arc4random_buf" "ac_cv_func_arc4random_buf"
-if test "x$ac_cv_func_arc4random_buf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ARC4RANDOM_BUF 1
-_ACEOF
+if test "x$ac_cv_func_arc4random_buf" = xyes
+then :
+ printf "%s\n" "#define HAVE_ARC4RANDOM_BUF 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" arc4random_buf.$ac_objext "* ) ;;
@@ -19818,10 +20564,10 @@ esac
fi
-done
+done
-else
+else $as_nop
case " $LIBOBJS " in
*" arc4random.$ac_objext "* ) ;;
@@ -19854,28 +20600,23 @@ esac
done
# arc4random.c needs getentropy()
- for ac_func in getentropy
+
+ for ac_func in getentropy
do :
ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy"
-if test "x$ac_cv_func_getentropy" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETENTROPY 1
-_ACEOF
+if test "x$ac_cv_func_getentropy" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h
- for ac_header in sys/random.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_random_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_RANDOM_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "sys/random.h" "ac_cv_header_sys_random_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_random_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_RANDOM_H 1" >>confdefs.h
fi
-done
-
-else
+else $as_nop
case " $LIBOBJS " in
*" getentropy.$ac_objext "* ) ;;
@@ -19891,22 +20632,22 @@ esac
fi
-done
+done
# arc4random.c wants pthread_atfork
- for ac_header in pthread.h
+ for ac_header in pthread.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
-if test "x$ac_cv_header_pthread_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_H 1
-_ACEOF
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5
-$as_echo_n "checking for main in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_main+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ ac_fn_c_check_header_compile "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_H 1" >>confdefs.h
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5
+printf %s "checking for main in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthread $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -19914,94 +20655,91 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
-main ()
+main (void)
{
return main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pthread_main=yes
-else
+else $as_nop
ac_cv_lib_pthread_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5
-$as_echo "$ac_cv_lib_pthread_main" >&6; }
-if test "x$ac_cv_lib_pthread_main" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5
+printf "%s\n" "$ac_cv_lib_pthread_main" >&6; }
+if test "x$ac_cv_lib_pthread_main" = xyes
+then :
LIBPTHREAD="-lpthread"
fi
- for ac_func in pthread_atfork
-do :
- ac_fn_c_check_func "$LINENO" "pthread_atfork" "ac_cv_func_pthread_atfork"
-if test "x$ac_cv_func_pthread_atfork" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PTHREAD_ATFORK 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "pthread_atfork" "ac_cv_func_pthread_atfork"
+if test "x$ac_cv_func_pthread_atfork" = xyes
+then :
+ printf "%s\n" "#define HAVE_PTHREAD_ATFORK 1" >>confdefs.h
fi
-done
fi
done
-
fi
-done
+done
utmp_style=LEGACY
-for ac_func in getutsid getutxid getutid
+
+ for ac_func in getutsid getutxid getutid
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
utmp_style=POSIX; break
fi
-done
+done
if test "$utmp_style" = "LEGACY"; then
- for ac_func in getttyent ttyslot
+
+ for ac_func in getttyent ttyslot
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
break
fi
-done
+done
fi
-for ac_func in sysctl
+
+ for ac_func in sysctl
do :
ac_fn_c_check_func "$LINENO" "sysctl" "ac_cv_func_sysctl"
-if test "x$ac_cv_func_sysctl" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYSCTL 1
-_ACEOF
- for ac_func in devname
-do :
- ac_fn_c_check_func "$LINENO" "devname" "ac_cv_func_devname"
-if test "x$ac_cv_func_devname" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DEVNAME 1
-_ACEOF
+if test "x$ac_cv_func_sysctl" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSCTL 1" >>confdefs.h
+ ac_fn_c_check_func "$LINENO" "devname" "ac_cv_func_devname"
+if test "x$ac_cv_func_devname" = xyes
+then :
+ printf "%s\n" "#define HAVE_DEVNAME 1" >>confdefs.h
fi
-done
ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "ki_structsize" "ac_cv_member_struct_kinfo_proc_ki_structsize" "
# include <sys/param.h>
@@ -20009,38 +20747,42 @@ done
# include <sys/user.h>
"
-if test "x$ac_cv_member_struct_kinfo_proc_ki_structsize" = xyes; then :
- $as_echo "#define HAVE_KINFO_PROC_FREEBSD 1" >>confdefs.h
+if test "x$ac_cv_member_struct_kinfo_proc_ki_structsize" = xyes
+then :
+ printf "%s\n" "#define HAVE_KINFO_PROC_FREEBSD 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct kinfo_proc2" "p_paddr" "ac_cv_member_struct_kinfo_proc2_p_paddr" "
# include <sys/param.h>
# include <sys/sysctl.h>
"
-if test "x$ac_cv_member_struct_kinfo_proc2_p_paddr" = xyes; then :
- $as_echo "#define HAVE_KINFO_PROC2_NETBSD 1" >>confdefs.h
+if test "x$ac_cv_member_struct_kinfo_proc2_p_paddr" = xyes
+then :
+ printf "%s\n" "#define HAVE_KINFO_PROC2_NETBSD 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "p_paddr" "ac_cv_member_struct_kinfo_proc_p_paddr" "
# include <sys/param.h>
# include <sys/sysctl.h>
"
-if test "x$ac_cv_member_struct_kinfo_proc_p_paddr" = xyes; then :
- $as_echo "#define HAVE_KINFO_PROC_OPENBSD 1" >>confdefs.h
+if test "x$ac_cv_member_struct_kinfo_proc_p_paddr" = xyes
+then :
+ printf "%s\n" "#define HAVE_KINFO_PROC_OPENBSD 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct kinfo_proc" "kp_proc" "ac_cv_member_struct_kinfo_proc_kp_proc" "
# include <sys/param.h>
# include <sys/sysctl.h>
"
-if test "x$ac_cv_member_struct_kinfo_proc_kp_proc" = xyes; then :
- $as_echo "#define HAVE_KINFO_PROC_44BSD 1" >>confdefs.h
+if test "x$ac_cv_member_struct_kinfo_proc_kp_proc" = xyes
+then :
+ printf "%s\n" "#define HAVE_KINFO_PROC_44BSD 1" >>confdefs.h
fi
@@ -20055,36 +20797,37 @@ fi
fi
+
done
-for ac_func in openpty
+ for ac_func in openpty
do :
ac_fn_c_check_func "$LINENO" "openpty" "ac_cv_func_openpty"
-if test "x$ac_cv_func_openpty" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENPTY 1
-_ACEOF
- for ac_header in libutil.h util.h pty.h
+if test "x$ac_cv_func_openpty" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
+ for ac_header in libutil.h util.h pty.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 :
+ as_ac_Header=`printf "%s\n" "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
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
break
fi
done
-
-else
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5
-$as_echo_n "checking for openpty in -lutil... " >&6; }
-if ${ac_cv_lib_util_openpty+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for openpty in -lutil" >&5
+printf %s "checking for openpty in -lutil... " >&6; }
+if test ${ac_cv_lib_util_openpty+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lutil $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20093,133 +20836,126 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 openpty ();
int
-main ()
+main (void)
{
return openpty ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_util_openpty=yes
-else
+else $as_nop
ac_cv_lib_util_openpty=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5
-$as_echo "$ac_cv_lib_util_openpty" >&6; }
-if test "x$ac_cv_lib_util_openpty" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_openpty" >&5
+printf "%s\n" "$ac_cv_lib_util_openpty" >&6; }
+if test "x$ac_cv_lib_util_openpty" = xyes
+then :
- for ac_header in libutil.h util.h pty.h
+ for ac_header in libutil.h util.h pty.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 :
+ as_ac_Header=`printf "%s\n" "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
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
break
fi
done
-
case "$SUDO_LIBS" in
*-lutil*) ;;
*) SUDO_LIBS="${SUDO_LIBS} -lutil";;
esac
- $as_echo "#define HAVE_OPENPTY 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_OPENPTY 1" >>confdefs.h
-else
+else $as_nop
+
- for ac_func in _getpty
+ for ac_func in _getpty
do :
ac_fn_c_check_func "$LINENO" "_getpty" "ac_cv_func__getpty"
-if test "x$ac_cv_func__getpty" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE__GETPTY 1
-_ACEOF
+if test "x$ac_cv_func__getpty" = xyes
+then :
+ printf "%s\n" "#define HAVE__GETPTY 1" >>confdefs.h
-else
+else $as_nop
- for ac_func in grantpt
+
+ for ac_func in grantpt
do :
ac_fn_c_check_func "$LINENO" "grantpt" "ac_cv_func_grantpt"
-if test "x$ac_cv_func_grantpt" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GRANTPT 1
-_ACEOF
+if test "x$ac_cv_func_grantpt" = xyes
+then :
+ printf "%s\n" "#define HAVE_GRANTPT 1" >>confdefs.h
- for ac_func in posix_openpt
-do :
- ac_fn_c_check_func "$LINENO" "posix_openpt" "ac_cv_func_posix_openpt"
-if test "x$ac_cv_func_posix_openpt" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_POSIX_OPENPT 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "posix_openpt" "ac_cv_func_posix_openpt"
+if test "x$ac_cv_func_posix_openpt" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_OPENPT 1" >>confdefs.h
fi
-done
-else
+else $as_nop
- for ac_func in revoke
-do :
- ac_fn_c_check_func "$LINENO" "revoke" "ac_cv_func_revoke"
-if test "x$ac_cv_func_revoke" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_REVOKE 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "revoke" "ac_cv_func_revoke"
+if test "x$ac_cv_func_revoke" = xyes
+then :
+ printf "%s\n" "#define HAVE_REVOKE 1" >>confdefs.h
fi
-done
fi
-done
+done
fi
-done
+done
fi
fi
+
done
-for ac_func in unsetenv
+ for ac_func in unsetenv
do :
ac_fn_c_check_func "$LINENO" "unsetenv" "ac_cv_func_unsetenv"
-if test "x$ac_cv_func_unsetenv" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UNSETENV 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether unsetenv returns void" >&5
-$as_echo_n "checking whether unsetenv returns void... " >&6; }
-if ${sudo_cv_func_unsetenv_void+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+if test "x$ac_cv_func_unsetenv" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNSETENV 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether unsetenv returns void" >&5
+printf %s "checking whether unsetenv returns void... " >&6; }
+if test ${sudo_cv_func_unsetenv_void+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
sudo_cv_func_unsetenv_void=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int unsetenv();
int
-main ()
+main (void)
{
return unsetenv("FOO") != 0;
@@ -20229,9 +20965,10 @@ main ()
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
sudo_cv_func_unsetenv_void=no
-else
+else $as_nop
sudo_cv_func_unsetenv_void=yes
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -20239,159 +20976,148 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_unsetenv_void" >&5
-$as_echo "$sudo_cv_func_unsetenv_void" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_unsetenv_void" >&5
+printf "%s\n" "$sudo_cv_func_unsetenv_void" >&6; }
if test $sudo_cv_func_unsetenv_void = yes; then
-$as_echo "#define UNSETENV_VOID 1" >>confdefs.h
+printf "%s\n" "#define UNSETENV_VOID 1" >>confdefs.h
fi
fi
-done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether putenv takes a const argument" >&5
-$as_echo_n "checking whether putenv takes a const argument... " >&6; }
-if ${sudo_cv_func_putenv_const+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+done
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether putenv takes a const argument" >&5
+printf %s "checking whether putenv takes a const argument... " >&6; }
+if test ${sudo_cv_func_putenv_const+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int putenv(const char *string) {return 0;}
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_func_putenv_const=yes
-else
+else $as_nop
sudo_cv_func_putenv_const=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_putenv_const" >&5
-$as_echo "$sudo_cv_func_putenv_const" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_putenv_const" >&5
+printf "%s\n" "$sudo_cv_func_putenv_const" >&6; }
if test $sudo_cv_func_putenv_const = yes; then
-$as_echo "#define PUTENV_CONST const" >>confdefs.h
+printf "%s\n" "#define PUTENV_CONST const" >>confdefs.h
else
- $as_echo "#define PUTENV_CONST /**/" >>confdefs.h
+ printf "%s\n" "#define PUTENV_CONST /**/" >>confdefs.h
fi
if test -z "$SKIP_SETRESUID"; then
- for ac_func in setresuid
+
+ for ac_func in setresuid
do :
ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid"
-if test "x$ac_cv_func_setresuid" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETRESUID 1
-_ACEOF
+if test "x$ac_cv_func_setresuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETRESUID 1" >>confdefs.h
SKIP_SETREUID=yes
- ac_fn_c_check_decl "$LINENO" "setresuid" "ac_cv_have_decl_setresuid" "$ac_includes_default"
-if test "x$ac_cv_have_decl_setresuid" = xyes; then :
+ ac_fn_check_decl "$LINENO" "setresuid" "ac_cv_have_decl_setresuid" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_setresuid" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_SETRESUID $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SETRESUID $ac_have_decl
-_ACEOF
- for ac_func in getresuid
+ for ac_func in getresuid
do :
ac_fn_c_check_func "$LINENO" "getresuid" "ac_cv_func_getresuid"
-if test "x$ac_cv_func_getresuid" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETRESUID 1
-_ACEOF
- ac_fn_c_check_decl "$LINENO" "getresuid" "ac_cv_have_decl_getresuid" "$ac_includes_default"
-if test "x$ac_cv_have_decl_getresuid" = xyes; then :
+if test "x$ac_cv_func_getresuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETRESUID 1" >>confdefs.h
+ ac_fn_check_decl "$LINENO" "getresuid" "ac_cv_have_decl_getresuid" "$ac_includes_default" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getresuid" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETRESUID $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_GETRESUID $ac_have_decl" >>confdefs.h
fi
-done
+done
fi
-done
+done
fi
if test -z "$SKIP_SETREUID"; then
- for ac_func in setreuid
-do :
- ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid"
-if test "x$ac_cv_func_setreuid" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETREUID 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "setreuid" "ac_cv_func_setreuid"
+if test "x$ac_cv_func_setreuid" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETREUID 1" >>confdefs.h
fi
-done
fi
-
if test X"$with_interfaces" != X"no"; then
- for ac_func in getifaddrs
+
+ for ac_func in getifaddrs
do :
ac_fn_c_check_func "$LINENO" "getifaddrs" "ac_cv_func_getifaddrs"
-if test "x$ac_cv_func_getifaddrs" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETIFADDRS 1
-_ACEOF
- for ac_func in freeifaddrs
-do :
- ac_fn_c_check_func "$LINENO" "freeifaddrs" "ac_cv_func_freeifaddrs"
-if test "x$ac_cv_func_freeifaddrs" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_FREEIFADDRS 1
-_ACEOF
+if test "x$ac_cv_func_getifaddrs" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETIFADDRS 1" >>confdefs.h
+ ac_fn_c_check_func "$LINENO" "freeifaddrs" "ac_cv_func_freeifaddrs"
+if test "x$ac_cv_func_freeifaddrs" = xyes
+then :
+ printf "%s\n" "#define HAVE_FREEIFADDRS 1" >>confdefs.h
fi
-done
fi
-done
+done
fi
-for ac_func in lockf
+
+ for ac_func in lockf
do :
ac_fn_c_check_func "$LINENO" "lockf" "ac_cv_func_lockf"
-if test "x$ac_cv_func_lockf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LOCKF 1
-_ACEOF
+if test "x$ac_cv_func_lockf" = xyes
+then :
+ printf "%s\n" "#define HAVE_LOCKF 1" >>confdefs.h
break
fi
+
done
-for ac_func in innetgr
+ for ac_func in innetgr
do :
ac_fn_c_check_func "$LINENO" "innetgr" "ac_cv_func_innetgr"
-if test "x$ac_cv_func_innetgr" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_INNETGR 1
-_ACEOF
+if test "x$ac_cv_func_innetgr" = xyes
+then :
+ printf "%s\n" "#define HAVE_INNETGR 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "innetgr" "ac_cv_have_decl_innetgr" "
+ ac_fn_check_decl "$LINENO" "innetgr" "ac_cv_have_decl_innetgr" "
$ac_includes_default
#ifdef HAVE_NETGROUP_H
# include <netgroup.h>
@@ -20399,28 +21125,26 @@ $ac_includes_default
# include <netdb.h>
#endif /* HAVE_NETGROUP_H */
-"
-if test "x$ac_cv_have_decl_innetgr" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_innetgr" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_INNETGR $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_INNETGR $ac_have_decl
-_ACEOF
+else $as_nop
-else
- for ac_func in _innetgr
+ for ac_func in _innetgr
do :
ac_fn_c_check_func "$LINENO" "_innetgr" "ac_cv_func__innetgr"
-if test "x$ac_cv_func__innetgr" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE__INNETGR 1
-_ACEOF
+if test "x$ac_cv_func__innetgr" = xyes
+then :
+ printf "%s\n" "#define HAVE__INNETGR 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "_innetgr" "ac_cv_have_decl__innetgr" "
+ ac_fn_check_decl "$LINENO" "_innetgr" "ac_cv_have_decl__innetgr" "
$ac_includes_default
#ifdef HAVE_NETGROUP_H
# include <netgroup.h>
@@ -20428,86 +21152,77 @@ $ac_includes_default
# include <netdb.h>
#endif /* HAVE_NETGROUP_H */
-"
-if test "x$ac_cv_have_decl__innetgr" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__innetgr" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__INNETGR $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL__INNETGR $ac_have_decl" >>confdefs.h
fi
-done
+done
fi
+
done
-for ac_func in getdomainname
+ for ac_func in getdomainname
do :
ac_fn_c_check_func "$LINENO" "getdomainname" "ac_cv_func_getdomainname"
-if test "x$ac_cv_func_getdomainname" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETDOMAINNAME 1
-_ACEOF
+if test "x$ac_cv_func_getdomainname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETDOMAINNAME 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "getdomainname" "ac_cv_have_decl_getdomainname" "
+ ac_fn_check_decl "$LINENO" "getdomainname" "ac_cv_have_decl_getdomainname" "
$ac_includes_default
#include <netdb.h>
-"
-if test "x$ac_cv_have_decl_getdomainname" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_getdomainname" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_GETDOMAINNAME $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_GETDOMAINNAME $ac_have_decl
-_ACEOF
+else $as_nop
-else
- for ac_func in sysinfo
+ for ac_func in sysinfo
do :
ac_fn_c_check_func "$LINENO" "sysinfo" "ac_cv_func_sysinfo"
-if test "x$ac_cv_func_sysinfo" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYSINFO 1
-_ACEOF
- for ac_header in sys/systeminfo.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "sys/systeminfo.h" "ac_cv_header_sys_systeminfo_h" "$ac_includes_default"
-if test "x$ac_cv_header_sys_systeminfo_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SYS_SYSTEMINFO_H 1
-_ACEOF
+if test "x$ac_cv_func_sysinfo" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYSINFO 1" >>confdefs.h
+ ac_fn_c_check_header_compile "$LINENO" "sys/systeminfo.h" "ac_cv_header_sys_systeminfo_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_systeminfo_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_SYS_SYSTEMINFO_H 1" >>confdefs.h
fi
-done
-
fi
-done
+done
fi
+
done
-for ac_func in utimensat
+ for ac_func in utimensat
do :
ac_fn_c_check_func "$LINENO" "utimensat" "ac_cv_func_utimensat"
-if test "x$ac_cv_func_utimensat" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UTIMENSAT 1
-_ACEOF
+if test "x$ac_cv_func_utimensat" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMENSAT 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" utimens.$ac_objext "* ) ;;
@@ -20521,30 +21236,26 @@ esac
"
done
- for ac_func in utimes
-do :
- ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
-if test "x$ac_cv_func_utimes" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UTIMES 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
+if test "x$ac_cv_func_utimes" = xyes
+then :
+ printf "%s\n" "#define HAVE_UTIMES 1" >>confdefs.h
fi
-done
fi
+
done
-for ac_func in futimens
+ for ac_func in futimens
do :
ac_fn_c_check_func "$LINENO" "futimens" "ac_cv_func_futimens"
-if test "x$ac_cv_func_futimens" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_FUTIMENS 1
-_ACEOF
+if test "x$ac_cv_func_futimens" = xyes
+then :
+ printf "%s\n" "#define HAVE_FUTIMENS 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" utimens.$ac_objext "* ) ;;
@@ -20558,31 +21269,33 @@ esac
"
done
- for ac_func in futimes futimesat futime
+
+ for ac_func in futimes futimesat futime
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
break
fi
-done
+done
fi
+
done
-for ac_func in explicit_bzero
+ for ac_func in explicit_bzero
do :
ac_fn_c_check_func "$LINENO" "explicit_bzero" "ac_cv_func_explicit_bzero"
-if test "x$ac_cv_func_explicit_bzero" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_EXPLICIT_BZERO 1
-_ACEOF
+if test "x$ac_cv_func_explicit_bzero" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXPLICIT_BZERO 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" explicit_bzero.$ac_objext "* ) ;;
@@ -20596,39 +21309,44 @@ esac
"
done
- for ac_func in explicit_memset memset_explicit memset_s bzero
+
+ for ac_func in explicit_memset memset_explicit memset_s bzero
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
break
fi
-done
+done
fi
-done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fnmatch with FNM_CASEFOLD" >&5
-$as_echo_n "checking for working fnmatch with FNM_CASEFOLD... " >&6; }
-if ${sudo_cv_func_fnmatch+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+done
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working fnmatch with FNM_CASEFOLD" >&5
+printf %s "checking for working fnmatch with FNM_CASEFOLD... " >&6; }
+if test ${sudo_cv_func_fnmatch+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
rm -f conftestdata; > conftestdata
-if test "$cross_compiling" = yes; then :
+if test "$cross_compiling" = yes
+then :
sudo_cv_func_fnmatch=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <fnmatch.h>
int main() { return(fnmatch("/*/bin/echo *", "/usr/bin/echo just a test", FNM_CASEFOLD)); }
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
sudo_cv_func_fnmatch=yes
-else
+else $as_nop
sudo_cv_func_fnmatch=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -20638,12 +21356,13 @@ fi
rm -f core core.* *.core
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_fnmatch" >&5
-$as_echo "$sudo_cv_func_fnmatch" >&6; }
-if test $sudo_cv_func_fnmatch = yes; then :
- $as_echo "#define HAVE_FNMATCH 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_fnmatch" >&5
+printf "%s\n" "$sudo_cv_func_fnmatch" >&6; }
+if test $sudo_cv_func_fnmatch = yes
+then :
+ printf "%s\n" "#define HAVE_FNMATCH 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" fnmatch.$ac_objext "* ) ;;
@@ -20660,36 +21379,38 @@ esac
COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }fnm_test"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for isblank" >&5
-$as_echo_n "checking for isblank... " >&6; }
-if ${sudo_cv_func_isblank+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for isblank" >&5
+printf %s "checking for isblank... " >&6; }
+if test ${sudo_cv_func_isblank+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <ctype.h>
int
-main ()
+main (void)
{
return (isblank('a'));
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_func_isblank=yes
-else
+else $as_nop
sudo_cv_func_isblank=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_isblank" >&5
-$as_echo "$sudo_cv_func_isblank" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_isblank" >&5
+printf "%s\n" "$sudo_cv_func_isblank" >&6; }
if test "$sudo_cv_func_isblank" = "yes"; then
-$as_echo "#define HAVE_ISBLANK 1" >>confdefs.h
+printf "%s\n" "#define HAVE_ISBLANK 1" >>confdefs.h
else
case " $LIBOBJS " in
@@ -20706,15 +21427,15 @@ esac
fi
-for ac_func in glob
+
+ for ac_func in glob
do :
ac_fn_c_check_func "$LINENO" "glob" "ac_cv_func_glob"
-if test "x$ac_cv_func_glob" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GLOB 1
-_ACEOF
+if test "x$ac_cv_func_glob" = xyes
+then :
+ printf "%s\n" "#define HAVE_GLOB 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" glob.$ac_objext "* ) ;;
@@ -20730,17 +21451,17 @@ esac
fi
+
done
-for ac_func in memrchr
+ for ac_func in memrchr
do :
ac_fn_c_check_func "$LINENO" "memrchr" "ac_cv_func_memrchr"
-if test "x$ac_cv_func_memrchr" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_MEMRCHR 1
-_ACEOF
+if test "x$ac_cv_func_memrchr" = xyes
+then :
+ printf "%s\n" "#define HAVE_MEMRCHR 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" memrchr.$ac_objext "* ) ;;
@@ -20756,17 +21477,17 @@ esac
fi
+
done
-for ac_func in freezero
+ for ac_func in freezero
do :
ac_fn_c_check_func "$LINENO" "freezero" "ac_cv_func_freezero"
-if test "x$ac_cv_func_freezero" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_FREEZERO 1
-_ACEOF
+if test "x$ac_cv_func_freezero" = xyes
+then :
+ printf "%s\n" "#define HAVE_FREEZERO 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" freezero.$ac_objext "* ) ;;
@@ -20782,24 +21503,25 @@ esac
fi
+
done
-for ac_func in nanosleep
+ for ac_func in nanosleep
do :
ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep"
-if test "x$ac_cv_func_nanosleep" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NANOSLEEP 1
-_ACEOF
+if test "x$ac_cv_func_nanosleep" = xyes
+then :
+ printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h
-else
+else $as_nop
# On Solaris, nanosleep is in librt
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5
-$as_echo_n "checking for nanosleep in -lrt... " >&6; }
-if ${ac_cv_lib_rt_nanosleep+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5
+printf %s "checking for nanosleep in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_nanosleep+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -20808,36 +21530,35 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 nanosleep ();
int
-main ()
+main (void)
{
return nanosleep ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_rt_nanosleep=yes
-else
+else $as_nop
ac_cv_lib_rt_nanosleep=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5
-$as_echo "$ac_cv_lib_rt_nanosleep" >&6; }
-if test "x$ac_cv_lib_rt_nanosleep" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5
+printf "%s\n" "$ac_cv_lib_rt_nanosleep" >&6; }
+if test "x$ac_cv_lib_rt_nanosleep" = xyes
+then :
- $as_echo "#define HAVE_NANOSLEEP 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_NANOSLEEP 1" >>confdefs.h
LIBRT="-lrt"
-else
+else $as_nop
case " $LIBOBJS " in
*" nanosleep.$ac_objext "* ) ;;
@@ -20856,17 +21577,17 @@ fi
fi
+
done
-for ac_func in openat
+ for ac_func in openat
do :
ac_fn_c_check_func "$LINENO" "openat" "ac_cv_func_openat"
-if test "x$ac_cv_func_openat" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_OPENAT 1
-_ACEOF
+if test "x$ac_cv_func_openat" = xyes
+then :
+ printf "%s\n" "#define HAVE_OPENAT 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" openat.$ac_objext "* ) ;;
@@ -20882,17 +21603,17 @@ esac
fi
+
done
-for ac_func in unlinkat
+ for ac_func in unlinkat
do :
ac_fn_c_check_func "$LINENO" "unlinkat" "ac_cv_func_unlinkat"
-if test "x$ac_cv_func_unlinkat" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_UNLINKAT 1
-_ACEOF
+if test "x$ac_cv_func_unlinkat" = xyes
+then :
+ printf "%s\n" "#define HAVE_UNLINKAT 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" unlinkat.$ac_objext "* ) ;;
@@ -20908,17 +21629,17 @@ esac
fi
+
done
-for ac_func in fchmodat
+ for ac_func in fchmodat
do :
ac_fn_c_check_func "$LINENO" "fchmodat" "ac_cv_func_fchmodat"
-if test "x$ac_cv_func_fchmodat" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_FCHMODAT 1
-_ACEOF
+if test "x$ac_cv_func_fchmodat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCHMODAT 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" fchmodat.$ac_objext "* ) ;;
@@ -20934,17 +21655,17 @@ esac
fi
+
done
-for ac_func in fstatat
+ for ac_func in fstatat
do :
ac_fn_c_check_func "$LINENO" "fstatat" "ac_cv_func_fstatat"
-if test "x$ac_cv_func_fstatat" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_FSTATAT 1
-_ACEOF
+if test "x$ac_cv_func_fstatat" = xyes
+then :
+ printf "%s\n" "#define HAVE_FSTATAT 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" fstatat.$ac_objext "* ) ;;
@@ -20960,17 +21681,17 @@ esac
fi
+
done
-for ac_func in dup3
+ for ac_func in dup3
do :
ac_fn_c_check_func "$LINENO" "dup3" "ac_cv_func_dup3"
-if test "x$ac_cv_func_dup3" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DUP3 1
-_ACEOF
+if test "x$ac_cv_func_dup3" = xyes
+then :
+ printf "%s\n" "#define HAVE_DUP3 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" dup3.$ac_objext "* ) ;;
@@ -20986,17 +21707,17 @@ esac
fi
+
done
-for ac_func in pipe2
+ for ac_func in pipe2
do :
ac_fn_c_check_func "$LINENO" "pipe2" "ac_cv_func_pipe2"
-if test "x$ac_cv_func_pipe2" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PIPE2 1
-_ACEOF
+if test "x$ac_cv_func_pipe2" = xyes
+then :
+ printf "%s\n" "#define HAVE_PIPE2 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" pipe2.$ac_objext "* ) ;;
@@ -21012,17 +21733,17 @@ esac
fi
+
done
-for ac_func in pw_dup
+ for ac_func in pw_dup
do :
ac_fn_c_check_func "$LINENO" "pw_dup" "ac_cv_func_pw_dup"
-if test "x$ac_cv_func_pw_dup" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PW_DUP 1
-_ACEOF
+if test "x$ac_cv_func_pw_dup" = xyes
+then :
+ printf "%s\n" "#define HAVE_PW_DUP 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" pw_dup.$ac_objext "* ) ;;
@@ -21038,17 +21759,17 @@ esac
fi
+
done
-for ac_func in strlcpy
+ for ac_func in strlcpy
do :
ac_fn_c_check_func "$LINENO" "strlcpy" "ac_cv_func_strlcpy"
-if test "x$ac_cv_func_strlcpy" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRLCPY 1
-_ACEOF
+if test "x$ac_cv_func_strlcpy" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRLCPY 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strlcpy.$ac_objext "* ) ;;
@@ -21064,17 +21785,17 @@ esac
fi
+
done
-for ac_func in strlcat
+ for ac_func in strlcat
do :
ac_fn_c_check_func "$LINENO" "strlcat" "ac_cv_func_strlcat"
-if test "x$ac_cv_func_strlcat" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRLCAT 1
-_ACEOF
+if test "x$ac_cv_func_strlcat" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRLCAT 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strlcat.$ac_objext "* ) ;;
@@ -21090,27 +21811,30 @@ esac
fi
-done
+done
ac_fn_c_check_func "$LINENO" "strnlen" "ac_cv_func_strnlen"
-if test "x$ac_cv_func_strnlen" = xyes; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strnlen" >&5
-$as_echo_n "checking for working strnlen... " >&6; }
-if ${ac_cv_func_strnlen_working+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+if test "x$ac_cv_func_strnlen" = xyes
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working strnlen" >&5
+printf %s "checking for working strnlen... " >&6; }
+if test ${ac_cv_func_strnlen_working+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
# Guess no on AIX systems, yes otherwise.
case "$host_os" in
aix*) ac_cv_func_strnlen_working=no;;
*) ac_cv_func_strnlen_working=yes;;
esac
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int
-main ()
+main (void)
{
#define S "foobar"
@@ -21132,9 +21856,10 @@ main ()
return 0;
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_func_strnlen_working=yes
-else
+else $as_nop
ac_cv_func_strnlen_working=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -21142,8 +21867,8 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strnlen_working" >&5
-$as_echo "$ac_cv_func_strnlen_working" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strnlen_working" >&5
+printf "%s\n" "$ac_cv_func_strnlen_working" >&6; }
test $ac_cv_func_strnlen_working = no && case " $LIBOBJS " in
*" strnlen.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strnlen.$ac_objext"
@@ -21151,7 +21876,7 @@ test $ac_cv_func_strnlen_working = no && case " $LIBOBJS " in
esac
-else
+else $as_nop
case " $LIBOBJS " in
*" strnlen.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS strnlen.$ac_objext"
@@ -21161,17 +21886,17 @@ esac
fi
if test X"$ac_cv_func_strnlen_working" = X"yes"; then
- $as_echo "#define HAVE_STRNLEN 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_STRNLEN 1" >>confdefs.h
+
- for ac_func in strndup
+ for ac_func in strndup
do :
ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup"
-if test "x$ac_cv_func_strndup" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRNDUP 1
-_ACEOF
+if test "x$ac_cv_func_strndup" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRNDUP 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strndup.$ac_objext "* ) ;;
@@ -21187,8 +21912,8 @@ esac
fi
-done
+done
else
# Broken or missing strnlen, use our own.
@@ -21211,22 +21936,23 @@ esac
done
fi
-for ac_func in clock_gettime
+
+ for ac_func in clock_gettime
do :
ac_fn_c_check_func "$LINENO" "clock_gettime" "ac_cv_func_clock_gettime"
-if test "x$ac_cv_func_clock_gettime" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CLOCK_GETTIME 1
-_ACEOF
+if test "x$ac_cv_func_clock_gettime" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
-else
+else $as_nop
# On Solaris, clock_gettime is in librt
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
-$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
-if ${ac_cv_lib_rt_clock_gettime+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for clock_gettime in -lrt" >&5
+printf %s "checking for clock_gettime in -lrt... " >&6; }
+if test ${ac_cv_lib_rt_clock_gettime+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -21235,32 +21961,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 clock_gettime ();
int
-main ()
+main (void)
{
return clock_gettime ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_rt_clock_gettime=yes
-else
+else $as_nop
ac_cv_lib_rt_clock_gettime=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
-$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
-if test "x$ac_cv_lib_rt_clock_gettime" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_clock_gettime" >&5
+printf "%s\n" "$ac_cv_lib_rt_clock_gettime" >&6; }
+if test "x$ac_cv_lib_rt_clock_gettime" = xyes
+then :
- $as_echo "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CLOCK_GETTIME 1" >>confdefs.h
LIBRT="-lrt"
@@ -21268,17 +21993,17 @@ fi
fi
+
done
-for ac_func in getopt_long
+ for ac_func in getopt_long
do :
ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long"
-if test "x$ac_cv_func_getopt_long" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETOPT_LONG 1
-_ACEOF
+if test "x$ac_cv_func_getopt_long" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETOPT_LONG 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" getopt_long.$ac_objext "* ) ;;
@@ -21292,51 +22017,53 @@ esac
"
done
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for optreset" >&5
-$as_echo_n "checking for optreset... " >&6; }
- if ${sudo_cv_optreset+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for optreset" >&5
+printf %s "checking for optreset... " >&6; }
+ if test ${sudo_cv_optreset+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
extern int optreset; optreset = 1; return optreset;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_optreset=yes
-else
+else $as_nop
sudo_cv_optreset=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
if test "$sudo_cv_optreset" = "yes"; then
- $as_echo "#define HAVE_OPTRESET 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_OPTRESET 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_optreset" >&5
-$as_echo "$sudo_cv_optreset" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_optreset" >&5
+printf "%s\n" "$sudo_cv_optreset" >&6; }
fi
+
done
-for ac_func in closefrom
+ for ac_func in closefrom
do :
ac_fn_c_check_func "$LINENO" "closefrom" "ac_cv_func_closefrom"
-if test "x$ac_cv_func_closefrom" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_CLOSEFROM 1
-_ACEOF
+if test "x$ac_cv_func_closefrom" = xyes
+then :
+ printf "%s\n" "#define HAVE_CLOSEFROM 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" closefrom.$ac_objext "* ) ;;
*) LIBOBJS="$LIBOBJS closefrom.$ac_objext"
@@ -21349,57 +22076,57 @@ esac
"
done
- ac_fn_c_check_decl "$LINENO" "F_CLOSEM" "ac_cv_have_decl_F_CLOSEM" "
+ ac_fn_check_decl "$LINENO" "F_CLOSEM" "ac_cv_have_decl_F_CLOSEM" "
# include <limits.h>
# include <fcntl.h>
-"
-if test "x$ac_cv_have_decl_F_CLOSEM" = xyes; then :
- $as_echo "#define HAVE_FCNTL_CLOSEM 1" >>confdefs.h
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_F_CLOSEM" = xyes
+then :
+ printf "%s\n" "#define HAVE_FCNTL_CLOSEM 1" >>confdefs.h
fi
-
fi
+
done
-for ac_func in mkstemps mkdtemp
+ for ac_func in mkstemps mkdtemp
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
-else
+else $as_nop
break
fi
-done
+done
if test X"$ac_cv_func_mkstemps$ac_cv_func_mkdtemp" != X"yesyes"; then
- for ac_func in arc4random random lrand48
+
+ for ac_func in arc4random random lrand48
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
break
fi
-done
+done
if test X"$ac_cv_func_arc4random" != X"yes"; then
- for ac_func in getentropy
-do :
- ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy"
-if test "x$ac_cv_func_getentropy" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETENTROPY 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy"
+if test "x$ac_cv_func_getentropy" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h
fi
-done
fi
case " $LIBOBJS " in
@@ -21417,26 +22144,29 @@ esac
COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }mktemp_test"
fi
-for ac_func in snprintf vsnprintf
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
+if test "x$ac_cv_func_snprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_SNPRINTF 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
+if test "x$ac_cv_func_vsnprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_VSNPRINTF 1" >>confdefs.h
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working snprintf" >&5
-$as_echo_n "checking for working snprintf... " >&6; }
-if ${ac_cv_have_working_snprintf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+fi
+
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working snprintf" >&5
+printf %s "checking for working snprintf... " >&6; }
+if test ${ac_cv_have_working_snprintf+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_have_working_snprintf=cross
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
@@ -21456,9 +22186,10 @@ int main(void)
return(0);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_have_working_snprintf=yes
-else
+else $as_nop
ac_cv_have_working_snprintf=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -21467,16 +22198,18 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_working_snprintf" >&5
-$as_echo "$ac_cv_have_working_snprintf" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vsnprintf" >&5
-$as_echo_n "checking for working vsnprintf... " >&6; }
-if ${ac_cv_have_working_vsnprintf+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test "$cross_compiling" = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_working_snprintf" >&5
+printf "%s\n" "$ac_cv_have_working_snprintf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working vsnprintf" >&5
+printf %s "checking for working vsnprintf... " >&6; }
+if test ${ac_cv_have_working_vsnprintf+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+ if test "$cross_compiling" = yes
+then :
ac_cv_have_working_vsnprintf=cross
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
@@ -21507,9 +22240,10 @@ int main(void)
return(0);
}
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
ac_cv_have_working_vsnprintf=yes
-else
+else $as_nop
ac_cv_have_working_vsnprintf=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -21518,8 +22252,8 @@ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_working_vsnprintf" >&5
-$as_echo "$ac_cv_have_working_vsnprintf" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_have_working_vsnprintf" >&5
+printf "%s\n" "$ac_cv_have_working_vsnprintf" >&6; }
if test x$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf != "xyesyes"; then
case " $LIBOBJS " in
*" snprintf.$ac_objext "* ) ;;
@@ -21527,23 +22261,23 @@ if test x$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf != "xyesyes";
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Replacing missing/broken (v)snprintf() with sudo's version." >&5
-$as_echo "$as_me: WARNING: Replacing missing/broken (v)snprintf() with sudo's version." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Replacing missing/broken (v)snprintf() with sudo's version." >&5
+printf "%s\n" "$as_me: WARNING: Replacing missing/broken (v)snprintf() with sudo's version." >&2;}
-$as_echo "#define PREFER_PORTABLE_SNPRINTF 1" >>confdefs.h
+printf "%s\n" "#define PREFER_PORTABLE_SNPRINTF 1" >>confdefs.h
fi
if test X"$ac_cv_have_working_snprintf$ac_cv_have_working_vsnprintf" = X"yesyes"; then
# System has a C99-compliant v?snprintf(), check for v?asprintf()
- for ac_func in asprintf
+
+ for ac_func in asprintf
do :
ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf"
-if test "x$ac_cv_func_asprintf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ASPRINTF 1
-_ACEOF
+if test "x$ac_cv_func_asprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_ASPRINTF 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" snprintf.$ac_objext "* ) ;;
@@ -21559,17 +22293,17 @@ esac
fi
+
done
- for ac_func in vasprintf
+ for ac_func in vasprintf
do :
ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf"
-if test "x$ac_cv_func_vasprintf" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_VASPRINTF 1
-_ACEOF
+if test "x$ac_cv_func_vasprintf" = xyes
+then :
+ printf "%s\n" "#define HAVE_VASPRINTF 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" snprintf.$ac_objext "* ) ;;
@@ -21585,8 +22319,8 @@ esac
fi
-done
+done
else
# Missing or non-compliant v?snprintf(), assume missing/bad v?asprintf()
@@ -21601,34 +22335,37 @@ $ac_includes_default
#include <errno.h>
"
-if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes; then :
+if test "x$ac_cv_member_struct_tm_tm_gmtoff" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_TM_TM_GMTOFF 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_TM_TM_GMTOFF 1" >>confdefs.h
fi
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim" "ac_cv_member_struct_stat_st_mtim" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtim" = xyes; then :
- $as_echo "#define HAVE_ST_MTIM 1" >>confdefs.h
+if test "x$ac_cv_member_struct_stat_st_mtim" = xyes
+then :
+ printf "%s\n" "#define HAVE_ST_MTIM 1" >>confdefs.h
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtim.st__tim" "ac_cv_member_struct_stat_st_mtim_st__tim" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtim_st__tim" = xyes; then :
- $as_echo "#define HAVE_ST__TIM 1" >>confdefs.h
+if test "x$ac_cv_member_struct_stat_st_mtim_st__tim" = xyes
+then :
+ printf "%s\n" "#define HAVE_ST__TIM 1" >>confdefs.h
fi
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct stat" "st_mtimespec" "ac_cv_member_struct_stat_st_mtimespec" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_mtimespec" = xyes; then :
- $as_echo "#define HAVE_ST_MTIMESPEC 1" >>confdefs.h
+if test "x$ac_cv_member_struct_stat_st_mtimespec" = xyes
+then :
+ printf "%s\n" "#define HAVE_ST_MTIMESPEC 1" >>confdefs.h
-else
+else $as_nop
ac_fn_c_check_member "$LINENO" "struct stat" "st_nmtime" "ac_cv_member_struct_stat_st_nmtime" "$ac_includes_default"
-if test "x$ac_cv_member_struct_stat_st_nmtime" = xyes; then :
- $as_echo "#define HAVE_ST_NMTIME 1" >>confdefs.h
+if test "x$ac_cv_member_struct_stat_st_nmtime" = xyes
+then :
+ printf "%s\n" "#define HAVE_ST_NMTIME 1" >>confdefs.h
fi
@@ -21638,15 +22375,15 @@ fi
fi
-for ac_func in vsyslog
+
+ for ac_func in vsyslog
do :
ac_fn_c_check_func "$LINENO" "vsyslog" "ac_cv_func_vsyslog"
-if test "x$ac_cv_func_vsyslog" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_VSYSLOG 1
-_ACEOF
+if test "x$ac_cv_func_vsyslog" = xyes
+then :
+ printf "%s\n" "#define HAVE_VSYSLOG 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" vsyslog.$ac_objext "* ) ;;
@@ -21663,47 +22400,56 @@ esac
COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }vsyslog_test"
fi
+
done
+ac_fn_c_check_func "$LINENO" "setpassent" "ac_cv_func_setpassent"
+if test "x$ac_cv_func_setpassent" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPASSENT 1" >>confdefs.h
-for ac_func in setpassent setgroupent
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "setgroupent" "ac_cv_func_setgroupent"
+if test "x$ac_cv_func_setgroupent" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETGROUPENT 1" >>confdefs.h
fi
-done
if test X"$with_noexec" != X"no"; then
# Check for non-standard exec functions
- for ac_func in exect execvP execvpe
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "exect" "ac_cv_func_exect"
+if test "x$ac_cv_func_exect" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXECT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "execvP" "ac_cv_func_execvP"
+if test "x$ac_cv_func_execvP" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXECVP 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "execvpe" "ac_cv_func_execvpe"
+if test "x$ac_cv_func_execvpe" = xyes
+then :
+ printf "%s\n" "#define HAVE_EXECVPE 1" >>confdefs.h
fi
-done
# Check for posix_spawn, and posix_spawnp
if test X"$ac_cv_header_spawn_h" = X"yes"; then
- for ac_func in posix_spawn posix_spawnp
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "posix_spawn" "ac_cv_func_posix_spawn"
+if test "x$ac_cv_func_posix_spawn" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_SPAWN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "posix_spawnp" "ac_cv_func_posix_spawnp"
+if test "x$ac_cv_func_posix_spawnp" = xyes
+then :
+ printf "%s\n" "#define HAVE_POSIX_SPAWNP 1" >>confdefs.h
fi
-done
fi
fi
@@ -21713,48 +22459,49 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
#include <sys/types.h>
#include <$ac_header_dirent>
int
-main ()
+main (void)
{
DIR *d; (void)dirfd(d);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- $as_echo "#define HAVE_DIRFD 1" >>confdefs.h
+if ac_fn_c_try_link "$LINENO"
+then :
+ printf "%s\n" "#define HAVE_DIRFD 1" >>confdefs.h
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
#include <$ac_header_dirent>
int
-main ()
+main (void)
{
DIR d; memset(&d, 0, sizeof(d)); return(d.dd_fd);
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- $as_echo "#define HAVE_DD_FD 1" >>confdefs.h
+if ac_fn_c_try_link "$LINENO"
+then :
+ printf "%s\n" "#define HAVE_DD_FD 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
ac_fn_c_check_member "$LINENO" "struct dirent" "d_type" "ac_cv_member_struct_dirent_d_type" "
$ac_includes_default
#include <$ac_header_dirent>
"
-if test "x$ac_cv_member_struct_dirent_d_type" = xyes; then :
+if test "x$ac_cv_member_struct_dirent_d_type" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_DIRENT_D_TYPE 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_TYPE 1" >>confdefs.h
fi
@@ -21763,18 +22510,17 @@ $ac_includes_default
#include <$ac_header_dirent>
"
-if test "x$ac_cv_member_struct_dirent_d_namlen" = xyes; then :
+if test "x$ac_cv_member_struct_dirent_d_namlen" = xyes
+then :
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STRUCT_DIRENT_D_NAMLEN 1
-_ACEOF
+printf "%s\n" "#define HAVE_STRUCT_DIRENT_D_NAMLEN 1" >>confdefs.h
fi
if test "${enable_openssl-no}" != no; then
# Use OpenSSL's sha2 functions
- $as_echo "#define HAVE_OPENSSL 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_OPENSSL 1" >>confdefs.h
DIGEST=digest_openssl.lo
@@ -21787,11 +22533,12 @@ if test "${enable_openssl-no}" != no; then
# Check whether --static is needed
O_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS `$PKG_CONFIG --libs-only-L openssl`"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5
-$as_echo_n "checking for SSL_library_init in -lssl... " >&6; }
-if ${ac_cv_lib_ssl_SSL_library_init_lcrypto+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SSL_library_init in -lssl" >&5
+printf %s "checking for SSL_library_init in -lssl... " >&6; }
+if test ${ac_cv_lib_ssl_SSL_library_init_lcrypto+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lssl -lcrypto $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -21800,32 +22547,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 SSL_library_init ();
int
-main ()
+main (void)
{
return SSL_library_init ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_ssl_SSL_library_init_lcrypto=yes
-else
+else $as_nop
ac_cv_lib_ssl_SSL_library_init_lcrypto=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_library_init_lcrypto" >&5
-$as_echo "$ac_cv_lib_ssl_SSL_library_init_lcrypto" >&6; }
-if test "x$ac_cv_lib_ssl_SSL_library_init_lcrypto" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_library_init_lcrypto" >&5
+printf "%s\n" "$ac_cv_lib_ssl_SSL_library_init_lcrypto" >&6; }
+if test "x$ac_cv_lib_ssl_SSL_library_init_lcrypto" = xyes
+then :
STATIC=""
-else
+else $as_nop
STATIC="--static"
fi
@@ -21841,33 +22587,34 @@ fi
fi
for f in `$PKG_CONFIG --cflags-only-I openssl`; do
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" $f "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains \$f"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains \$f"; } >&5
(: CPPFLAGS already contains $f) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " $f"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=$f
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -21877,99 +22624,102 @@ fi
# No pkg-config file present, try to do it manually
if test "$enable_openssl" != "yes"; then
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${enable_openssl}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_openssl}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_openssl}/include"; } >&5
(: CPPFLAGS already contains -I${enable_openssl}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${enable_openssl}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${enable_openssl}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${LIBMD+:} false; then :
+if test ${LIBMD+y}
+then :
case " $LIBMD " in #(
*" -L${enable_openssl}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBMD already contains -L\${enable_openssl}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBMD already contains -L\${enable_openssl}/lib"; } >&5
(: LIBMD already contains -L${enable_openssl}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LIBMD " -L${enable_openssl}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBMD=\"\$LIBMD\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBMD=\"\$LIBMD\""; } >&5
(: LIBMD="$LIBMD") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LIBMD=-L${enable_openssl}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBMD=\"\$LIBMD\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBMD=\"\$LIBMD\""; } >&5
(: LIBMD="$LIBMD") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${LIBMD_R+:} false; then :
+if test ${LIBMD_R+y}
+then :
case " $LIBMD_R " in #(
*" -R${enable_openssl}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBMD_R already contains -R\${enable_openssl}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBMD_R already contains -R\${enable_openssl}/lib"; } >&5
(: LIBMD_R already contains -R${enable_openssl}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LIBMD_R " -R${enable_openssl}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBMD_R=\"\$LIBMD_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBMD_R=\"\$LIBMD_R\""; } >&5
(: LIBMD_R="$LIBMD_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LIBMD_R=-R${enable_openssl}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBMD_R=\"\$LIBMD_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBMD_R=\"\$LIBMD_R\""; } >&5
(: LIBMD_R="$LIBMD_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -21978,66 +22728,68 @@ fi
-if ${LIBTLS+:} false; then :
+if test ${LIBTLS+y}
+then :
case " $LIBTLS " in #(
*" -L${enable_openssl}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBTLS already contains -L\${enable_openssl}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS already contains -L\${enable_openssl}/lib"; } >&5
(: LIBTLS already contains -L${enable_openssl}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LIBTLS " -L${enable_openssl}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBTLS=\"\$LIBTLS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS=\"\$LIBTLS\""; } >&5
(: LIBTLS="$LIBTLS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LIBTLS=-L${enable_openssl}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBTLS=\"\$LIBTLS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS=\"\$LIBTLS\""; } >&5
(: LIBTLS="$LIBTLS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${LIBTLS_R+:} false; then :
+if test ${LIBTLS_R+y}
+then :
case " $LIBTLS_R " in #(
*" -R${enable_openssl}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBTLS_R already contains -R\${enable_openssl}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS_R already contains -R\${enable_openssl}/lib"; } >&5
(: LIBTLS_R already contains -R${enable_openssl}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LIBTLS_R " -R${enable_openssl}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBTLS_R=\"\$LIBTLS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS_R=\"\$LIBTLS_R\""; } >&5
(: LIBTLS_R="$LIBTLS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LIBTLS_R=-R${enable_openssl}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBTLS_R=\"\$LIBTLS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBTLS_R=\"\$LIBTLS_R\""; } >&5
(: LIBTLS_R="$LIBTLS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -22054,148 +22806,171 @@ fi
OLIBS="$LIBS"
LIBS="$LIBS $LIBTLS"
- for ac_func in X509_STORE_CTX_get0_cert ASN1_STRING_get0_data SSL_CTX_get0_certificate TLS_client_method TLS_server_method
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "X509_STORE_CTX_get0_cert" "ac_cv_func_X509_STORE_CTX_get0_cert"
+if test "x$ac_cv_func_X509_STORE_CTX_get0_cert" = xyes
+then :
+ printf "%s\n" "#define HAVE_X509_STORE_CTX_GET0_CERT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ASN1_STRING_get0_data" "ac_cv_func_ASN1_STRING_get0_data"
+if test "x$ac_cv_func_ASN1_STRING_get0_data" = xyes
+then :
+ printf "%s\n" "#define HAVE_ASN1_STRING_GET0_DATA 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "SSL_CTX_get0_certificate" "ac_cv_func_SSL_CTX_get0_certificate"
+if test "x$ac_cv_func_SSL_CTX_get0_certificate" = xyes
+then :
+ printf "%s\n" "#define HAVE_SSL_CTX_GET0_CERTIFICATE 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "TLS_client_method" "ac_cv_func_TLS_client_method"
+if test "x$ac_cv_func_TLS_client_method" = xyes
+then :
+ printf "%s\n" "#define HAVE_TLS_CLIENT_METHOD 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "TLS_server_method" "ac_cv_func_TLS_server_method"
+if test "x$ac_cv_func_TLS_server_method" = xyes
+then :
+ printf "%s\n" "#define HAVE_TLS_SERVER_METHOD 1" >>confdefs.h
fi
-done
# SSL_CTX_set_min_proto_version may be a macro
- ac_fn_c_check_decl "$LINENO" "SSL_CTX_set_min_proto_version" "ac_cv_have_decl_SSL_CTX_set_min_proto_version" "
+ ac_fn_check_decl "$LINENO" "SSL_CTX_set_min_proto_version" "ac_cv_have_decl_SSL_CTX_set_min_proto_version" "
$ac_includes_default
#include <openssl/ssl.h>
-"
-if test "x$ac_cv_have_decl_SSL_CTX_set_min_proto_version" = xyes; then :
- $as_echo "#define HAVE_SSL_CTX_SET_MIN_PROTO_VERSION 1" >>confdefs.h
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SSL_CTX_set_min_proto_version" = xyes
+then :
+ printf "%s\n" "#define HAVE_SSL_CTX_SET_MIN_PROTO_VERSION 1" >>confdefs.h
fi
-
# LibreSSL TLS 1.3 support may not be enabled, check for declaration too.
ac_fn_c_check_func "$LINENO" "SSL_CTX_set_ciphersuites" "ac_cv_func_SSL_CTX_set_ciphersuites"
-if test "x$ac_cv_func_SSL_CTX_set_ciphersuites" = xyes; then :
+if test "x$ac_cv_func_SSL_CTX_set_ciphersuites" = xyes
+then :
- ac_fn_c_check_decl "$LINENO" "SSL_CTX_set_ciphersuites" "ac_cv_have_decl_SSL_CTX_set_ciphersuites" "
+ ac_fn_check_decl "$LINENO" "SSL_CTX_set_ciphersuites" "ac_cv_have_decl_SSL_CTX_set_ciphersuites" "
$ac_includes_default
#include <openssl/ssl.h>
-"
-if test "x$ac_cv_have_decl_SSL_CTX_set_ciphersuites" = xyes; then :
- $as_echo "#define HAVE_SSL_CTX_SET_CIPHERSUITES 1" >>confdefs.h
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SSL_CTX_set_ciphersuites" = xyes
+then :
+ printf "%s\n" "#define HAVE_SSL_CTX_SET_CIPHERSUITES 1" >>confdefs.h
fi
-
fi
LIBS="$OLIBS"
elif test "${enable_gcrypt-no}" != no; then
# Use gcrypt's sha2 functions
- $as_echo "#define HAVE_GCRYPT 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_GCRYPT 1" >>confdefs.h
DIGEST=digest_gcrypt.lo
LIBMD="-lgcrypt"
if test "$enable_gcrypt" != "yes"; then
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${enable_gcrypt}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_gcrypt}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_gcrypt}/include"; } >&5
(: CPPFLAGS already contains -I${enable_gcrypt}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${enable_gcrypt}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${enable_gcrypt}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${LDFLAGS+:} false; then :
+if test ${LDFLAGS+y}
+then :
case " $LDFLAGS " in #(
*" -L${enable_gcrypt}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -L\${enable_gcrypt}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -L\${enable_gcrypt}/lib"; } >&5
(: LDFLAGS already contains -L${enable_gcrypt}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS " -L${enable_gcrypt}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS=-L${enable_gcrypt}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${LDFLAGS_R+:} false; then :
+if test ${LDFLAGS_R+y}
+then :
case " $LDFLAGS_R " in #(
*" -R${enable_gcrypt}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R already contains -R\${enable_gcrypt}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R already contains -R\${enable_gcrypt}/lib"; } >&5
(: LDFLAGS_R already contains -R${enable_gcrypt}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS_R " -R${enable_gcrypt}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
(: LDFLAGS_R="$LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS_R=-R${enable_gcrypt}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
(: LDFLAGS_R="$LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -22206,59 +22981,63 @@ fi
fi
if test "$DIGEST" = "digest.lo"; then
FOUND_SHA2=no
- ac_fn_c_check_header_mongrel "$LINENO" "sha2.h" "ac_cv_header_sha2_h" "$ac_includes_default"
-if test "x$ac_cv_header_sha2_h" = xyes; then :
+ ac_fn_c_check_header_compile "$LINENO" "sha2.h" "ac_cv_header_sha2_h" "$ac_includes_default"
+if test "x$ac_cv_header_sha2_h" = xyes
+then :
FOUND_SHA2=yes
- for ac_func in SHA224Update
+
+ for ac_func in SHA224Update
do :
ac_fn_c_check_func "$LINENO" "SHA224Update" "ac_cv_func_SHA224Update"
-if test "x$ac_cv_func_SHA224Update" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SHA224UPDATE 1
-_ACEOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the data argument of SHA224Update() is void *" >&5
-$as_echo_n "checking whether the data argument of SHA224Update() is void *... " >&6; }
-if ${sudo_cv_func_sha2_void_ptr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "x$ac_cv_func_SHA224Update" = xyes
+then :
+ printf "%s\n" "#define HAVE_SHA224UPDATE 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the data argument of SHA224Update() is void *" >&5
+printf %s "checking whether the data argument of SHA224Update() is void *... " >&6; }
+if test ${sudo_cv_func_sha2_void_ptr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
#include <sha2.h>
void SHA224Update(SHA2_CTX *context, const void *data, size_t len) {return;}
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_func_sha2_void_ptr=yes
-else
+else $as_nop
sudo_cv_func_sha2_void_ptr=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_sha2_void_ptr" >&5
-$as_echo "$sudo_cv_func_sha2_void_ptr" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_sha2_void_ptr" >&5
+printf "%s\n" "$sudo_cv_func_sha2_void_ptr" >&6; }
if test $sudo_cv_func_sha2_void_ptr = yes; then
-$as_echo "#define SHA2_VOID_PTR 1" >>confdefs.h
+printf "%s\n" "#define SHA2_VOID_PTR 1" >>confdefs.h
fi
-else
+else $as_nop
# On some systems, SHA224Update is in libmd
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SHA224Update in -lmd" >&5
-$as_echo_n "checking for SHA224Update in -lmd... " >&6; }
-if ${ac_cv_lib_md_SHA224Update+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SHA224Update in -lmd" >&5
+printf %s "checking for SHA224Update in -lmd... " >&6; }
+if test ${ac_cv_lib_md_SHA224Update+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lmd $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -22267,70 +23046,71 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 SHA224Update ();
int
-main ()
+main (void)
{
return SHA224Update ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_md_SHA224Update=yes
-else
+else $as_nop
ac_cv_lib_md_SHA224Update=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_md_SHA224Update" >&5
-$as_echo "$ac_cv_lib_md_SHA224Update" >&6; }
-if test "x$ac_cv_lib_md_SHA224Update" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_md_SHA224Update" >&5
+printf "%s\n" "$ac_cv_lib_md_SHA224Update" >&6; }
+if test "x$ac_cv_lib_md_SHA224Update" = xyes
+then :
- $as_echo "#define HAVE_SHA224UPDATE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SHA224UPDATE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the data argument of SHA224Update() is void *" >&5
-$as_echo_n "checking whether the data argument of SHA224Update() is void *... " >&6; }
-if ${sudo_cv_func_sha2_void_ptr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the data argument of SHA224Update() is void *" >&5
+printf %s "checking whether the data argument of SHA224Update() is void *... " >&6; }
+if test ${sudo_cv_func_sha2_void_ptr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
#include <sha2.h>
void SHA224Update(SHA2_CTX *context, const void *data, size_t len) {return;}
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_func_sha2_void_ptr=yes
-else
+else $as_nop
sudo_cv_func_sha2_void_ptr=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_sha2_void_ptr" >&5
-$as_echo "$sudo_cv_func_sha2_void_ptr" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_sha2_void_ptr" >&5
+printf "%s\n" "$sudo_cv_func_sha2_void_ptr" >&6; }
if test $sudo_cv_func_sha2_void_ptr = yes; then
-$as_echo "#define SHA2_VOID_PTR 1" >>confdefs.h
+printf "%s\n" "#define SHA2_VOID_PTR 1" >>confdefs.h
fi
LIBMD="-lmd"
-else
+else $as_nop
# Does not have SHA224Update
FOUND_SHA2=no
@@ -22339,12 +23119,11 @@ fi
fi
-done
+done
fi
-
if test X"$FOUND_SHA2" = X"no"; then
case " $LIBOBJS " in
*" sha2.$ac_objext "* ) ;;
@@ -22363,9 +23142,10 @@ fi
OLIBS="$LIBS"
LIBS="${LIBS} ${NET_LIBS}"
ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket"
-if test "x$ac_cv_func_socket" = xyes; then :
+if test "x$ac_cv_func_socket" = xyes
+then :
-else
+else $as_nop
for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
_libs=
@@ -22381,11 +23161,12 @@ else
extralibs="`echo \"$libs\"|sed 's/^-l[^ ]*//'`"
_sudo_check_lib_extras=`echo "$extralibs"|sed -e 's/ *//g' -e 's/-l/_/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -l$lib${5+ }$extralibs" >&5
-$as_echo_n "checking for socket in -l$lib${5+ }$extralibs... " >&6; }
- if { as_var=sudo_cv_lib_$lib''_socket$_sudo_check_lib_extras; eval \${$as_var+:} false; }; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for socket in -l$lib${5+ }$extralibs" >&5
+printf %s "checking for socket in -l$lib${5+ }$extralibs... " >&6; }
+ if { as_var=sudo_cv_lib_$lib''_socket$_sudo_check_lib_extras; eval test \${$as_var+y}; }
+then :
+ printf %s "(cached) " >&6
+else $as_nop
SUDO_CHECK_LIB_OLIBS="$LIBS"
LIBS="$LIBS -l$lib${5+ }$extralibs"
@@ -22395,37 +23176,35 @@ else
/* 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 socket ();
int
-main ()
+main (void)
{
return socket ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval sudo_cv_lib_$lib''_socket$_sudo_check_lib_extras=yes
-else
+else $as_nop
eval sudo_cv_lib_$lib''_socket$_sudo_check_lib_extras=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$SUDO_CHECK_LIB_OLIBS"
fi
if eval test \$sudo_cv_lib_$lib''_socket$_sudo_check_lib_extras = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
NET_LIBS="${NET_LIBS} $libs"; break
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -22439,13 +23218,14 @@ LIBS="${LIBS} ${NET_LIBS}"
found=false
INET_PTON_LIBS=
ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton"
-if test "x$ac_cv_func_inet_pton" = xyes; then :
+if test "x$ac_cv_func_inet_pton" = xyes
+then :
found=true
- $as_echo "#define HAVE_INET_PTON 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
-else
+else $as_nop
for libs in "-lsocket" "-linet" "-lsocket -lnsl" "-lresolv"; do
_libs=
@@ -22461,11 +23241,12 @@ else
extralibs="`echo \"$libs\"|sed 's/^-l[^ ]*//'`"
_sudo_check_lib_extras=`echo "$extralibs"|sed -e 's/ *//g' -e 's/-l/_/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_pton in -l$lib${5+ }$extralibs" >&5
-$as_echo_n "checking for inet_pton in -l$lib${5+ }$extralibs... " >&6; }
- if { as_var=sudo_cv_lib_$lib''_inet_pton$_sudo_check_lib_extras; eval \${$as_var+:} false; }; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_pton in -l$lib${5+ }$extralibs" >&5
+printf %s "checking for inet_pton in -l$lib${5+ }$extralibs... " >&6; }
+ if { as_var=sudo_cv_lib_$lib''_inet_pton$_sudo_check_lib_extras; eval test \${$as_var+y}; }
+then :
+ printf %s "(cached) " >&6
+else $as_nop
SUDO_CHECK_LIB_OLIBS="$LIBS"
LIBS="$LIBS -l$lib${5+ }$extralibs"
@@ -22475,50 +23256,48 @@ else
/* 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 inet_pton ();
int
-main ()
+main (void)
{
return inet_pton ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval sudo_cv_lib_$lib''_inet_pton$_sudo_check_lib_extras=yes
-else
+else $as_nop
eval sudo_cv_lib_$lib''_inet_pton$_sudo_check_lib_extras=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$SUDO_CHECK_LIB_OLIBS"
fi
if eval test \$sudo_cv_lib_$lib''_inet_pton$_sudo_check_lib_extras = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found=true
- $as_echo "#define HAVE_INET_PTON 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_INET_PTON 1" >>confdefs.h
NET_LIBS="${NET_LIBS} $libs"
INET_PTON_LIBS="$libs"
case "$libs" in
*-lresolv*)
- $as_echo "#define NEED_RESOLV_H 1" >>confdefs.h
+ printf "%s\n" "#define NEED_RESOLV_H 1" >>confdefs.h
;;
esac
break
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -22545,13 +23324,14 @@ OLIBS="$LIBS"
LIBS="${LIBS} ${NET_LIBS}"
found=false
ac_fn_c_check_func "$LINENO" "inet_ntop" "ac_cv_func_inet_ntop"
-if test "x$ac_cv_func_inet_ntop" = xyes; then :
+if test "x$ac_cv_func_inet_ntop" = xyes
+then :
found=true
- $as_echo "#define HAVE_INET_NTOP 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h
-else
+else $as_nop
for libs in "-lsocket" "-linet" "-lsocket -lnsl" "-lresolv"; do
_libs=
@@ -22567,11 +23347,12 @@ else
extralibs="`echo \"$libs\"|sed 's/^-l[^ ]*//'`"
_sudo_check_lib_extras=`echo "$extralibs"|sed -e 's/ *//g' -e 's/-l/_/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_ntop in -l$lib${5+ }$extralibs" >&5
-$as_echo_n "checking for inet_ntop in -l$lib${5+ }$extralibs... " >&6; }
- if { as_var=sudo_cv_lib_$lib''_inet_ntop$_sudo_check_lib_extras; eval \${$as_var+:} false; }; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for inet_ntop in -l$lib${5+ }$extralibs" >&5
+printf %s "checking for inet_ntop in -l$lib${5+ }$extralibs... " >&6; }
+ if { as_var=sudo_cv_lib_$lib''_inet_ntop$_sudo_check_lib_extras; eval test \${$as_var+y}; }
+then :
+ printf %s "(cached) " >&6
+else $as_nop
SUDO_CHECK_LIB_OLIBS="$LIBS"
LIBS="$LIBS -l$lib${5+ }$extralibs"
@@ -22581,43 +23362,41 @@ else
/* 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 inet_ntop ();
int
-main ()
+main (void)
{
return inet_ntop ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval sudo_cv_lib_$lib''_inet_ntop$_sudo_check_lib_extras=yes
-else
+else $as_nop
eval sudo_cv_lib_$lib''_inet_ntop$_sudo_check_lib_extras=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$SUDO_CHECK_LIB_OLIBS"
fi
if eval test \$sudo_cv_lib_$lib''_inet_ntop$_sudo_check_lib_extras = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
found=true
- $as_echo "#define HAVE_INET_NTOP 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_INET_NTOP 1" >>confdefs.h
NET_LIBS="${NET_LIBS} $libs"
break
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -22643,9 +23422,10 @@ fi
OLIBS="$LIBS"
LIBS="${LIBS} ${NET_LIBS}"
ac_fn_c_check_func "$LINENO" "syslog" "ac_cv_func_syslog"
-if test "x$ac_cv_func_syslog" = xyes; then :
+if test "x$ac_cv_func_syslog" = xyes
+then :
-else
+else $as_nop
for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
_libs=
@@ -22661,11 +23441,12 @@ else
extralibs="`echo \"$libs\"|sed 's/^-l[^ ]*//'`"
_sudo_check_lib_extras=`echo "$extralibs"|sed -e 's/ *//g' -e 's/-l/_/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for syslog in -l$lib${5+ }$extralibs" >&5
-$as_echo_n "checking for syslog in -l$lib${5+ }$extralibs... " >&6; }
- if { as_var=sudo_cv_lib_$lib''_syslog$_sudo_check_lib_extras; eval \${$as_var+:} false; }; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for syslog in -l$lib${5+ }$extralibs" >&5
+printf %s "checking for syslog in -l$lib${5+ }$extralibs... " >&6; }
+ if { as_var=sudo_cv_lib_$lib''_syslog$_sudo_check_lib_extras; eval test \${$as_var+y}; }
+then :
+ printf %s "(cached) " >&6
+else $as_nop
SUDO_CHECK_LIB_OLIBS="$LIBS"
LIBS="$LIBS -l$lib${5+ }$extralibs"
@@ -22675,37 +23456,35 @@ else
/* 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 syslog ();
int
-main ()
+main (void)
{
return syslog ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval sudo_cv_lib_$lib''_syslog$_sudo_check_lib_extras=yes
-else
+else $as_nop
eval sudo_cv_lib_$lib''_syslog$_sudo_check_lib_extras=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$SUDO_CHECK_LIB_OLIBS"
fi
if eval test \$sudo_cv_lib_$lib''_syslog$_sudo_check_lib_extras = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
NET_LIBS="${NET_LIBS} $libs"; break
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -22720,11 +23499,12 @@ LIBS="$OLIBS"
#
OLIBS="$LIBS"
GETADDRINFO_LIBS=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
-$as_echo_n "checking for getaddrinfo... " >&6; }
-if ${ax_cv_func_getaddrinfo+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo" >&5
+printf %s "checking for getaddrinfo... " >&6; }
+if test ${ax_cv_func_getaddrinfo+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
@@ -22732,31 +23512,33 @@ else
#include <netdb.h>
int main() { return getaddrinfo(0, 0, 0, 0); }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ax_cv_func_getaddrinfo=yes
-else
+else $as_nop
ax_cv_func_getaddrinfo=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_func_getaddrinfo" >&5
-$as_echo "$ax_cv_func_getaddrinfo" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_func_getaddrinfo" >&5
+printf "%s\n" "$ax_cv_func_getaddrinfo" >&6; }
if test X"$ax_cv_func_getaddrinfo" = X"yes"; then
-$as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h
else
# Not found in libc, check libsocket and libinet
_found=no
for _libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
_cv="ax_cv_lib_getaddrinfo`echo \"$_libs\"|sed -e 's/-l/_/g' -e 's/ *//g'`"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo in $_libs" >&5
-$as_echo_n "checking for getaddrinfo in $_libs... " >&6; }
- if eval \${$_cv+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for getaddrinfo in $_libs" >&5
+printf %s "checking for getaddrinfo in $_libs... " >&6; }
+ if eval test \${$_cv+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
_nlibs=
for _l in $_libs; do
@@ -22779,12 +23561,13 @@ else
#include <netdb.h>
int main() { return getaddrinfo(0, 0, 0, 0); }
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval $_cv=yes
-else
+else $as_nop
eval $_cv=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$AX_FUNC_GETADDRINFO_OLIBS"
fi
@@ -22792,15 +23575,15 @@ rm -f core conftest.err conftest.$ac_objext \
fi
if eval test \$$_cv = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define HAVE_GETADDRINFO 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define HAVE_GETADDRINFO 1" >>confdefs.h
test -n "$_libs" && LIBS="$LIBS $_libs"
break
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
done
if eval test \$$_cv != "yes"; then
case " $LIBOBJS " in
@@ -22827,9 +23610,10 @@ case " $LIBOBJS " in
LIBS="${LIBS}${LIBS+ }${INET_PTON_LIBS}"
fi
ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname"
-if test "x$ac_cv_func_gethostbyname" = xyes; then :
+if test "x$ac_cv_func_gethostbyname" = xyes
+then :
-else
+else $as_nop
for libs in "-lsocket" "-linet" "-lsocket -lnsl"; do
_libs=
@@ -22845,11 +23629,12 @@ else
extralibs="`echo \"$libs\"|sed 's/^-l[^ ]*//'`"
_sudo_check_lib_extras=`echo "$extralibs"|sed -e 's/ *//g' -e 's/-l/_/g'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -l$lib${5+ }$extralibs" >&5
-$as_echo_n "checking for gethostbyname in -l$lib${5+ }$extralibs... " >&6; }
- if { as_var=sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras; eval \${$as_var+:} false; }; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -l$lib${5+ }$extralibs" >&5
+printf %s "checking for gethostbyname in -l$lib${5+ }$extralibs... " >&6; }
+ if { as_var=sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras; eval test \${$as_var+y}; }
+then :
+ printf %s "(cached) " >&6
+else $as_nop
SUDO_CHECK_LIB_OLIBS="$LIBS"
LIBS="$LIBS -l$lib${5+ }$extralibs"
@@ -22859,37 +23644,35 @@ else
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
-#ifdef __cplusplus
-extern "C"
-#endif
char gethostbyname ();
int
-main ()
+main (void)
{
return gethostbyname ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras=yes
-else
+else $as_nop
eval sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS="$SUDO_CHECK_LIB_OLIBS"
fi
if eval test \$sudo_cv_lib_$lib''_gethostbyname$_sudo_check_lib_extras = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
LT_DEP_LIBS="${LT_DEP_LIBS} $libs"; break
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
@@ -22923,23 +23706,23 @@ fi
esac
LIBS="$OLIBS"
-for ac_func in getprogname
+
+ for ac_func in getprogname
do :
ac_fn_c_check_func "$LINENO" "getprogname" "ac_cv_func_getprogname"
-if test "x$ac_cv_func_getprogname" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GETPROGNAME 1
-_ACEOF
+if test "x$ac_cv_func_getprogname" = xyes
+then :
+ printf "%s\n" "#define HAVE_GETPROGNAME 1" >>confdefs.h
+
- for ac_func in setprogname
+ for ac_func in setprogname
do :
ac_fn_c_check_func "$LINENO" "setprogname" "ac_cv_func_setprogname"
-if test "x$ac_cv_func_setprogname" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SETPROGNAME 1
-_ACEOF
+if test "x$ac_cv_func_setprogname" = xyes
+then :
+ printf "%s\n" "#define HAVE_SETPROGNAME 1" >>confdefs.h
-else
+else $as_nop
for _sym in sudo_setprogname; do
COMPAT_EXP="${COMPAT_EXP}${_sym}
@@ -22947,43 +23730,45 @@ else
done
fi
-done
+done
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __progname" >&5
-$as_echo_n "checking for __progname... " >&6; }
- if ${sudo_cv___progname+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __progname" >&5
+printf %s "checking for __progname... " >&6; }
+ if test ${sudo_cv___progname+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
extern char *__progname; if (__progname[0] == '\0') return 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv___progname=yes
-else
+else $as_nop
sudo_cv___progname=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
if test "$sudo_cv___progname" = "yes"; then
- $as_echo "#define HAVE___PROGNAME 1" >>confdefs.h
+ printf "%s\n" "#define HAVE___PROGNAME 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___progname" >&5
-$as_echo "$sudo_cv___progname" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___progname" >&5
+printf "%s\n" "$sudo_cv___progname" >&6; }
for _sym in sudo_getprogname; do
COMPAT_EXP="${COMPAT_EXP}${_sym}
@@ -22998,73 +23783,77 @@ $as_echo "$sudo_cv___progname" >&6; }
fi
-done
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __func__" >&5
-$as_echo_n "checking for __func__... " >&6; }
-if ${sudo_cv___func__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+done
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __func__" >&5
+printf %s "checking for __func__... " >&6; }
+if test ${sudo_cv___func__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
if (__func__[0] == '\0') return 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv___func__=yes
-else
+else $as_nop
sudo_cv___func__=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___func__" >&5
-$as_echo "$sudo_cv___func__" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___func__" >&5
+printf "%s\n" "$sudo_cv___func__" >&6; }
if test "$sudo_cv___func__" = "yes"; then
- $as_echo "#define HAVE___FUNC__ 1" >>confdefs.h
+ printf "%s\n" "#define HAVE___FUNC__ 1" >>confdefs.h
elif test -n "$GCC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __FUNCTION__" >&5
-$as_echo_n "checking for __FUNCTION__... " >&6; }
- if ${sudo_cv___FUNCTION__+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for __FUNCTION__" >&5
+printf %s "checking for __FUNCTION__... " >&6; }
+ if test ${sudo_cv___FUNCTION__+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
if(__FUNCTION__[0] == '\0') return 1;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv___FUNCTION__=yes
-else
+else $as_nop
sudo_cv___FUNCTION__=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___FUNCTION__" >&5
-$as_echo "$sudo_cv___FUNCTION__" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv___FUNCTION__" >&5
+printf "%s\n" "$sudo_cv___FUNCTION__" >&6; }
if test "$sudo_cv___FUNCTION__" = "yes"; then
- $as_echo "#define HAVE___FUNC__ 1" >>confdefs.h
+ printf "%s\n" "#define HAVE___FUNC__ 1" >>confdefs.h
-$as_echo "#define __func__ __FUNCTION__" >>confdefs.h
+printf "%s\n" "#define __func__ __FUNCTION__" >>confdefs.h
fi
fi
@@ -23078,99 +23867,102 @@ fi
if test "$enable_nls" != "no"; then
if test "$enable_nls" != "yes"; then
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${enable_nls}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_nls}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_nls}/include"; } >&5
(: CPPFLAGS already contains -I${enable_nls}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${enable_nls}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${enable_nls}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${LDFLAGS+:} false; then :
+if test ${LDFLAGS+y}
+then :
case " $LDFLAGS " in #(
*" -L$enable_nls/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -L\$enable_nls/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -L\$enable_nls/lib"; } >&5
(: LDFLAGS already contains -L$enable_nls/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS " -L$enable_nls/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS=-L$enable_nls/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${LDFLAGS_R+:} false; then :
+if test ${LDFLAGS_R+y}
+then :
case " $LDFLAGS_R " in #(
*" -R$enable_nls/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R already contains -R\$enable_nls/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R already contains -R\$enable_nls/lib"; } >&5
(: LDFLAGS_R already contains -R$enable_nls/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS_R " -R$enable_nls/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
(: LDFLAGS_R="$LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS_R=-R$enable_nls/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS_R=\"\$LDFLAGS_R\""; } >&5
(: LDFLAGS_R="$LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -23186,24 +23978,25 @@ fi
continue
fi
gettext_name=sudo_cv_gettext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext" >&5
-$as_echo_n "checking for gettext... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gettext" >&5
+printf %s "checking for gettext... " >&6; }
else
LIBS="$OLIBS $l"
gettext_name=sudo_cv_gettext"`echo $l|sed -e 's/ //g' -e 's/-/_/g'`"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gettext in $l" >&5
-$as_echo_n "checking for gettext in $l... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gettext in $l" >&5
+printf %s "checking for gettext in $l... " >&6; }
fi
- if eval \${$gettext_name+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ if eval test \${$gettext_name+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <libintl.h>
int
-main ()
+main (void)
{
(void)gettext((char *)0);
;
@@ -23211,31 +24004,28 @@ main ()
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval $gettext_name=yes
-else
+else $as_nop
eval $gettext_name=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
eval gettext_result="\$$gettext_name"
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gettext_result" >&5
-$as_echo "$gettext_result" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $gettext_result" >&5
+printf "%s\n" "$gettext_result" >&6; }
if test "$gettext_result" = "yes"; then
- for ac_func in ngettext
-do :
- ac_fn_c_check_func "$LINENO" "ngettext" "ac_cv_func_ngettext"
-if test "x$ac_cv_func_ngettext" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_NGETTEXT 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "ngettext" "ac_cv_func_ngettext"
+if test "x$ac_cv_func_ngettext" = xyes
+then :
+ printf "%s\n" "#define HAVE_NGETTEXT 1" >>confdefs.h
fi
-done
break
fi
@@ -23256,7 +24046,7 @@ done
LIBINTL="-lintl -liconv"
fi
if test X"$SUDO_NLS" = X"enabled"; then
- $as_echo "#define HAVE_LIBINTL_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_LIBINTL_H 1" >>confdefs.h
for _sym in sudo_warn_gettext_v1; do
@@ -23269,11 +24059,12 @@ fi
case "$enable_zlib" in
yes)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzdopen in -lz" >&5
-$as_echo_n "checking for gzdopen in -lz... " >&6; }
-if ${ac_cv_lib_z_gzdopen+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gzdopen in -lz" >&5
+printf %s "checking for gzdopen in -lz... " >&6; }
+if test ${ac_cv_lib_z_gzdopen+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lz $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -23282,53 +24073,50 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 gzdopen ();
int
-main ()
+main (void)
{
return gzdopen ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_z_gzdopen=yes
-else
+else $as_nop
ac_cv_lib_z_gzdopen=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzdopen" >&5
-$as_echo "$ac_cv_lib_z_gzdopen" >&6; }
-if test "x$ac_cv_lib_z_gzdopen" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzdopen" >&5
+printf "%s\n" "$ac_cv_lib_z_gzdopen" >&6; }
+if test "x$ac_cv_lib_z_gzdopen" = xyes
+then :
- for ac_header in zlib.h
+ for ac_header in zlib.h
do :
- ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_zlib_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_ZLIB_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default"
+if test "x$ac_cv_header_zlib_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
ZLIB="-lz"
-else
+else $as_nop
enable_zlib=builtin
fi
done
-
fi
;;
no)
;;
system)
- $as_echo "#define HAVE_ZLIB_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
ZLIB="-lz"
;;
@@ -23336,102 +24124,105 @@ fi
# handled below
;;
*)
- $as_echo "#define HAVE_ZLIB_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${enable_zlib}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_zlib}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${enable_zlib}/include"; } >&5
(: CPPFLAGS already contains -I${enable_zlib}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${enable_zlib}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${enable_zlib}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${ZLIB+:} false; then :
+if test ${ZLIB+y}
+then :
case " $ZLIB " in #(
*" -L$enable_zlib/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : ZLIB already contains -L\$enable_zlib/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ZLIB already contains -L\$enable_zlib/lib"; } >&5
(: ZLIB already contains -L$enable_zlib/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append ZLIB " -L$enable_zlib/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : ZLIB=\"\$ZLIB\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ZLIB=\"\$ZLIB\""; } >&5
(: ZLIB="$ZLIB") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
ZLIB=-L$enable_zlib/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : ZLIB=\"\$ZLIB\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ZLIB=\"\$ZLIB\""; } >&5
(: ZLIB="$ZLIB") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${ZLIB_R+:} false; then :
+if test ${ZLIB_R+y}
+then :
case " $ZLIB_R " in #(
*" -R$enable_zlib/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : ZLIB_R already contains -R\$enable_zlib/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ZLIB_R already contains -R\$enable_zlib/lib"; } >&5
(: ZLIB_R already contains -R$enable_zlib/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append ZLIB_R " -R$enable_zlib/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : ZLIB_R=\"\$ZLIB_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ZLIB_R=\"\$ZLIB_R\""; } >&5
(: ZLIB_R="$ZLIB_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
ZLIB_R=-R$enable_zlib/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : ZLIB_R=\"\$ZLIB_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ZLIB_R=\"\$ZLIB_R\""; } >&5
(: ZLIB_R="$ZLIB_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -23443,7 +24234,7 @@ fi
esac
case "$enable_zlib" in
builtin|static|dynamic)
- $as_echo "#define HAVE_ZLIB_H 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_ZLIB_H 1" >>confdefs.h
# XXX - can't use AX_APPEND_FLAG due to use of $(top_foo) and quoting
CPPFLAGS='-I$(top_builddir)/lib/zlib -I$(top_srcdir)/lib/zlib '"${CPPFLAGS}"
@@ -23463,96 +24254,96 @@ case "$enable_zlib" in
;;
esac
-ac_fn_c_check_decl "$LINENO" "errno" "ac_cv_have_decl_errno" "
+ac_fn_check_decl "$LINENO" "errno" "ac_cv_have_decl_errno" "
$ac_includes_default
#include <errno.h>
-"
-if test "x$ac_cv_have_decl_errno" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_errno" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ERRNO $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_ERRNO $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "h_errno" "ac_cv_have_decl_h_errno" "
+ac_fn_check_decl "$LINENO" "h_errno" "ac_cv_have_decl_h_errno" "
$ac_includes_default
#include <netdb.h>
-"
-if test "x$ac_cv_have_decl_h_errno" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_h_errno" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_H_ERRNO $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_H_ERRNO $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "
+ac_fn_check_decl "$LINENO" "LLONG_MAX" "ac_cv_have_decl_LLONG_MAX" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_LLONG_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_LLONG_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LLONG_MAX $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "LLONG_MIN" "ac_cv_have_decl_LLONG_MIN" "
+printf "%s\n" "#define HAVE_DECL_LLONG_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "LLONG_MIN" "ac_cv_have_decl_LLONG_MIN" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_LLONG_MIN" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_LLONG_MIN" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_LLONG_MIN $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "ULLONG_MAX" "ac_cv_have_decl_ULLONG_MAX" "
+printf "%s\n" "#define HAVE_DECL_LLONG_MIN $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "ULLONG_MAX" "ac_cv_have_decl_ULLONG_MAX" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_ULLONG_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_ULLONG_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_ULLONG_MAX $ac_have_decl
-_ACEOF
-ac_fn_c_check_decl "$LINENO" "PATH_MAX" "ac_cv_have_decl_PATH_MAX" "
+printf "%s\n" "#define HAVE_DECL_ULLONG_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "PATH_MAX" "ac_cv_have_decl_PATH_MAX" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_PATH_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_PATH_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_PATH_MAX $ac_have_decl" >>confdefs.h
+ac_fn_check_decl "$LINENO" "SSIZE_MAX" "ac_cv_have_decl_SSIZE_MAX" "
+#include <sys/types.h>
+#include <limits.h>
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_PATH_MAX $ac_have_decl
-_ACEOF
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SSIZE_MAX" = xyes
+then :
+ ac_have_decl=1
+else $as_nop
+ ac_have_decl=0
+fi
+printf "%s\n" "#define HAVE_DECL_SSIZE_MAX $ac_have_decl" >>confdefs.h
-ac_fn_c_check_decl "$LINENO" "SIZE_MAX" "ac_cv_have_decl_SIZE_MAX" "
+ac_fn_check_decl "$LINENO" "SIZE_MAX" "ac_cv_have_decl_SIZE_MAX" "
#include <sys/types.h>
#include <limits.h>
#if defined(HAVE_STDINT_H)
@@ -23561,112 +24352,100 @@ ac_fn_c_check_decl "$LINENO" "SIZE_MAX" "ac_cv_have_decl_SIZE_MAX" "
# include <inttypes.h>
#endif
-"
-if test "x$ac_cv_have_decl_SIZE_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SIZE_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SIZE_MAX $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_SIZE_MAX $ac_have_decl" >>confdefs.h
if test "$ac_cv_have_decl_LLONG_MAX" != "yes"; then
- ac_fn_c_check_decl "$LINENO" "QUAD_MAX" "ac_cv_have_decl_QUAD_MAX" "
+ ac_fn_check_decl "$LINENO" "QUAD_MAX" "ac_cv_have_decl_QUAD_MAX" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_QUAD_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_QUAD_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_QUAD_MAX $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_QUAD_MAX $ac_have_decl" >>confdefs.h
fi
if test "$ac_cv_have_decl_LLONG_MIN" != "yes"; then
- ac_fn_c_check_decl "$LINENO" "QUAD_MIN" "ac_cv_have_decl_QUAD_MIN" "
+ ac_fn_check_decl "$LINENO" "QUAD_MIN" "ac_cv_have_decl_QUAD_MIN" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_QUAD_MIN" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_QUAD_MIN" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_QUAD_MIN $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_QUAD_MIN $ac_have_decl" >>confdefs.h
fi
if test "$ac_cv_have_decl_ULLONG_MAX" != "yes"; then
- ac_fn_c_check_decl "$LINENO" "UQUAD_MAX" "ac_cv_have_decl_UQUAD_MAX" "
+ ac_fn_check_decl "$LINENO" "UQUAD_MAX" "ac_cv_have_decl_UQUAD_MAX" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_UQUAD_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_UQUAD_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_UQUAD_MAX $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_UQUAD_MAX $ac_have_decl" >>confdefs.h
fi
if test "$ac_cv_have_decl_SIZE_MAX" != "yes"; then
- ac_fn_c_check_decl "$LINENO" "SIZE_T_MAX" "ac_cv_have_decl_SIZE_T_MAX" "
+ ac_fn_check_decl "$LINENO" "SIZE_T_MAX" "ac_cv_have_decl_SIZE_T_MAX" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl_SIZE_T_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SIZE_T_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SIZE_T_MAX $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL_SIZE_T_MAX $ac_have_decl" >>confdefs.h
fi
if test "$ac_cv_have_decl_PATH_MAX" != "yes"; then
- ac_fn_c_check_decl "$LINENO" "_POSIX_PATH_MAX" "ac_cv_have_decl__POSIX_PATH_MAX" "
+ ac_fn_check_decl "$LINENO" "_POSIX_PATH_MAX" "ac_cv_have_decl__POSIX_PATH_MAX" "
#include <sys/types.h>
#include <limits.h>
-"
-if test "x$ac_cv_have_decl__POSIX_PATH_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__POSIX_PATH_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__POSIX_PATH_MAX $ac_have_decl
-_ACEOF
+printf "%s\n" "#define HAVE_DECL__POSIX_PATH_MAX $ac_have_decl" >>confdefs.h
fi
-for ac_func in strsignal
+
+ for ac_func in strsignal
do :
ac_fn_c_check_func "$LINENO" "strsignal" "ac_cv_func_strsignal"
-if test "x$ac_cv_func_strsignal" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STRSIGNAL 1
-_ACEOF
+if test "x$ac_cv_func_strsignal" = xyes
+then :
+ printf "%s\n" "#define HAVE_STRSIGNAL 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" strsignal.$ac_objext "* ) ;;
@@ -23681,40 +24460,38 @@ esac
done
HAVE_SIGLIST="false"
- ac_fn_c_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "
+ ac_fn_check_decl "$LINENO" "sys_siglist" "ac_cv_have_decl_sys_siglist" "
$ac_includes_default
#include <signal.h>
-"
-if test "x$ac_cv_have_decl_sys_siglist" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_sys_siglist" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_SIGLIST $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_SYS_SIGLIST $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
HAVE_SIGLIST="true"
fi
-ac_fn_c_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "
+ac_fn_check_decl "$LINENO" "_sys_siglist" "ac_cv_have_decl__sys_siglist" "
$ac_includes_default
#include <signal.h>
-"
-if test "x$ac_cv_have_decl__sys_siglist" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__sys_siglist" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SYS_SIGLIST $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL__SYS_SIGLIST $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
HAVE_SIGLIST="true"
@@ -23730,32 +24507,30 @@ esac
fi
fi
+
done
-for ac_func in sig2str
+ for ac_func in sig2str
do :
ac_fn_c_check_func "$LINENO" "sig2str" "ac_cv_func_sig2str"
-if test "x$ac_cv_func_sig2str" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SIG2STR 1
-_ACEOF
+if test "x$ac_cv_func_sig2str" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIG2STR 1" >>confdefs.h
- ac_fn_c_check_decl "$LINENO" "SIG2STR_MAX" "ac_cv_have_decl_SIG2STR_MAX" "
+ ac_fn_check_decl "$LINENO" "SIG2STR_MAX" "ac_cv_have_decl_SIG2STR_MAX" "
# include <signal.h>
-"
-if test "x$ac_cv_have_decl_SIG2STR_MAX" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_SIG2STR_MAX" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
+printf "%s\n" "#define HAVE_DECL_SIG2STR_MAX $ac_have_decl" >>confdefs.h
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SIG2STR_MAX $ac_have_decl
-_ACEOF
-
-else
+else $as_nop
case " $LIBOBJS " in
*" sig2str.$ac_objext "* ) ;;
@@ -23771,17 +24546,17 @@ esac
fi
+
done
-for ac_func in str2sig
+ for ac_func in str2sig
do :
ac_fn_c_check_func "$LINENO" "str2sig" "ac_cv_func_str2sig"
-if test "x$ac_cv_func_str2sig" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_STR2SIG 1
-_ACEOF
+if test "x$ac_cv_func_str2sig" = xyes
+then :
+ printf "%s\n" "#define HAVE_STR2SIG 1" >>confdefs.h
-else
+else $as_nop
case " $LIBOBJS " in
*" str2sig.$ac_objext "* ) ;;
@@ -23797,114 +24572,109 @@ esac
fi
-done
+done
if test x"${ac_cv_func_sig2str}${ac_cv_func_str2sig}" != x"yesyes"; then
- for ac_func in sigabbrev_np
-do :
- ac_fn_c_check_func "$LINENO" "sigabbrev_np" "ac_cv_func_sigabbrev_np"
-if test "x$ac_cv_func_sigabbrev_np" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SIGABBREV_NP 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "sigabbrev_np" "ac_cv_func_sigabbrev_np"
+if test "x$ac_cv_func_sigabbrev_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIGABBREV_NP 1" >>confdefs.h
fi
-done
if test x"${ac_cv_func_sigabbrev_np}" != x"yes"; then
COMPAT_TEST_PROGS="${COMPAT_TEST_PROGS}${COMPAT_TEST_PROGS+ }strsig_test"
HAVE_SIGNAME="false"
- ac_fn_c_check_decl "$LINENO" "sys_signame" "ac_cv_have_decl_sys_signame" "
+ ac_fn_check_decl "$LINENO" "sys_signame" "ac_cv_have_decl_sys_signame" "
$ac_includes_default
#include <signal.h>
-"
-if test "x$ac_cv_have_decl_sys_signame" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_sys_signame" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_SIGNAME $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_SYS_SIGNAME $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
HAVE_SIGNAME="true"
fi
-ac_fn_c_check_decl "$LINENO" "_sys_signame" "ac_cv_have_decl__sys_signame" "
+ac_fn_check_decl "$LINENO" "_sys_signame" "ac_cv_have_decl__sys_signame" "
$ac_includes_default
#include <signal.h>
-"
-if test "x$ac_cv_have_decl__sys_signame" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl__sys_signame" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL__SYS_SIGNAME $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL__SYS_SIGNAME $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
HAVE_SIGNAME="true"
fi
-ac_fn_c_check_decl "$LINENO" "sys_sigabbrev" "ac_cv_have_decl_sys_sigabbrev" "
+ac_fn_check_decl "$LINENO" "sys_sigabbrev" "ac_cv_have_decl_sys_sigabbrev" "
$ac_includes_default
#include <signal.h>
-"
-if test "x$ac_cv_have_decl_sys_sigabbrev" = xyes; then :
+" "$ac_c_undeclared_builtin_options" "CFLAGS"
+if test "x$ac_cv_have_decl_sys_sigabbrev" = xyes
+then :
ac_have_decl=1
-else
+else $as_nop
ac_have_decl=0
fi
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_DECL_SYS_SIGABBREV $ac_have_decl
-_ACEOF
-if test $ac_have_decl = 1; then :
+printf "%s\n" "#define HAVE_DECL_SYS_SIGABBREV $ac_have_decl" >>confdefs.h
+if test $ac_have_decl = 1
+then :
HAVE_SIGNAME="true"
fi
if test "$HAVE_SIGNAME" != "true"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for undeclared sys_sigabbrev" >&5
-$as_echo_n "checking for undeclared sys_sigabbrev... " >&6; }
-if ${sudo_cv_var_sys_sigabbrev+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for undeclared sys_sigabbrev" >&5
+printf %s "checking for undeclared sys_sigabbrev... " >&6; }
+if test ${sudo_cv_var_sys_sigabbrev+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
extern char **sys_sigabbrev;
int
-main ()
+main (void)
{
return sys_sigabbrev[1];
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_var_sys_sigabbrev=yes
-else
+else $as_nop
sudo_cv_var_sys_sigabbrev=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_sys_sigabbrev" >&5
-$as_echo "$sudo_cv_var_sys_sigabbrev" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_sys_sigabbrev" >&5
+printf "%s\n" "$sudo_cv_var_sys_sigabbrev" >&6; }
if test "$sudo_cv_var_sys_sigabbrev" = yes; then
- $as_echo "#define HAVE_SYS_SIGABBREV 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SYS_SIGABBREV 1" >>confdefs.h
else
case " $LIBOBJS " in
@@ -23921,16 +24691,12 @@ fi
OLIBS="$LIBS"
LIBS="$LIBS $lt_cv_dlopen_libs"
-for ac_func in dl_iterate_phdr
-do :
- ac_fn_c_check_func "$LINENO" "dl_iterate_phdr" "ac_cv_func_dl_iterate_phdr"
-if test "x$ac_cv_func_dl_iterate_phdr" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_DL_ITERATE_PHDR 1
-_ACEOF
+ac_fn_c_check_func "$LINENO" "dl_iterate_phdr" "ac_cv_func_dl_iterate_phdr"
+if test "x$ac_cv_func_dl_iterate_phdr" = xyes
+then :
+ printf "%s\n" "#define HAVE_DL_ITERATE_PHDR 1" >>confdefs.h
fi
-done
LIBS="$OLIBS"
@@ -23965,12 +24731,13 @@ if test ${with_pam-"no"} != "no"; then
# Check for pam_start() in libpam first, then for pam_appl.h.
#
found_pam_lib=no
- as_ac_Lib=`$as_echo "ac_cv_lib_pam_pam_start$lt_cv_dlopen_libs" | $as_tr_sh`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5
-$as_echo_n "checking for pam_start in -lpam... " >&6; }
-if eval \${$as_ac_Lib+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ as_ac_Lib=`printf "%s\n" "ac_cv_lib_pam_pam_start$lt_cv_dlopen_libs" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5
+printf %s "checking for pam_start in -lpam... " >&6; }
+if eval test \${$as_ac_Lib+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpam $lt_cv_dlopen_libs $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -23979,31 +24746,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 pam_start ();
int
-main ()
+main (void)
{
return pam_start ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
eval "$as_ac_Lib=yes"
-else
+else $as_nop
eval "$as_ac_Lib=no"
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
eval ac_res=\$$as_ac_Lib
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
-$as_echo "$ac_res" >&6; }
-if eval test \"x\$"$as_ac_Lib"\" = x"yes"; then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_Lib"\" = x"yes"
+then :
found_pam_lib=yes
fi
@@ -24012,19 +24778,19 @@ fi
# in /usr/include/pam instead of /usr/include/security...
#
found_pam_hdrs=no
- for ac_header in security/pam_appl.h pam/pam_appl.h
+ for ac_header in security/pam_appl.h pam/pam_appl.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 :
+ as_ac_Header=`printf "%s\n" "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
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
found_pam_hdrs=yes; break
fi
done
-
if test "$found_pam_lib" = "yes" -a "$found_pam_hdrs" = "yes"; then
# Found both PAM libs and headers
with_pam=yes
@@ -24048,36 +24814,33 @@ done
# Older PAM implementations lack pam_getenvlist
OLIBS="$LIBS"
LIBS="$LIBS -lpam $lt_cv_dlopen_libs"
- for ac_func in pam_getenvlist
-do :
- ac_fn_c_check_func "$LINENO" "pam_getenvlist" "ac_cv_func_pam_getenvlist"
-if test "x$ac_cv_func_pam_getenvlist" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PAM_GETENVLIST 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "pam_getenvlist" "ac_cv_func_pam_getenvlist"
+if test "x$ac_cv_func_pam_getenvlist" = xyes
+then :
+ printf "%s\n" "#define HAVE_PAM_GETENVLIST 1" >>confdefs.h
fi
-done
LIBS="$OLIBS"
# We already link with -ldl if needed (see LIBDL below)
SUDOERS_LIBS="${SUDOERS_LIBS} -lpam"
- $as_echo "#define HAVE_PAM 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_PAM 1" >>confdefs.h
AUTH_OBJS="$AUTH_OBJS pam.lo";
AUTH_EXCL=PAM
# Check whether --with-pam-login was given.
-if test "${with_pam_login+set}" = set; then :
+if test ${with_pam_login+y}
+then :
withval=$with_pam_login; case $with_pam_login in
- yes) $as_echo "#define HAVE_PAM_LOGIN 1" >>confdefs.h
+ yes) printf "%s\n" "#define HAVE_PAM_LOGIN 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use PAM login" >&5
-$as_echo_n "checking whether to use PAM login... " >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use PAM login" >&5
+printf %s "checking whether to use PAM login... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
pam_login_service="sudo-i"
;;
no) ;;
@@ -24087,50 +24850,51 @@ $as_echo "yes" >&6; }
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use PAM session support" >&5
-$as_echo_n "checking whether to use PAM session support... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use PAM session support" >&5
+printf %s "checking whether to use PAM session support... " >&6; }
# Check whether --enable-pam_session was given.
-if test "${enable_pam_session+set}" = set; then :
+if test ${enable_pam_session+y}
+then :
enableval=$enable_pam_session; case "$enableval" in
- yes) { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ yes) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- $as_echo "#define NO_PAM_SESSION 1" >>confdefs.h
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ printf "%s\n" "#define NO_PAM_SESSION 1" >>confdefs.h
pam_session=off
;;
- *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-pam-session: $enableval" >&5
-$as_echo "$as_me: WARNING: Ignoring unknown argument to --enable-pam-session: $enableval" >&2;}
+ *) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Ignoring unknown argument to --enable-pam-session: $enableval" >&5
+printf "%s\n" "$as_me: WARNING: Ignoring unknown argument to --enable-pam-session: $enableval" >&2;}
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
fi
fi
fi
if test ${with_aixauth-'no'} != "no"; then
- for ac_func in authenticate
+
+ for ac_func in authenticate
do :
ac_fn_c_check_func "$LINENO" "authenticate" "ac_cv_func_authenticate"
-if test "x$ac_cv_func_authenticate" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_AUTHENTICATE 1
-_ACEOF
+if test "x$ac_cv_func_authenticate" = xyes
+then :
+ printf "%s\n" "#define HAVE_AUTHENTICATE 1" >>confdefs.h
with_aixauth=yes
fi
-done
+done
if test "${with_aixauth}" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: using AIX general authentication" >&5
-$as_echo "$as_me: using AIX general authentication" >&6;}
- $as_echo "#define HAVE_AIXAUTH 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: using AIX general authentication" >&5
+printf "%s\n" "$as_me: using AIX general authentication" >&6;}
+ printf "%s\n" "#define HAVE_AIXAUTH 1" >>confdefs.h
AUTH_OBJS="$AUTH_OBJS aix_auth.lo";
SUDOERS_LIBS="${SUDOERS_LIBS} -ls"
@@ -24139,34 +24903,34 @@ $as_echo "$as_me: using AIX general authentication" >&6;}
fi
if test ${with_bsdauth-'no'} != "no"; then
- ac_fn_c_check_header_mongrel "$LINENO" "bsd_auth.h" "ac_cv_header_bsd_auth_h" "$ac_includes_default"
-if test "x$ac_cv_header_bsd_auth_h" = xyes; then :
- $as_echo "#define HAVE_BSD_AUTH_H 1" >>confdefs.h
+ ac_fn_c_check_header_compile "$LINENO" "bsd_auth.h" "ac_cv_header_bsd_auth_h" "$ac_includes_default"
+if test "x$ac_cv_header_bsd_auth_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_BSD_AUTH_H 1" >>confdefs.h
AUTH_OBJS="$AUTH_OBJS bsdauth.lo"
BSDAUTH_USAGE='[-a type] '
AUTH_EXCL=BSD_AUTH; BAMAN=1
-else
+else $as_nop
as_fn_error $? "BSD authentication was specified but bsd_auth.h could not be found" "$LINENO" 5
fi
-
fi
if test ${CHECKSIA-'false'} = "true"; then
- for ac_func in sia_ses_init
+
+ for ac_func in sia_ses_init
do :
ac_fn_c_check_func "$LINENO" "sia_ses_init" "ac_cv_func_sia_ses_init"
-if test "x$ac_cv_func_sia_ses_init" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_SIA_SES_INIT 1
-_ACEOF
+if test "x$ac_cv_func_sia_ses_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_SIA_SES_INIT 1" >>confdefs.h
found=true
-else
+else $as_nop
found=false
fi
-done
+done
if test "$found" = "true"; then
AUTH_EXCL=SIA
AUTH_OBJS="$AUTH_OBJS sia.lo"
@@ -24177,66 +24941,68 @@ if test ${with_fwtk-'no'} != "no"; then
if test "$with_fwtk" != "yes"; then
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${with_fwtk} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_fwtk}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_fwtk}"; } >&5
(: SUDOERS_LDFLAGS already contains -L${with_fwtk}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${with_fwtk}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${with_fwtk}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${with_fwtk} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_fwtk}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_fwtk}"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${with_fwtk}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${with_fwtk}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${with_fwtk}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -24244,33 +25010,34 @@ fi
fi
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${with_fwtk} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_fwtk}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_fwtk}"; } >&5
(: CPPFLAGS already contains -I${with_fwtk}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${with_fwtk}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${with_fwtk}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -24290,99 +25057,102 @@ if test ${with_SecurID-'no'} != "no"; then
with_SecurID=/usr/ace
fi
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${with_SecurID} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_SecurID}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_SecurID}"; } >&5
(: CPPFLAGS already contains -I${with_SecurID}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${with_SecurID}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${with_SecurID}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${with_SecurID} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_SecurID}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_SecurID}"; } >&5
(: SUDOERS_LDFLAGS already contains -L${with_SecurID}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${with_SecurID}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${with_SecurID}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${with_SecurID} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_SecurID}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_SecurID}"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${with_SecurID}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${with_SecurID}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${with_SecurID}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -24405,11 +25175,12 @@ fi
if test ${with_kerb5-'no'} != "no"; then
# Extract the first word of "krb5-config", so it can be a program name with args.
set dummy krb5-config; 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_KRB5CONFIG+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+printf %s "checking for $ac_word... " >&6; }
+if test ${ac_cv_prog_KRB5CONFIG+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
if test -n "$KRB5CONFIG"; then
ac_cv_prog_KRB5CONFIG="$KRB5CONFIG" # Let the user override the test.
else
@@ -24417,11 +25188,15 @@ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
ac_cv_prog_KRB5CONFIG="yes"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
break 2
fi
done
@@ -24433,81 +25208,85 @@ fi
fi
KRB5CONFIG=$ac_cv_prog_KRB5CONFIG
if test -n "$KRB5CONFIG"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $KRB5CONFIG" >&5
-$as_echo "$KRB5CONFIG" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $KRB5CONFIG" >&5
+printf "%s\n" "$KRB5CONFIG" >&6; }
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
if test -n "$KRB5CONFIG"; then
- $as_echo "#define HAVE_KERB5 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_KERB5 1" >>confdefs.h
AUTH_OBJS="$AUTH_OBJS kerb5.lo"
+ for f in `krb5-config --cflags`; do
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
- *" `krb5-config --cflags` "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains \`krb5-config --cflags\`"; } >&5
- (: CPPFLAGS already contains `krb5-config --cflags`) 2>&5
+ *" $f "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains \$f"; } >&5
+ (: CPPFLAGS already contains $f) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
- as_fn_append CPPFLAGS " `krb5-config --cflags`"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ as_fn_append CPPFLAGS " $f"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
- CPPFLAGS=`krb5-config --cflags`
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ CPPFLAGS=$f
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
+ done
SUDOERS_LIBS="$SUDOERS_LIBS `krb5-config --libs`"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
-$as_echo_n "checking whether we are using Heimdal... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
+printf %s "checking whether we are using Heimdal... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <krb5.h>
int
-main ()
+main (void)
{
const char *tmp = heimdal_version;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define HAVE_HEIMDAL 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define HAVE_HEIMDAL 1" >>confdefs.h
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
else
- $as_echo "#define HAVE_KERB5 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_KERB5 1" >>confdefs.h
if test "$with_kerb5" = "yes"; then
found=no
@@ -24518,86 +25297,89 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
/* end confdefs.h. */
#include <krb5.h>
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
found=yes; break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
if test X"$found" = X"no"; then
CPPFLAGS="$O_CPPFLAGS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" >&5
-$as_echo "$as_me: WARNING: Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate Kerberos V include files, you will have to edit the Makefile and add -I/path/to/krb/includes to CPPFLAGS" >&2;}
fi
else
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${with_kerb5}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_kerb5}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_kerb5}/lib"; } >&5
(: SUDOERS_LDFLAGS already contains -L${with_kerb5}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${with_kerb5}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${with_kerb5}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${with_kerb5}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_kerb5}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_kerb5}/lib"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${with_kerb5}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${with_kerb5}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${with_kerb5}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -24605,65 +25387,68 @@ fi
fi
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${with_kerb5}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_kerb5}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_kerb5}/include"; } >&5
(: CPPFLAGS already contains -I${with_kerb5}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${with_kerb5}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${with_kerb5}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
-$as_echo_n "checking whether we are using Heimdal... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are using Heimdal" >&5
+printf %s "checking whether we are using Heimdal... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <krb5.h>
int
-main ()
+main (void)
{
const char *tmp = heimdal_version;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define HAVE_HEIMDAL 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define HAVE_HEIMDAL 1" >>confdefs.h
# XXX - need to check whether -lcrypo is needed!
SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lcrypto -ldes -lcom_err -lasn1"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lroken" >&5
-$as_echo_n "checking for main in -lroken... " >&6; }
-if ${ac_cv_lib_roken_main+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lroken" >&5
+printf %s "checking for main in -lroken... " >&6; }
+if test ${ac_cv_lib_roken_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lroken $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -24671,39 +25456,42 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
-main ()
+main (void)
{
return main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_roken_main=yes
-else
+else $as_nop
ac_cv_lib_roken_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_roken_main" >&5
-$as_echo "$ac_cv_lib_roken_main" >&6; }
-if test "x$ac_cv_lib_roken_main" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_roken_main" >&5
+printf "%s\n" "$ac_cv_lib_roken_main" >&6; }
+if test "x$ac_cv_lib_roken_main" = xyes
+then :
SUDOERS_LIBS="${SUDOERS_LIBS} -lroken"
fi
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5 -lk5crypto -lcom_err"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lkrb5support" >&5
-$as_echo_n "checking for main in -lkrb5support... " >&6; }
-if ${ac_cv_lib_krb5support_main+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lkrb5support" >&5
+printf %s "checking for main in -lkrb5support... " >&6; }
+if test ${ac_cv_lib_krb5support_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lkrb5support $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -24711,66 +25499,70 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
-main ()
+main (void)
{
return main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_krb5support_main=yes
-else
+else $as_nop
ac_cv_lib_krb5support_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5support_main" >&5
-$as_echo "$ac_cv_lib_krb5support_main" >&6; }
-if test "x$ac_cv_lib_krb5support_main" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_krb5support_main" >&5
+printf "%s\n" "$ac_cv_lib_krb5support_main" >&6; }
+if test "x$ac_cv_lib_krb5support_main" = xyes
+then :
SUDOERS_LIBS="${SUDOERS_LIBS} -lkrb5support"
fi
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
AUTH_OBJS="$AUTH_OBJS kerb5.lo"
fi
_LIBS="$LIBS"
LIBS="${LIBS} ${SUDOERS_LIBS}"
- for ac_func in krb5_verify_user krb5_init_secure_context
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "krb5_verify_user" "ac_cv_func_krb5_verify_user"
+if test "x$ac_cv_func_krb5_verify_user" = xyes
+then :
+ printf "%s\n" "#define HAVE_KRB5_VERIFY_USER 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "krb5_init_secure_context" "ac_cv_func_krb5_init_secure_context"
+if test "x$ac_cv_func_krb5_init_secure_context" = xyes
+then :
+ printf "%s\n" "#define HAVE_KRB5_INIT_SECURE_CONTEXT 1" >>confdefs.h
+
+fi
+
- for ac_func in krb5_get_init_creds_opt_alloc
+ for ac_func in krb5_get_init_creds_opt_alloc
do :
ac_fn_c_check_func "$LINENO" "krb5_get_init_creds_opt_alloc" "ac_cv_func_krb5_get_init_creds_opt_alloc"
-if test "x$ac_cv_func_krb5_get_init_creds_opt_alloc" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC 1
-_ACEOF
+if test "x$ac_cv_func_krb5_get_init_creds_opt_alloc" = xyes
+then :
+ printf "%s\n" "#define HAVE_KRB5_GET_INIT_CREDS_OPT_ALLOC 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether krb5_get_init_creds_opt_free takes a context" >&5
-$as_echo_n "checking whether krb5_get_init_creds_opt_free takes a context... " >&6; }
-if ${sudo_cv_krb5_get_init_creds_opt_free_two_args+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether krb5_get_init_creds_opt_free takes a context" >&5
+printf %s "checking whether krb5_get_init_creds_opt_free takes a context... " >&6; }
+if test ${sudo_cv_krb5_get_init_creds_opt_free_two_args+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <krb5.h>
int
-main ()
+main (void)
{
krb5_get_init_creds_opt_free(NULL, NULL);
@@ -24778,48 +25570,50 @@ krb5_get_init_creds_opt_free(NULL, NULL);
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_krb5_get_init_creds_opt_free_two_args=yes
-else
+else $as_nop
sudo_cv_krb5_get_init_creds_opt_free_two_args=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_krb5_get_init_creds_opt_free_two_args" >&5
-$as_echo "$sudo_cv_krb5_get_init_creds_opt_free_two_args" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_krb5_get_init_creds_opt_free_two_args" >&5
+printf "%s\n" "$sudo_cv_krb5_get_init_creds_opt_free_two_args" >&6; }
fi
-done
+done
if test X"$sudo_cv_krb5_get_init_creds_opt_free_two_args" = X"yes"; then
- $as_echo "#define HAVE_KRB5_GET_INIT_CREDS_OPT_FREE_TWO_ARGS 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_KRB5_GET_INIT_CREDS_OPT_FREE_TWO_ARGS 1" >>confdefs.h
fi
LIBS="$_LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to use an instance name for Kerberos V" >&5
-$as_echo_n "checking whether to use an instance name for Kerberos V... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether to use an instance name for Kerberos V" >&5
+printf %s "checking whether to use an instance name for Kerberos V... " >&6; }
# Check whether --enable-kerb5-instance was given.
-if test "${enable_kerb5_instance+set}" = set; then :
+if test ${enable_kerb5_instance+y}
+then :
enableval=$enable_kerb5_instance; case "$enableval" in
yes) as_fn_error $? "\"must give --enable-kerb5-instance an argument.\"" "$LINENO" 5
;;
- no) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ no) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
;;
*) cat >>confdefs.h <<EOF
#define SUDO_KRB5_INSTANCE "$enableval"
EOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enableval" >&5
-$as_echo "$enableval" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $enableval" >&5
+printf "%s\n" "$enableval" >&6; }
;;
esac
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
fi
@@ -24832,66 +25626,68 @@ if test ${with_AFS-'no'} = "yes"; then
if test -d ${i}; then
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L$i "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\$i"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\$i"; } >&5
(: SUDOERS_LDFLAGS already contains -L$i) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L$i"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L$i
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R$i "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\$i"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\$i"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R$i) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R$i"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R$i
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -24902,8 +25698,8 @@ fi
fi
done
if test -z "$FOUND_AFSLIBDIR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate AFS libraries, you will have to edit the Makefile and add -L/path/to/afs/libs to SUDOERS_LDFLAGS or rerun configure with the --with-libpath options." >&5
-$as_echo "$as_me: WARNING: Unable to locate AFS libraries, you will have to edit the Makefile and add -L/path/to/afs/libs to SUDOERS_LDFLAGS or rerun configure with the --with-libpath options." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate AFS libraries, you will have to edit the Makefile and add -L/path/to/afs/libs to SUDOERS_LDFLAGS or rerun configure with the --with-libpath options." >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate AFS libraries, you will have to edit the Makefile and add -L/path/to/afs/libs to SUDOERS_LDFLAGS or rerun configure with the --with-libpath options." >&2;}
fi
# Order is important here. Note that we build AFS_LIBS from right to left
@@ -24925,33 +25721,34 @@ $as_echo "$as_me: WARNING: Unable to locate AFS libraries, you will have to edit
for i in /usr/afsws/include; do
if test -d ${i}; then
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${i} "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${i}"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${i}"; } >&5
(: CPPFLAGS already contains -I${i}) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${i}"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${i}
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -24961,8 +25758,8 @@ fi
done
if test -z "$FOUND_AFSLIBDIR"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate AFS include dir, you may have to edit the Makefile and add -I/path/to/afs/includes to CPPFLAGS or rerun configure with the --with-incpath options." >&5
-$as_echo "$as_me: WARNING: Unable to locate AFS include dir, you may have to edit the Makefile and add -I/path/to/afs/includes to CPPFLAGS or rerun configure with the --with-incpath options." >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate AFS include dir, you may have to edit the Makefile and add -I/path/to/afs/includes to CPPFLAGS or rerun configure with the --with-incpath options." >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate AFS include dir, you may have to edit the Makefile and add -I/path/to/afs/includes to CPPFLAGS or rerun configure with the --with-incpath options." >&2;}
fi
AUTH_OBJS="$AUTH_OBJS afs.lo"
@@ -24978,33 +25775,34 @@ if test "${with_skey-'no'}" = "yes"; then
O_LDFLAGS="$LDFLAGS"
if test "$with_skey" != "yes"; then
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${with_skey}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_skey}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_skey}/include"; } >&5
(: CPPFLAGS already contains -I${with_skey}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${with_skey}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${with_skey}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -25012,66 +25810,68 @@ fi
LDFLAGS="$LDFLAGS -L${with_skey}/lib"
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${with_skey}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_skey}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_skey}/lib"; } >&5
(: SUDOERS_LDFLAGS already contains -L${with_skey}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${with_skey}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${with_skey}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${with_skey}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_skey}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_skey}/lib"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${with_skey}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${with_skey}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${with_skey}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -25080,13 +25880,13 @@ fi
ac_fn_c_check_header_compile "$LINENO" "skey.h" "ac_cv_header_skey_h" "#include <stdio.h>
"
-if test "x$ac_cv_header_skey_h" = xyes; then :
+if test "x$ac_cv_header_skey_h" = xyes
+then :
found=yes
-else
+else $as_nop
found=no
fi
-
else
found=no
O_CPPFLAGS="$CPPFLAGS"
@@ -25094,11 +25894,11 @@ fi
test -n "$dir" && CPPFLAGS="$O_CPPFLAGS -I${dir}/include"
ac_fn_c_check_header_compile "$LINENO" "skey.h" "ac_cv_header_skey_h" "#include <stdio.h>
"
-if test "x$ac_cv_header_skey_h" = xyes; then :
+if test "x$ac_cv_header_skey_h" = xyes
+then :
found=yes; break
fi
-
done
if test "$found" = "no" -o -z "$dir"; then
CPPFLAGS="$O_CPPFLAGS"
@@ -25106,66 +25906,68 @@ fi
LDFLAGS="$LDFLAGS -L${dir}/lib"
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${dir}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${dir}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${dir}/lib"; } >&5
(: SUDOERS_LDFLAGS already contains -L${dir}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${dir}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${dir}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${dir}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${dir}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${dir}/lib"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${dir}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${dir}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${dir}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -25174,15 +25976,16 @@ fi
fi
if test "$found" = "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate skey.h, you will have to edit the Makefile and add -I/path/to/skey/includes to CPPFLAGS" >&5
-$as_echo "$as_me: WARNING: Unable to locate skey.h, you will have to edit the Makefile and add -I/path/to/skey/includes to CPPFLAGS" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate skey.h, you will have to edit the Makefile and add -I/path/to/skey/includes to CPPFLAGS" >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate skey.h, you will have to edit the Makefile and add -I/path/to/skey/includes to CPPFLAGS" >&2;}
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lskey" >&5
-$as_echo_n "checking for main in -lskey... " >&6; }
-if ${ac_cv_lib_skey_main+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lskey" >&5
+printf %s "checking for main in -lskey... " >&6; }
+if test ${ac_cv_lib_skey_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lskey $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -25190,36 +25993,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
-main ()
+main (void)
{
return main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_skey_main=yes
-else
+else $as_nop
ac_cv_lib_skey_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_skey_main" >&5
-$as_echo "$ac_cv_lib_skey_main" >&6; }
-if test "x$ac_cv_lib_skey_main" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_skey_main" >&5
+printf "%s\n" "$ac_cv_lib_skey_main" >&6; }
+if test "x$ac_cv_lib_skey_main" = xyes
+then :
found=yes
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate libskey.a, you will have to edit the Makefile and add -L/path/to/skey/lib to SUDOERS_LDFLAGS" >&5
-$as_echo "$as_me: WARNING: Unable to locate libskey.a, you will have to edit the Makefile and add -L/path/to/skey/lib to SUDOERS_LDFLAGS" >&2;}
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate libskey.a, you will have to edit the Makefile and add -L/path/to/skey/lib to SUDOERS_LDFLAGS" >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate libskey.a, you will have to edit the Makefile and add -L/path/to/skey/lib to SUDOERS_LDFLAGS" >&2;}
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for skeyaccess in -lskey" >&5
-$as_echo_n "checking for skeyaccess in -lskey... " >&6; }
-if ${ac_cv_lib_skey_skeyaccess+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for skeyaccess in -lskey" >&5
+printf %s "checking for skeyaccess in -lskey... " >&6; }
+if test ${ac_cv_lib_skey_skeyaccess+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lskey $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -25228,44 +26034,43 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 skeyaccess ();
int
-main ()
+main (void)
{
return skeyaccess ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_skey_skeyaccess=yes
-else
+else $as_nop
ac_cv_lib_skey_skeyaccess=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_skey_skeyaccess" >&5
-$as_echo "$ac_cv_lib_skey_skeyaccess" >&6; }
-if test "x$ac_cv_lib_skey_skeyaccess" = xyes; then :
- $as_echo "#define HAVE_SKEYACCESS 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_skey_skeyaccess" >&5
+printf "%s\n" "$ac_cv_lib_skey_skeyaccess" >&6; }
+if test "x$ac_cv_lib_skey_skeyaccess" = xyes
+then :
+ printf "%s\n" "#define HAVE_SKEYACCESS 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RFC1938-compliant skeychallenge" >&5
-$as_echo_n "checking for RFC1938-compliant skeychallenge... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for RFC1938-compliant skeychallenge" >&5
+printf %s "checking for RFC1938-compliant skeychallenge... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
# include <stdio.h>
# include <skey.h>
int
-main ()
+main (void)
{
skeychallenge(NULL, NULL, NULL, 0);
@@ -25273,21 +26078,22 @@ skeychallenge(NULL, NULL, NULL, 0);
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
- $as_echo "#define HAVE_RFC1938_SKEYCHALLENGE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_RFC1938_SKEYCHALLENGE 1" >>confdefs.h
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
LDFLAGS="$O_LDFLAGS"
SUDOERS_LIBS="${SUDOERS_LIBS} -lskey"
@@ -25298,33 +26104,34 @@ if test "${with_opie-'no'}" = "yes"; then
O_LDFLAGS="$LDFLAGS"
if test "$with_opie" != "yes"; then
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${with_opie}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_opie}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_opie}/include"; } >&5
(: CPPFLAGS already contains -I${with_opie}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${with_opie}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${with_opie}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -25332,66 +26139,68 @@ fi
LDFLAGS="$LDFLAGS -L${with_opie}/lib"
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${with_opie}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_opie}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_opie}/lib"; } >&5
(: SUDOERS_LDFLAGS already contains -L${with_opie}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${with_opie}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${with_opie}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${with_opie}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_opie}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_opie}/lib"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${with_opie}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${with_opie}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${with_opie}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -25402,16 +26211,17 @@ fi
/* end confdefs.h. */
#include <opie.h>
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
found=yes
-else
+else $as_nop
found=no
fi
rm -f conftest.err conftest.i conftest.$ac_ext
@@ -25424,14 +26234,15 @@ rm -f conftest.err conftest.i conftest.$ac_ext
/* end confdefs.h. */
#include <opie.h>
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
found=yes; break
fi
rm -f conftest.err conftest.i conftest.$ac_ext
@@ -25442,66 +26253,68 @@ rm -f conftest.err conftest.i conftest.$ac_ext
LDFLAGS="$LDFLAGS -L${dir}/lib"
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${dir}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${dir}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${dir}/lib"; } >&5
(: SUDOERS_LDFLAGS already contains -L${dir}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${dir}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${dir}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${dir}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${dir}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${dir}/lib"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${dir}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${dir}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${dir}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -25510,15 +26323,16 @@ fi
fi
if test "$found" = "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate opie.h, you will have to edit the Makefile and add -I/path/to/opie/includes to CPPFLAGS" >&5
-$as_echo "$as_me: WARNING: Unable to locate opie.h, you will have to edit the Makefile and add -I/path/to/opie/includes to CPPFLAGS" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate opie.h, you will have to edit the Makefile and add -I/path/to/opie/includes to CPPFLAGS" >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate opie.h, you will have to edit the Makefile and add -I/path/to/opie/includes to CPPFLAGS" >&2;}
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lopie" >&5
-$as_echo_n "checking for main in -lopie... " >&6; }
-if ${ac_cv_lib_opie_main+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lopie" >&5
+printf %s "checking for main in -lopie... " >&6; }
+if test ${ac_cv_lib_opie_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lopie $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -25526,29 +26340,31 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
-main ()
+main (void)
{
return main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_opie_main=yes
-else
+else $as_nop
ac_cv_lib_opie_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opie_main" >&5
-$as_echo "$ac_cv_lib_opie_main" >&6; }
-if test "x$ac_cv_lib_opie_main" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_opie_main" >&5
+printf "%s\n" "$ac_cv_lib_opie_main" >&6; }
+if test "x$ac_cv_lib_opie_main" = xyes
+then :
found=yes
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate libopie.a, you will have to edit the Makefile and add -L/path/to/opie/lib to SUDOERS_LDFLAGS" >&5
-$as_echo "$as_me: WARNING: Unable to locate libopie.a, you will have to edit the Makefile and add -L/path/to/opie/lib to SUDOERS_LDFLAGS" >&2;}
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate libopie.a, you will have to edit the Makefile and add -L/path/to/opie/lib to SUDOERS_LDFLAGS" >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate libopie.a, you will have to edit the Makefile and add -L/path/to/opie/lib to SUDOERS_LDFLAGS" >&2;}
fi
LDFLAGS="$O_LDFLAGS"
@@ -25558,11 +26374,12 @@ fi
if test ${with_passwd-'no'} != "no"; then
_LIBS="$LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
-$as_echo_n "checking for library containing crypt... " >&6; }
-if ${ac_cv_search_crypt+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing crypt" >&5
+printf %s "checking for library containing crypt... " >&6; }
+if test ${ac_cv_search_crypt+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -25570,46 +26387,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 crypt ();
int
-main ()
+main (void)
{
return crypt ();
;
return 0;
}
_ACEOF
-for ac_lib in '' crypt crypt_d ufc; do
+for ac_lib in '' crypt crypt_d ufc
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_crypt=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_crypt+:} false; then :
+ if test ${ac_cv_search_crypt+y}
+then :
break
fi
done
-if ${ac_cv_search_crypt+:} false; then :
+if test ${ac_cv_search_crypt+y}
+then :
-else
+else $as_nop
ac_cv_search_crypt=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
-$as_echo "$ac_cv_search_crypt" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_crypt" >&5
+printf "%s\n" "$ac_cv_search_crypt" >&6; }
ac_res=$ac_cv_search_crypt
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
test "${ac_cv_search_crypt}" != "none required" && shadow_libs="${shadow_libs} ${ac_cv_search_crypt}"
@@ -25617,7 +26436,7 @@ if test "$ac_res" != no; then :
fi
if test "${ac_cv_search_crypt}" != "no"; then
- $as_echo "#define HAVE_CRYPT 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_CRYPT 1" >>confdefs.h
fi
LIBS="$_LIBS"
@@ -25626,34 +26445,56 @@ fi
_LIBS="$LIBS"
LIBS="$LIBS $shadow_libs"
found=no
- for ac_func in $shadow_funcs
-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
- found=yes
+ for func in $shadow_funcs; do
+ as_ac_var=`printf "%s\n" "ac_cv_func_$func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
+
+ case "$func" in
+ dispcrypt)
+ printf "%s\n" "#define HAVE_DISPCRYPT 1" >>confdefs.h
+
+ ;;
+ getprpwnam)
+ printf "%s\n" "#define HAVE_GETPRPWNAM 1" >>confdefs.h
+
+ SECUREWARE=1
+ ;;
+ getpwnam_shadow)
+ printf "%s\n" "#define HAVE_GETPWNAM_SHADOW 1" >>confdefs.h
+
+ ;;
+ getspnam)
+ printf "%s\n" "#define HAVE_GETSPNAM 1" >>confdefs.h
+
+ ;;
+ iscomsec)
+ printf "%s\n" "#define HAVE_ISCOMSEC 1" >>confdefs.h
+
+ ;;
+ *)
+ as_fn_error $? "unhandled shadow password function $func" "$LINENO" 5
+ ;;
+ esac
+ found=yes
+
fi
-done
- if test "$found" = "yes"; then
- case "$shadow_funcs" in
- *getprpwnam*) SECUREWARE=1;;
- esac
- else
+ done
+ if test "$found" = "no"; then
shadow_libs=
fi
CHECKSHADOW=false
LIBS="$_LIBS"
fi
if test "$CHECKSHADOW" = "true"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getspnam" >&5
-$as_echo_n "checking for library containing getspnam... " >&6; }
-if ${ac_cv_search_getspnam+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing getspnam" >&5
+printf %s "checking for library containing getspnam... " >&6; }
+if test ${ac_cv_search_getspnam+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -25661,49 +26502,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 getspnam ();
int
-main ()
+main (void)
{
return getspnam ();
;
return 0;
}
_ACEOF
-for ac_lib in '' gen shadow; do
+for ac_lib in '' gen shadow
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_getspnam=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_getspnam+:} false; then :
+ if test ${ac_cv_search_getspnam+y}
+then :
break
fi
done
-if ${ac_cv_search_getspnam+:} false; then :
+if test ${ac_cv_search_getspnam+y}
+then :
-else
+else $as_nop
ac_cv_search_getspnam=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getspnam" >&5
-$as_echo "$ac_cv_search_getspnam" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getspnam" >&5
+printf "%s\n" "$ac_cv_search_getspnam" >&6; }
ac_res=$ac_cv_search_getspnam
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- $as_echo "#define HAVE_GETSPNAM 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_GETSPNAM 1" >>confdefs.h
test "${ac_cv_search_getspnam}" != "none required" && shadow_libs="${shadow_libs} ${ac_cv_search_getspnam}"
CHECKSHADOW=false
@@ -25712,11 +26555,12 @@ fi
fi
if test "$CHECKSHADOW" = "true"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getprpwnam" >&5
-$as_echo_n "checking for library containing getprpwnam... " >&6; }
-if ${ac_cv_search_getprpwnam+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing getprpwnam" >&5
+printf %s "checking for library containing getprpwnam... " >&6; }
+if test ${ac_cv_search_getprpwnam+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -25724,49 +26568,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 getprpwnam ();
int
-main ()
+main (void)
{
return getprpwnam ();
;
return 0;
}
_ACEOF
-for ac_lib in '' sec security prot; do
+for ac_lib in '' sec security prot
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_getprpwnam=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_getprpwnam+:} false; then :
+ if test ${ac_cv_search_getprpwnam+y}
+then :
break
fi
done
-if ${ac_cv_search_getprpwnam+:} false; then :
+if test ${ac_cv_search_getprpwnam+y}
+then :
-else
+else $as_nop
ac_cv_search_getprpwnam=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getprpwnam" >&5
-$as_echo "$ac_cv_search_getprpwnam" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getprpwnam" >&5
+printf "%s\n" "$ac_cv_search_getprpwnam" >&6; }
ac_res=$ac_cv_search_getprpwnam
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
- $as_echo "#define HAVE_GETPRPWNAM 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_GETPRPWNAM 1" >>confdefs.h
test "${ac_cv_search_getprpwnam}" != "none required" && shadow_libs="${shadow_libs} ${ac_cv_search_getprpwnam}"
SECUREWARE=1
@@ -25782,41 +26628,40 @@ fi
if test -n "$SECUREWARE"; then
_LIBS="$LIBS"
LIBS="$LIBS $shadow_libs"
- for ac_func in bigcrypt
-do :
- ac_fn_c_check_func "$LINENO" "bigcrypt" "ac_cv_func_bigcrypt"
-if test "x$ac_cv_func_bigcrypt" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_BIGCRYPT 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "bigcrypt" "ac_cv_func_bigcrypt"
+if test "x$ac_cv_func_bigcrypt" = xyes
+then :
+ printf "%s\n" "#define HAVE_BIGCRYPT 1" >>confdefs.h
fi
-done
AUTH_OBJS="$AUTH_OBJS secureware.lo"
# set_auth_parameters() and initprivs() are called from sudo.c
- for ac_func in set_auth_parameters initprivs
+
+ for ac_func in set_auth_parameters initprivs
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
test -n "$shadow_libs" && SUDO_LIBS="$SUDO_LIBS $shadow_libs"
fi
-done
+done
LIBS="$_LIBS"
fi
fi
if test X"$with_bsm_audit" = X"yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether au_close() takes 4 arguments" >&5
-$as_echo_n "checking whether au_close() takes 4 arguments... " >&6; }
-if ${sudo_cv_func_au_close_solaris11+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether au_close() takes 4 arguments" >&5
+printf %s "checking whether au_close() takes 4 arguments... " >&6; }
+if test ${sudo_cv_func_au_close_solaris11+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
@@ -25826,75 +26671,74 @@ $ac_includes_default
int au_close(int d, int keep, au_event_t event, au_emod_t emod) {return 0;}
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_func_au_close_solaris11=yes
-else
+else $as_nop
sudo_cv_func_au_close_solaris11=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_au_close_solaris11" >&5
-$as_echo "$sudo_cv_func_au_close_solaris11" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_func_au_close_solaris11" >&5
+printf "%s\n" "$sudo_cv_func_au_close_solaris11" >&6; }
if test $sudo_cv_func_au_close_solaris11 = yes; then
-$as_echo "#define HAVE_AU_CLOSE_SOLARIS11 1" >>confdefs.h
+printf "%s\n" "#define HAVE_AU_CLOSE_SOLARIS11 1" >>confdefs.h
fi
fi
if test X"$enable_poll" = X""; then
- for ac_func in ppoll poll
+
+ for ac_func in ppoll poll
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
enable_poll=yes; break
-else
+else $as_nop
enable_poll=no
fi
-done
+done
elif test X"$enable_poll" = X"yes"; then
- for ac_func in ppoll
+
+ for ac_func in ppoll
do :
ac_fn_c_check_func "$LINENO" "ppoll" "ac_cv_func_ppoll"
-if test "x$ac_cv_func_ppoll" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PPOLL 1
-_ACEOF
+if test "x$ac_cv_func_ppoll" = xyes
+then :
+ printf "%s\n" "#define HAVE_PPOLL 1" >>confdefs.h
-else
- $as_echo "#define HAVE_POLL 1" >>confdefs.h
+else $as_nop
+ printf "%s\n" "#define HAVE_POLL 1" >>confdefs.h
fi
-done
+done
fi
if test "$enable_poll" = "yes"; then
COMMON_OBJS="${COMMON_OBJS} event_poll.lo"
else
- for ac_func in pselect
-do :
- ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect"
-if test "x$ac_cv_func_pselect" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_PSELECT 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "pselect" "ac_cv_func_pselect"
+if test "x$ac_cv_func_pselect" = xyes
+then :
+ printf "%s\n" "#define HAVE_PSELECT 1" >>confdefs.h
fi
-done
COMMON_OBJS="${COMMON_OBJS} event_select.lo"
fi
@@ -25904,66 +26748,68 @@ if test ${with_ldap-'no'} != "no"; then
if test "$with_ldap" != "yes"; then
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${with_ldap}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_ldap}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_ldap}/lib"; } >&5
(: SUDOERS_LDFLAGS already contains -L${with_ldap}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${with_ldap}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${with_ldap}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${with_ldap}/lib "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_ldap}/lib"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_ldap}/lib"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${with_ldap}/lib) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${with_ldap}/lib"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${with_ldap}/lib
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -25974,66 +26820,68 @@ fi
if test -d "${with_ldap}/lib64"; then
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -L${with_ldap}/lib64 "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_ldap}/lib64"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -L\${with_ldap}/lib64"; } >&5
(: SUDOERS_LDFLAGS already contains -L${with_ldap}/lib64) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -L${with_ldap}/lib64"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-L${with_ldap}/lib64
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
if test X"$enable_rpath" = X"yes"; then
-if ${SUDOERS_LDFLAGS_R+:} false; then :
+if test ${SUDOERS_LDFLAGS_R+y}
+then :
case " $SUDOERS_LDFLAGS_R " in #(
*" -R${with_ldap}/lib64 "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_ldap}/lib64"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R already contains -R\${with_ldap}/lib64"; } >&5
(: SUDOERS_LDFLAGS_R already contains -R${with_ldap}/lib64) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS_R " -R${with_ldap}/lib64"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS_R=-R${with_ldap}/lib64
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS_R=\"\$SUDOERS_LDFLAGS_R\""; } >&5
(: SUDOERS_LDFLAGS_R="$SUDOERS_LDFLAGS_R") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -26043,33 +26891,34 @@ fi
LDFLAGS="$LDFLAGS -L${with_ldap}/lib64"
fi
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -I${with_ldap}/include "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_ldap}/include"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -I\${with_ldap}/include"; } >&5
(: CPPFLAGS already contains -I${with_ldap}/include) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -I${with_ldap}/include"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-I${with_ldap}/include
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -26089,11 +26938,12 @@ fi
found=no
# On HP-UX, libibmldap has a hidden dependency on libCsup
case "$host_os" in
- hpux*) { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lCsup" >&5
-$as_echo_n "checking for main in -lCsup... " >&6; }
-if ${ac_cv_lib_Csup_main+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ hpux*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lCsup" >&5
+printf %s "checking for main in -lCsup... " >&6; }
+if test ${ac_cv_lib_Csup_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lCsup $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -26101,34 +26951,37 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
-main ()
+main (void)
{
return main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_Csup_main=yes
-else
+else $as_nop
ac_cv_lib_Csup_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Csup_main" >&5
-$as_echo "$ac_cv_lib_Csup_main" >&6; }
-if test "x$ac_cv_lib_Csup_main" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Csup_main" >&5
+printf "%s\n" "$ac_cv_lib_Csup_main" >&6; }
+if test "x$ac_cv_lib_Csup_main" = xyes
+then :
IBMLDAP_EXTRA=" -lCsup"
fi
;;
esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ldap_init" >&5
-$as_echo_n "checking for library containing ldap_init... " >&6; }
-if ${ac_cv_search_ldap_init+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ldap_init" >&5
+printf %s "checking for library containing ldap_init... " >&6; }
+if test ${ac_cv_search_ldap_init+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -26136,46 +26989,48 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 ldap_init ();
int
-main ()
+main (void)
{
return ldap_init ();
;
return 0;
}
_ACEOF
-for ac_lib in '' "ibmldap${IBMLDAP_EXTRA}" "ibmldap -lidsldif${IBMLDAP_EXTRA}" "ldap" "ldap -llber" "ldap -llber -lssl -lcrypto" "ibmldap${IBMLDAP_EXTRA}"; do
+for ac_lib in '' "ibmldap${IBMLDAP_EXTRA}" "ibmldap -lidsldif${IBMLDAP_EXTRA}" "ldap" "ldap -llber" "ldap -llber -lssl -lcrypto" "ibmldap${IBMLDAP_EXTRA}"
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_ldap_init=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_ldap_init+:} false; then :
+ if test ${ac_cv_search_ldap_init+y}
+then :
break
fi
done
-if ${ac_cv_search_ldap_init+:} false; then :
+if test ${ac_cv_search_ldap_init+y}
+then :
-else
+else $as_nop
ac_cv_search_ldap_init=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ldap_init" >&5
-$as_echo "$ac_cv_search_ldap_init" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ldap_init" >&5
+printf "%s\n" "$ac_cv_search_ldap_init" >&6; }
ac_res=$ac_cv_search_ldap_init
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
test "${ac_cv_search_ldap_init}" != "none required" && LDAP_LIBS="${ac_cv_search_ldap_init}"
@@ -26189,29 +27044,31 @@ fi
fi
LIBS="${_LIBS} ${LDAP_LIBS}"
OLIBS="$LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lber.h defines LBER_OPT_DEBUG_LEVEL" >&5
-$as_echo_n "checking whether lber.h defines LBER_OPT_DEBUG_LEVEL... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether lber.h defines LBER_OPT_DEBUG_LEVEL" >&5
+printf %s "checking whether lber.h defines LBER_OPT_DEBUG_LEVEL... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
# include <lber.h>
int
-main ()
+main (void)
{
int opt=LBER_OPT_DEBUG_LEVEL;
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing ber_set_option" >&5
-$as_echo_n "checking for library containing ber_set_option... " >&6; }
-if ${ac_cv_search_ber_set_option+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if ac_fn_c_try_compile "$LINENO"
+then :
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing ber_set_option" >&5
+printf %s "checking for library containing ber_set_option... " >&6; }
+if test ${ac_cv_search_ber_set_option+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -26219,49 +27076,51 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 ber_set_option ();
int
-main ()
+main (void)
{
return ber_set_option ();
;
return 0;
}
_ACEOF
-for ac_lib in '' lber; do
+for ac_lib in '' lber
+do
if test -z "$ac_lib"; then
ac_res="none required"
else
ac_res=-l$ac_lib
LIBS="-l$ac_lib $ac_func_search_save_LIBS"
fi
- if ac_fn_c_try_link "$LINENO"; then :
+ if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_search_ber_set_option=$ac_res
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext
- if ${ac_cv_search_ber_set_option+:} false; then :
+ if test ${ac_cv_search_ber_set_option+y}
+then :
break
fi
done
-if ${ac_cv_search_ber_set_option+:} false; then :
+if test ${ac_cv_search_ber_set_option+y}
+then :
-else
+else $as_nop
ac_cv_search_ber_set_option=no
fi
rm conftest.$ac_ext
LIBS=$ac_func_search_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ber_set_option" >&5
-$as_echo "$ac_cv_search_ber_set_option" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_ber_set_option" >&5
+printf "%s\n" "$ac_cv_search_ber_set_option" >&6; }
ac_res=$ac_cv_search_ber_set_option
-if test "$ac_res" != no; then :
+if test "$ac_res" != no
+then :
test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
found=yes
-else
+else $as_nop
found=no
fi
@@ -26269,69 +27128,66 @@ fi
LDAP_LIBS="$LDAP_LIBS -llber"
fi
-else
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lber.h is needed" >&5
-$as_echo_n "checking whether lber.h is needed... " >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether lber.h is needed" >&5
+printf %s "checking whether lber.h is needed... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/types.h>
# include <ldap.h>
int
-main ()
+main (void)
{
(void)ldap_init(0, 0)
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-else
+if ac_fn_c_try_link "$LINENO"
+then :
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
+printf "%s\n" "no" >&6; }
+else $as_nop
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
- $as_echo "#define HAVE_LBER_H 1" >>confdefs.h
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+printf "%s\n" "yes" >&6; }
+ printf "%s\n" "#define HAVE_LBER_H 1" >>confdefs.h
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
if test ${enable_sasl-'yes'} = "yes"; then
found_sasl_h=no
- for ac_header in sasl/sasl.h sasl.h
+ for ac_header in sasl/sasl.h sasl.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 :
+ as_ac_Header=`printf "%s\n" "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
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
found_sasl_h=yes
- for ac_func in ldap_sasl_interactive_bind_s
-do :
- ac_fn_c_check_func "$LINENO" "ldap_sasl_interactive_bind_s" "ac_cv_func_ldap_sasl_interactive_bind_s"
-if test "x$ac_cv_func_ldap_sasl_interactive_bind_s" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_LDAP_SASL_INTERACTIVE_BIND_S 1
-_ACEOF
+ ac_fn_c_check_func "$LINENO" "ldap_sasl_interactive_bind_s" "ac_cv_func_ldap_sasl_interactive_bind_s"
+if test "x$ac_cv_func_ldap_sasl_interactive_bind_s" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_SASL_INTERACTIVE_BIND_S 1" >>confdefs.h
fi
-done
break
fi
done
-
if test X${enable_sasl} = X"yes"; then
if test X"$found_sasl_h" != X"yes"; then
as_fn_error $? "\"--enable-sasl specified but unable to locate SASL development headers.\"" "$LINENO" 5
@@ -26341,51 +27197,109 @@ done
fi
fi
fi
- for ac_header in ldapssl.h ldap_ssl.h mps/ldap_ssl.h
+ for ac_header in ldapssl.h ldap_ssl.h mps/ldap_ssl.h
do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | $as_tr_sh`
ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "#include <ldap.h>
"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+if eval test \"x\$"$as_ac_Header"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
break
fi
done
+ ac_fn_c_check_func "$LINENO" "ldap_initialize" "ac_cv_func_ldap_initialize"
+if test "x$ac_cv_func_ldap_initialize" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_INITIALIZE 1" >>confdefs.h
- for ac_func in ldap_initialize ldap_start_tls_s ldapssl_init ldapssl_set_strength ldap_unbind_ext_s ldap_str2dn ldap_create ldap_sasl_bind_s ldap_ssl_init ldap_ssl_client_init ldap_start_tls_s_np
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
+fi
+ac_fn_c_check_func "$LINENO" "ldap_start_tls_s" "ac_cv_func_ldap_start_tls_s"
+if test "x$ac_cv_func_ldap_start_tls_s" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_START_TLS_S 1" >>confdefs.h
fi
-done
+ac_fn_c_check_func "$LINENO" "ldapssl_init" "ac_cv_func_ldapssl_init"
+if test "x$ac_cv_func_ldapssl_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAPSSL_INIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ldapssl_set_strength" "ac_cv_func_ldapssl_set_strength"
+if test "x$ac_cv_func_ldapssl_set_strength" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAPSSL_SET_STRENGTH 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ldap_unbind_ext_s" "ac_cv_func_ldap_unbind_ext_s"
+if test "x$ac_cv_func_ldap_unbind_ext_s" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_UNBIND_EXT_S 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ldap_str2dn" "ac_cv_func_ldap_str2dn"
+if test "x$ac_cv_func_ldap_str2dn" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_STR2DN 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ldap_create" "ac_cv_func_ldap_create"
+if test "x$ac_cv_func_ldap_create" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_CREATE 1" >>confdefs.h
- for ac_func in ldap_search_ext_s ldap_search_st
+fi
+ac_fn_c_check_func "$LINENO" "ldap_sasl_bind_s" "ac_cv_func_ldap_sasl_bind_s"
+if test "x$ac_cv_func_ldap_sasl_bind_s" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_SASL_BIND_S 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ldap_ssl_init" "ac_cv_func_ldap_ssl_init"
+if test "x$ac_cv_func_ldap_ssl_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_SSL_INIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ldap_ssl_client_init" "ac_cv_func_ldap_ssl_client_init"
+if test "x$ac_cv_func_ldap_ssl_client_init" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_SSL_CLIENT_INIT 1" >>confdefs.h
+
+fi
+ac_fn_c_check_func "$LINENO" "ldap_start_tls_s_np" "ac_cv_func_ldap_start_tls_s_np"
+if test "x$ac_cv_func_ldap_start_tls_s_np" = xyes
+then :
+ printf "%s\n" "#define HAVE_LDAP_START_TLS_S_NP 1" >>confdefs.h
+
+fi
+
+
+ for ac_func in ldap_search_ext_s ldap_search_st
do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ as_ac_var=`printf "%s\n" "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 :
+if eval test \"x\$"$as_ac_var"\" = x"yes"
+then :
cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+#define `printf "%s\n" "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
break
fi
-done
+done
if test X"$check_gss_krb5_ccache_name" = X"yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_krb5_ccache_name in -lgssapi" >&5
-$as_echo_n "checking for gss_krb5_ccache_name in -lgssapi... " >&6; }
-if ${ac_cv_lib_gssapi_gss_krb5_ccache_name+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gss_krb5_ccache_name in -lgssapi" >&5
+printf %s "checking for gss_krb5_ccache_name in -lgssapi... " >&6; }
+if test ${ac_cv_lib_gssapi_gss_krb5_ccache_name+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgssapi $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -26394,39 +27308,39 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 gss_krb5_ccache_name ();
int
-main ()
+main (void)
{
return gss_krb5_ccache_name ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gssapi_gss_krb5_ccache_name=yes
-else
+else $as_nop
ac_cv_lib_gssapi_gss_krb5_ccache_name=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_gss_krb5_ccache_name" >&5
-$as_echo "$ac_cv_lib_gssapi_gss_krb5_ccache_name" >&6; }
-if test "x$ac_cv_lib_gssapi_gss_krb5_ccache_name" = xyes; then :
- $as_echo "#define HAVE_GSS_KRB5_CCACHE_NAME 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_gss_krb5_ccache_name" >&5
+printf "%s\n" "$ac_cv_lib_gssapi_gss_krb5_ccache_name" >&6; }
+if test "x$ac_cv_lib_gssapi_gss_krb5_ccache_name" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSS_KRB5_CCACHE_NAME 1" >>confdefs.h
LDAP_LIBS="${LDAP_LIBS} -lgssapi"
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gss_krb5_ccache_name in -lgssapi_krb5" >&5
-$as_echo_n "checking for gss_krb5_ccache_name in -lgssapi_krb5... " >&6; }
-if ${ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+else $as_nop
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gss_krb5_ccache_name in -lgssapi_krb5" >&5
+printf %s "checking for gss_krb5_ccache_name in -lgssapi_krb5... " >&6; }
+if test ${ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lgssapi_krb5 $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -26435,31 +27349,30 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* 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 gss_krb5_ccache_name ();
int
-main ()
+main (void)
{
return gss_krb5_ccache_name ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name=yes
-else
+else $as_nop
ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name" >&5
-$as_echo "$ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name" >&6; }
-if test "x$ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name" = xyes; then :
- $as_echo "#define HAVE_GSS_KRB5_CCACHE_NAME 1" >>confdefs.h
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name" >&5
+printf "%s\n" "$ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name" >&6; }
+if test "x$ac_cv_lib_gssapi_krb5_gss_krb5_ccache_name" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSS_KRB5_CCACHE_NAME 1" >>confdefs.h
LDAP_LIBS="${LDAP_LIBS} -lgssapi_krb5"
fi
@@ -26480,7 +27393,7 @@ fi
#include <gssapi/gssapi.h>
int
-main ()
+main (void)
{
;
@@ -26488,30 +27401,26 @@ main ()
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
- for ac_header in gssapi/gssapi.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "gssapi/gssapi.h" "ac_cv_header_gssapi_gssapi_h" "$ac_includes_default"
-if test "x$ac_cv_header_gssapi_gssapi_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GSSAPI_GSSAPI_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "gssapi/gssapi.h" "ac_cv_header_gssapi_gssapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_gssapi_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_GSSAPI_H 1" >>confdefs.h
fi
-done
-
break
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <gssapi.h>
int
-main ()
+main (void)
{
;
@@ -26519,20 +27428,16 @@ main ()
}
_ACEOF
-if ac_fn_c_try_cpp "$LINENO"; then :
+if ac_fn_c_try_cpp "$LINENO"
+then :
- for ac_header in gssapi.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
-if test "x$ac_cv_header_gssapi_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GSSAPI_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "gssapi.h" "ac_cv_header_gssapi_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_H 1" >>confdefs.h
fi
-done
-
break
fi
@@ -26542,22 +27447,17 @@ fi
rm -f conftest.err conftest.i conftest.$ac_ext
done
if test X"$ac_cv_header_gssapi_gssapi_h" != X"no"; then
- for ac_header in gssapi/gssapi_krb5.h
-do :
- ac_fn_c_check_header_mongrel "$LINENO" "gssapi/gssapi_krb5.h" "ac_cv_header_gssapi_gssapi_krb5_h" "$ac_includes_default"
-if test "x$ac_cv_header_gssapi_gssapi_krb5_h" = xyes; then :
- cat >>confdefs.h <<_ACEOF
-#define HAVE_GSSAPI_GSSAPI_KRB5_H 1
-_ACEOF
+ ac_fn_c_check_header_compile "$LINENO" "gssapi/gssapi_krb5.h" "ac_cv_header_gssapi_gssapi_krb5_h" "$ac_includes_default"
+if test "x$ac_cv_header_gssapi_gssapi_krb5_h" = xyes
+then :
+ printf "%s\n" "#define HAVE_GSSAPI_GSSAPI_KRB5_H 1" >>confdefs.h
fi
-done
-
elif test X"$ac_cv_header_gssapi_h" = X"no"; then
CPPFLAGS="$O_CPPFLAGS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate gssapi.h, you will have to edit the Makefile and add -I/path/to/gssapi/includes to CPPFLAGS" >&5
-$as_echo "$as_me: WARNING: Unable to locate gssapi.h, you will have to edit the Makefile and add -I/path/to/gssapi/includes to CPPFLAGS" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: Unable to locate gssapi.h, you will have to edit the Makefile and add -I/path/to/gssapi/includes to CPPFLAGS" >&5
+printf "%s\n" "$as_me: WARNING: Unable to locate gssapi.h, you will have to edit the Makefile and add -I/path/to/gssapi/includes to CPPFLAGS" >&2;}
fi
fi
@@ -26572,41 +27472,75 @@ fi
#
case "$lt_cv_dlopen" in
dlopen)
- $as_echo "#define HAVE_DLOPEN 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DLOPEN 1" >>confdefs.h
if test "$enable_static_sudoers" = "yes"; then
- $as_echo "#define STATIC_SUDOERS_PLUGIN 1" >>confdefs.h
+ printf "%s\n" "#define STATIC_SUDOERS_PLUGIN 1" >>confdefs.h
SUDO_OBJS="${SUDO_OBJS} preload.o"
STATIC_SUDOERS="\$(top_builddir)/plugins/sudoers/sudoers.la"
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
- *" --tag=disable-shared -static "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains --tag=disable-shared -static"; } >&5
- (: SUDOERS_LDFLAGS already contains --tag=disable-shared -static) 2>&5
+ *" --tag=disable-shared "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains --tag=disable-shared"; } >&5
+ (: SUDOERS_LDFLAGS already contains --tag=disable-shared) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
- as_fn_append SUDOERS_LDFLAGS " --tag=disable-shared -static"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ as_fn_append SUDOERS_LDFLAGS " --tag=disable-shared"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
+
+ SUDOERS_LDFLAGS=--tag=disable-shared
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ (: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+
+if test ${SUDOERS_LDFLAGS+y}
+then :
+
+ case " $SUDOERS_LDFLAGS " in #(
+ *" -static "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -static"; } >&5
+ (: SUDOERS_LDFLAGS already contains -static) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append SUDOERS_LDFLAGS " -static"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ (: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
- SUDOERS_LDFLAGS=--tag=disable-shared -static
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ SUDOERS_LDFLAGS=-static
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -26617,41 +27551,75 @@ fi
fi
;;
shl_load)
- $as_echo "#define HAVE_SHL_LOAD 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_SHL_LOAD 1" >>confdefs.h
if test "$enable_static_sudoers" = "yes"; then
- $as_echo "#define STATIC_SUDOERS_PLUGIN 1" >>confdefs.h
+ printf "%s\n" "#define STATIC_SUDOERS_PLUGIN 1" >>confdefs.h
SUDO_OBJS="${SUDO_OBJS} preload.o"
STATIC_SUDOERS="\$(top_builddir)/plugins/sudoers/sudoers.la"
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
- *" --tag=disable-shared -static "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains --tag=disable-shared -static"; } >&5
- (: SUDOERS_LDFLAGS already contains --tag=disable-shared -static) 2>&5
+ *" --tag=disable-shared "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains --tag=disable-shared"; } >&5
+ (: SUDOERS_LDFLAGS already contains --tag=disable-shared) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
- as_fn_append SUDOERS_LDFLAGS " --tag=disable-shared -static"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ as_fn_append SUDOERS_LDFLAGS " --tag=disable-shared"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
- SUDOERS_LDFLAGS=--tag=disable-shared -static
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ SUDOERS_LDFLAGS=--tag=disable-shared
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+
+if test ${SUDOERS_LDFLAGS+y}
+then :
+
+ case " $SUDOERS_LDFLAGS " in #(
+ *" -static "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -static"; } >&5
+ (: SUDOERS_LDFLAGS already contains -static) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append SUDOERS_LDFLAGS " -static"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ (: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ SUDOERS_LDFLAGS=-static
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ (: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -26666,7 +27634,7 @@ fi
as_fn_error $? "\"dlopen present but libtool doesn't appear to support your platform.\"" "$LINENO" 5
fi
# Preload sudoers module symbols
- $as_echo "#define STATIC_SUDOERS_PLUGIN 1" >>confdefs.h
+ printf "%s\n" "#define STATIC_SUDOERS_PLUGIN 1" >>confdefs.h
SUDO_OBJS="${SUDO_OBJS} preload.o"
STATIC_SUDOERS="\$(top_builddir)/plugins/sudoers/sudoers.la"
@@ -26691,65 +27659,67 @@ if test "$enable_shared_libutil" = "no"; then
else
# Do not install sudoers or libsudo_util.
-if ${SUDOERS_LDFLAGS+:} false; then :
+if test ${SUDOERS_LDFLAGS+y}
+then :
case " $SUDOERS_LDFLAGS " in #(
*" -no-install "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -no-install"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS already contains -no-install"; } >&5
(: SUDOERS_LDFLAGS already contains -no-install) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append SUDOERS_LDFLAGS " -no-install"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
SUDOERS_LDFLAGS=-no-install
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : SUDOERS_LDFLAGS=\"\$SUDOERS_LDFLAGS\""; } >&5
(: SUDOERS_LDFLAGS="$SUDOERS_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-if ${LIBUTIL_LDFLAGS+:} false; then :
+if test ${LIBUTIL_LDFLAGS+y}
+then :
case " $LIBUTIL_LDFLAGS " in #(
*" -no-install "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBUTIL_LDFLAGS already contains -no-install"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBUTIL_LDFLAGS already contains -no-install"; } >&5
(: LIBUTIL_LDFLAGS already contains -no-install) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LIBUTIL_LDFLAGS " -no-install"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBUTIL_LDFLAGS=\"\$LIBUTIL_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBUTIL_LDFLAGS=\"\$LIBUTIL_LDFLAGS\""; } >&5
(: LIBUTIL_LDFLAGS="$LIBUTIL_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LIBUTIL_LDFLAGS=-no-install
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LIBUTIL_LDFLAGS=\"\$LIBUTIL_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LIBUTIL_LDFLAGS=\"\$LIBUTIL_LDFLAGS\""; } >&5
(: LIBUTIL_LDFLAGS="$LIBUTIL_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
@@ -26764,11 +27734,12 @@ fi
# This check should go after all other libraries tests.
case "$host_os" in
hpux*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5
-$as_echo_n "checking for main in -lpthread... " >&6; }
-if ${ac_cv_lib_pthread_main+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for main in -lpthread" >&5
+printf %s "checking for main in -lpthread... " >&6; }
+if test ${ac_cv_lib_pthread_main+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ac_check_lib_save_LIBS=$LIBS
LIBS="-lpthread $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -26776,42 +27747,44 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
int
-main ()
+main (void)
{
return main ();
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ac_cv_lib_pthread_main=yes
-else
+else $as_nop
ac_cv_lib_pthread_main=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5
-$as_echo "$ac_cv_lib_pthread_main" >&6; }
-if test "x$ac_cv_lib_pthread_main" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_main" >&5
+printf "%s\n" "$ac_cv_lib_pthread_main" >&6; }
+if test "x$ac_cv_lib_pthread_main" = xyes
+then :
SUDO_LIBS="${SUDO_LIBS} -lpthread"
fi
- $as_echo "#define _REENTRANT 1" >>confdefs.h
+ printf "%s\n" "#define _REENTRANT 1" >>confdefs.h
;;
esac
if test "$utmp_style" = "LEGACY"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for utmp file path" >&5
-$as_echo_n "checking for utmp file path... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for utmp file path" >&5
+printf %s "checking for utmp file path... " >&6; }
found=no
for p in "/var/run/utmp" "/var/adm/utmp" "/etc/utmp"; do
if test -r "$p"; then
found=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $p" >&5
-$as_echo "$p" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $p" >&5
+printf "%s\n" "$p" >&6; }
cat >>confdefs.h <<EOF
#define _PATH_UTMP "$p"
EOF
@@ -26820,14 +27793,14 @@ EOF
fi
done
if test X"$found" != X"yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
-$as_echo "not found" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: not found" >&5
+printf "%s\n" "not found" >&6; }
fi
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for log dir location" >&5
-$as_echo_n "checking for log dir location... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for log dir location" >&5
+printf %s "checking for log dir location... " >&6; }
if test "${with_logdir-yes}" != "yes"; then
log_dir="$with_logdir"
else
@@ -26845,11 +27818,11 @@ $as_echo_n "checking for log dir location... " >&6; }
EOF
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $log_dir" >&5
-$as_echo "$log_dir" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $log_dir" >&5
+printf "%s\n" "$log_dir" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for log file location" >&5
-$as_echo_n "checking for log file location... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for log file location" >&5
+printf %s "checking for log file location... " >&6; }
if test "${with_logpath-yes}" != "yes"; then
logpath="$with_logpath"
else
@@ -26861,15 +27834,15 @@ $as_echo_n "checking for log file location... " >&6; }
fi
done
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $logpath" >&5
-$as_echo "$logpath" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $logpath" >&5
+printf "%s\n" "$logpath" >&6; }
cat >>confdefs.h <<EOF
#define _PATH_SUDO_LOGFILE "$logpath"
EOF
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sudo run dir location" >&5
-$as_echo_n "checking for sudo run dir location... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sudo run dir location" >&5
+printf %s "checking for sudo run dir location... " >&6; }
if test -n "$with_rundir"; then
rundir="$with_rundir"
elif test -n "$runstatedir" && test "$runstatedir" != '${localstatedir}/run'; then
@@ -26883,8 +27856,8 @@ else
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $rundir" >&5
-$as_echo "$rundir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $rundir" >&5
+printf "%s\n" "$rundir" >&6; }
cat >>confdefs.h <<EOF
#define _PATH_SUDO_TIMEDIR "$rundir/ts"
EOF
@@ -26894,8 +27867,8 @@ cat >>confdefs.h <<EOF
EOF
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sudo var dir location" >&5
-$as_echo_n "checking for sudo var dir location... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for sudo var dir location" >&5
+printf %s "checking for sudo var dir location... " >&6; }
vardir="$with_vardir"
if test -z "$vardir"; then
for d in /var/db /var/lib /var/adm /usr/adm; do
@@ -26905,16 +27878,16 @@ if test -z "$vardir"; then
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $vardir" >&5
-$as_echo "$vardir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $vardir" >&5
+printf "%s\n" "$vardir" >&6; }
cat >>confdefs.h <<EOF
#define _PATH_SUDO_LECTURE_DIR "$vardir/lectured"
EOF
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for I/O log dir location" >&5
-$as_echo_n "checking for I/O log dir location... " >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for I/O log dir location" >&5
+printf %s "checking for I/O log dir location... " >&6; }
if test "${with_iologdir-yes}" != "yes"; then
iolog_dir="$with_iologdir"
else
@@ -26932,11 +27905,11 @@ $as_echo_n "checking for I/O log dir location... " >&6; }
EOF
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $iolog_dir" >&5
-$as_echo "$iolog_dir" >&6; }
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $iolog_dir" >&5
+printf "%s\n" "$iolog_dir" >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking time zone data directory" >&5
-$as_echo_n "checking time zone data directory... " >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking time zone data directory" >&5
+printf %s "checking time zone data directory... " >&6; }
tzdir="$with_tzdir"
if test -z "$tzdir"; then
tzdir=no
@@ -26947,8 +27920,8 @@ if test -z "$tzdir"; then
fi
done
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $tzdir" >&5
-$as_echo "$tzdir" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $tzdir" >&5
+printf "%s\n" "$tzdir" >&6; }
if test "${tzdir}" != "no"; then
cat >>confdefs.h <<EOF
#define _PATH_ZONEINFO "$tzdir"
@@ -26960,48 +27933,50 @@ fi
if test "$enable_hardening" != "no"; then
O_CPPFLAGS="$CPPFLAGS"
-if ${CPPFLAGS+:} false; then :
+if test ${CPPFLAGS+y}
+then :
case " $CPPFLAGS " in #(
*" -D_FORTIFY_SOURCE=2 "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -D_FORTIFY_SOURCE=2"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -D_FORTIFY_SOURCE=2"; } >&5
(: CPPFLAGS already contains -D_FORTIFY_SOURCE=2) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append CPPFLAGS " -D_FORTIFY_SOURCE=2"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
CPPFLAGS=-D_FORTIFY_SOURCE=2
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS\""; } >&5
(: CPPFLAGS="$CPPFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _FORTIFY_SOURCE may be specified" >&5
-$as_echo_n "checking whether _FORTIFY_SOURCE may be specified... " >&6; }
-if ${sudo_cv_use_fortify_source+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _FORTIFY_SOURCE may be specified" >&5
+printf %s "checking whether _FORTIFY_SOURCE may be specified... " >&6; }
+if test ${sudo_cv_use_fortify_source+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
char buf[4]; (void)sprintf(buf, "%s", "foo");
@@ -27009,39 +27984,41 @@ char buf[4]; (void)sprintf(buf, "%s", "foo");
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_use_fortify_source=yes
-else
+else $as_nop
sudo_cv_use_fortify_source=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_use_fortify_source=yes
-else
+else $as_nop
sudo_cv_use_fortify_source=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_use_fortify_source" >&5
-$as_echo "$sudo_cv_use_fortify_source" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_use_fortify_source" >&5
+printf "%s\n" "$sudo_cv_use_fortify_source" >&6; }
if test "$sudo_cv_use_fortify_source" != yes; then
CPPFLAGS="$O_CPPFLAGS"
fi
@@ -27051,11 +28028,12 @@ fi
ac_c_werror_flag=yes
if test -n "$GCC" -a "$lt_cv_prog_gnu_ld" != "yes" -a -n "$GCC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -static-libgcc" >&5
-$as_echo_n "checking whether C compiler accepts -static-libgcc... " >&6; }
-if ${ax_cv_check_cflags___static_libgcc+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -static-libgcc" >&5
+printf %s "checking whether C compiler accepts -static-libgcc... " >&6; }
+if test ${ax_cv_check_cflags___static_libgcc+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -static-libgcc"
@@ -27063,71 +28041,75 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___static_libgcc=yes
-else
+else $as_nop
ax_cv_check_cflags___static_libgcc=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___static_libgcc" >&5
-$as_echo "$ax_cv_check_cflags___static_libgcc" >&6; }
-if test x"$ax_cv_check_cflags___static_libgcc" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___static_libgcc" >&5
+printf "%s\n" "$ax_cv_check_cflags___static_libgcc" >&6; }
+if test x"$ax_cv_check_cflags___static_libgcc" = xyes
+then :
-if ${LT_LDFLAGS+:} false; then :
+if test ${LT_LDFLAGS+y}
+then :
case " $LT_LDFLAGS " in #(
*" -Wc,-static-libgcc "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS already contains -Wc,-static-libgcc"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS already contains -Wc,-static-libgcc"; } >&5
(: LT_LDFLAGS already contains -Wc,-static-libgcc) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LT_LDFLAGS " -Wc,-static-libgcc"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS=\"\$LT_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS=\"\$LT_LDFLAGS\""; } >&5
(: LT_LDFLAGS="$LT_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LT_LDFLAGS=-Wc,-static-libgcc
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS=\"\$LT_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LT_LDFLAGS=\"\$LT_LDFLAGS\""; } >&5
(: LT_LDFLAGS="$LT_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-else
+else $as_nop
:
fi
fi
case "$OS" in
- netbsd)
+ netbsd*)
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--enable-new-dtags" >&5
-$as_echo_n "checking whether the linker accepts -Wl,--enable-new-dtags... " >&6; }
-if ${ax_cv_check_ldflags___Wl___enable_new_dtags+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,--enable-new-dtags" >&5
+printf %s "checking whether the linker accepts -Wl,--enable-new-dtags... " >&6; }
+if test ${ax_cv_check_ldflags___Wl___enable_new_dtags+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,--enable-new-dtags"
@@ -27135,58 +28117,61 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ax_cv_check_ldflags___Wl___enable_new_dtags=yes
-else
+else $as_nop
ax_cv_check_ldflags___Wl___enable_new_dtags=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___enable_new_dtags" >&5
-$as_echo "$ax_cv_check_ldflags___Wl___enable_new_dtags" >&6; }
-if test x"$ax_cv_check_ldflags___Wl___enable_new_dtags" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl___enable_new_dtags" >&5
+printf "%s\n" "$ax_cv_check_ldflags___Wl___enable_new_dtags" >&6; }
+if test x"$ax_cv_check_ldflags___Wl___enable_new_dtags" = xyes
+then :
-if ${LDFLAGS+:} false; then :
+if test ${LDFLAGS+y}
+then :
case " $LDFLAGS " in #(
*" -Wl,--enable-new-dtags "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,--enable-new-dtags"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,--enable-new-dtags"; } >&5
(: LDFLAGS already contains -Wl,--enable-new-dtags) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS " -Wl,--enable-new-dtags"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS=-Wl,--enable-new-dtags
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-else
+else $as_nop
:
fi
@@ -27194,11 +28179,12 @@ fi
esac
if test -n "$GCC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fvisibility=hidden" >&5
-$as_echo_n "checking whether C compiler accepts -fvisibility=hidden... " >&6; }
-if ${ax_cv_check_cflags___fvisibility_hidden+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fvisibility=hidden" >&5
+printf %s "checking whether C compiler accepts -fvisibility=hidden... " >&6; }
+if test ${ax_cv_check_cflags___fvisibility_hidden+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -fvisibility=hidden"
@@ -27206,43 +28192,46 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___fvisibility_hidden=yes
-else
+else $as_nop
ax_cv_check_cflags___fvisibility_hidden=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fvisibility_hidden" >&5
-$as_echo "$ax_cv_check_cflags___fvisibility_hidden" >&6; }
-if test x"$ax_cv_check_cflags___fvisibility_hidden" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fvisibility_hidden" >&5
+printf "%s\n" "$ax_cv_check_cflags___fvisibility_hidden" >&6; }
+if test x"$ax_cv_check_cflags___fvisibility_hidden" = xyes
+then :
- $as_echo "#define HAVE_DSO_VISIBILITY 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DSO_VISIBILITY 1" >>confdefs.h
CFLAGS="${CFLAGS} -fvisibility=hidden"
LT_LDEXPORTS=
LT_LDDEP=
-else
+else $as_nop
:
fi
else
case "$host_os" in
hpux*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Bhidden_def" >&5
-$as_echo_n "checking whether C compiler accepts -Bhidden_def... " >&6; }
-if ${ax_cv_check_cflags___Bhidden_def+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Bhidden_def" >&5
+printf %s "checking whether C compiler accepts -Bhidden_def... " >&6; }
+if test ${ax_cv_check_cflags___Bhidden_def+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -Bhidden_def"
@@ -27250,33 +28239,36 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___Bhidden_def=yes
-else
+else $as_nop
ax_cv_check_cflags___Bhidden_def=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Bhidden_def" >&5
-$as_echo "$ax_cv_check_cflags___Bhidden_def" >&6; }
-if test x"$ax_cv_check_cflags___Bhidden_def" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Bhidden_def" >&5
+printf "%s\n" "$ax_cv_check_cflags___Bhidden_def" >&6; }
+if test x"$ax_cv_check_cflags___Bhidden_def" = xyes
+then :
# HP-UX cc may not allow __declspec(dllexport) to be
# used in conjunction with #pragma HP_DEFINED_EXTERNAL
# when redefining standard libc functions.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether __declspec(dllexport) can be used when overriding libc functions" >&5
-$as_echo_n "checking whether __declspec(dllexport) can be used when overriding libc functions... " >&6; }
-if ${sudo_cv_var_hpux_declspec_libc_function+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether __declspec(dllexport) can be used when overriding libc functions" >&5
+printf %s "checking whether __declspec(dllexport) can be used when overriding libc functions... " >&6; }
+if test ${sudo_cv_var_hpux_declspec_libc_function+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
_CFLAGS="$CFLAGS"
CFLAGS="${CFLAGS} -Bhidden_def"
@@ -27285,41 +28277,43 @@ else
#include <stdlib.h>
__declspec(dllexport) char * getenv(const char *n) { return NULL; }
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_var_hpux_declspec_libc_function=yes
-else
+else $as_nop
sudo_cv_var_hpux_declspec_libc_function=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS="$_CFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_hpux_declspec_libc_function" >&5
-$as_echo "$sudo_cv_var_hpux_declspec_libc_function" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_hpux_declspec_libc_function" >&5
+printf "%s\n" "$sudo_cv_var_hpux_declspec_libc_function" >&6; }
if test "$sudo_cv_var_hpux_declspec_libc_function" = "yes"; then
- $as_echo "#define HAVE_DSO_VISIBILITY 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DSO_VISIBILITY 1" >>confdefs.h
CFLAGS="${CFLAGS} -Bhidden_def"
LT_LDEXPORTS=
LT_LDDEP=
fi
-else
+else $as_nop
:
fi
;;
solaris2*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -xldscope=hidden" >&5
-$as_echo_n "checking whether C compiler accepts -xldscope=hidden... " >&6; }
-if ${ax_cv_check_cflags___xldscope_hidden+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -xldscope=hidden" >&5
+printf %s "checking whether C compiler accepts -xldscope=hidden... " >&6; }
+if test ${ax_cv_check_cflags___xldscope_hidden+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -xldscope=hidden"
@@ -27327,32 +28321,34 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___xldscope_hidden=yes
-else
+else $as_nop
ax_cv_check_cflags___xldscope_hidden=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___xldscope_hidden" >&5
-$as_echo "$ax_cv_check_cflags___xldscope_hidden" >&6; }
-if test x"$ax_cv_check_cflags___xldscope_hidden" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___xldscope_hidden" >&5
+printf "%s\n" "$ax_cv_check_cflags___xldscope_hidden" >&6; }
+if test x"$ax_cv_check_cflags___xldscope_hidden" = xyes
+then :
- $as_echo "#define HAVE_DSO_VISIBILITY 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_DSO_VISIBILITY 1" >>confdefs.h
CFLAGS="${CFLAGS} -xldscope=hidden"
LT_LDEXPORTS=
LT_LDDEP=
-else
+else $as_nop
:
fi
@@ -27361,11 +28357,12 @@ fi
fi
if test "$lt_cv_prog_gnu_ld" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports anonymous map files" >&5
-$as_echo_n "checking whether ld supports anonymous map files... " >&6; }
-if ${sudo_cv_var_gnu_ld_anon_map+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ld supports anonymous map files" >&5
+printf %s "checking whether ld supports anonymous map files... " >&6; }
+if test ${sudo_cv_var_gnu_ld_anon_map+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
sudo_cv_var_gnu_ld_anon_map=no
cat > conftest.map <<-EOF
@@ -27382,36 +28379,38 @@ EOF
/* end confdefs.h. */
int foo;
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_var_gnu_ld_anon_map=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$_CFLAGS"
LDFLAGS="$_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_gnu_ld_anon_map" >&5
-$as_echo "$sudo_cv_var_gnu_ld_anon_map" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_gnu_ld_anon_map" >&5
+printf "%s\n" "$sudo_cv_var_gnu_ld_anon_map" >&6; }
if test "$sudo_cv_var_gnu_ld_anon_map" = "yes"; then
LT_LDDEP="\$(shlib_map)"; LT_LDEXPORTS="-Wl,--version-script,\$(shlib_map)"
fi
else
case "$host_os" in
solaris2*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports anonymous map files" >&5
-$as_echo_n "checking whether ld supports anonymous map files... " >&6; }
-if ${sudo_cv_var_solaris_ld_anon_map+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ld supports anonymous map files" >&5
+printf %s "checking whether ld supports anonymous map files... " >&6; }
+if test ${sudo_cv_var_solaris_ld_anon_map+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
sudo_cv_var_solaris_ld_anon_map=no
cat > conftest.map <<-EOF
@@ -27428,35 +28427,37 @@ EOF
/* end confdefs.h. */
int foo;
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_var_solaris_ld_anon_map=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$_CFLAGS"
LDFLAGS="$_LDFLAGS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_solaris_ld_anon_map" >&5
-$as_echo "$sudo_cv_var_solaris_ld_anon_map" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_solaris_ld_anon_map" >&5
+printf "%s\n" "$sudo_cv_var_solaris_ld_anon_map" >&6; }
if test "$sudo_cv_var_solaris_ld_anon_map" = "yes"; then
LT_LDDEP="\$(shlib_map)"; LT_LDEXPORTS="-Wl,-M,\$(shlib_map)"
fi
;;
hpux*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ld supports controlling exported symbols" >&5
-$as_echo_n "checking whether ld supports controlling exported symbols... " >&6; }
-if ${sudo_cv_var_hpux_ld_symbol_export+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ld supports controlling exported symbols" >&5
+printf %s "checking whether ld supports controlling exported symbols... " >&6; }
+if test ${sudo_cv_var_hpux_ld_symbol_export+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
sudo_cv_var_hpux_ld_symbol_export=no
echo "+e foo" > conftest.opt
@@ -27472,17 +28473,18 @@ else
/* end confdefs.h. */
int foo;
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
sudo_cv_var_hpux_ld_symbol_export=yes
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CFLAGS="$_CFLAGS"
LDFLAGS="$_LDFLAGS"
@@ -27490,8 +28492,8 @@ rm -f core conftest.err conftest.$ac_objext \
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_hpux_ld_symbol_export" >&5
-$as_echo "$sudo_cv_var_hpux_ld_symbol_export" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_hpux_ld_symbol_export" >&5
+printf "%s\n" "$sudo_cv_var_hpux_ld_symbol_export" >&6; }
if test "$sudo_cv_var_hpux_ld_symbol_export" = "yes"; then
LT_LDDEP="\$(shlib_opt)"; LT_LDEXPORTS="-Wl,-c,\$(shlib_opt)"
fi
@@ -27499,77 +28501,301 @@ $as_echo "$sudo_cv_var_hpux_ld_symbol_export" >&6; }
esac
fi
-if test "$enable_asan" = "yes"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=address -fsanitize=undefined" >&5
-$as_echo_n "checking whether C compiler accepts -fsanitize=address -fsanitize=undefined... " >&6; }
-if ${ax_cv_check_cflags___fsanitize_address__fsanitize_undefined+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "$enable_sanitizer" != "no"; then
+ as_CACHEVAR=`printf "%s\n" "ax_cv_check_cflags__$enable_sanitizer" | $as_tr_sh`
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $enable_sanitizer" >&5
+printf %s "checking whether C compiler accepts $enable_sanitizer... " >&6; }
+if eval test \${$as_CACHEVAR+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
- CFLAGS="$CFLAGS -fsanitize=address -fsanitize=undefined"
+ CFLAGS="$CFLAGS $enable_sanitizer"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ax_cv_check_cflags___fsanitize_address__fsanitize_undefined=yes
-else
- ax_cv_check_cflags___fsanitize_address__fsanitize_undefined=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ eval "$as_CACHEVAR=yes"
+else $as_nop
+ eval "$as_CACHEVAR=no"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_address__fsanitize_undefined" >&5
-$as_echo "$ax_cv_check_cflags___fsanitize_address__fsanitize_undefined" >&6; }
-if test x"$ax_cv_check_cflags___fsanitize_address__fsanitize_undefined" = xyes; then :
+eval ac_res=\$$as_CACHEVAR
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+printf "%s\n" "$ac_res" >&6; }
+if test x"`eval 'as_val=${'$as_CACHEVAR'};printf "%s\n" "$as_val"'`" = xyes
+then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -fsanitize=address -fsanitize=undefined" >&5
-$as_echo_n "checking whether the linker accepts -fsanitize=address -fsanitize=undefined... " >&6; }
-if ${ax_cv_check_ldflags___fsanitize_address__fsanitize_undefined+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- ax_check_save_flags=$LDFLAGS
- LDFLAGS="$LDFLAGS -fsanitize=address -fsanitize=undefined"
+if test ${ASAN_CFLAGS+y}
+then :
+
+ case " $ASAN_CFLAGS " in #(
+ *" $enable_sanitizer "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_CFLAGS already contains \$enable_sanitizer"; } >&5
+ (: ASAN_CFLAGS already contains $enable_sanitizer) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append ASAN_CFLAGS " $enable_sanitizer"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_CFLAGS=\"\$ASAN_CFLAGS\""; } >&5
+ (: ASAN_CFLAGS="$ASAN_CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ ASAN_CFLAGS=$enable_sanitizer
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_CFLAGS=\"\$ASAN_CFLAGS\""; } >&5
+ (: ASAN_CFLAGS="$ASAN_CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+
+if test ${ASAN_LDFLAGS+y}
+then :
+
+ case " $ASAN_LDFLAGS " in #(
+ *" $enable_sanitizer "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS already contains \$enable_sanitizer"; } >&5
+ (: ASAN_LDFLAGS already contains $enable_sanitizer) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append ASAN_LDFLAGS " $enable_sanitizer"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5
+ (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ ASAN_LDFLAGS=$enable_sanitizer
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5
+ (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-omit-frame-pointer" >&5
+printf %s "checking whether C compiler accepts -fno-omit-frame-pointer... " >&6; }
+if test ${ax_cv_check_cflags___fno_omit_frame_pointer+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -fno-omit-frame-pointer"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ax_cv_check_ldflags___fsanitize_address__fsanitize_undefined=yes
-else
- ax_cv_check_ldflags___fsanitize_address__fsanitize_undefined=no
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ax_cv_check_cflags___fno_omit_frame_pointer=yes
+else $as_nop
+ ax_cv_check_cflags___fno_omit_frame_pointer=no
fi
-rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
- LDFLAGS=$ax_check_save_flags
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_omit_frame_pointer" >&5
+printf "%s\n" "$ax_cv_check_cflags___fno_omit_frame_pointer" >&6; }
+if test x"$ax_cv_check_cflags___fno_omit_frame_pointer" = xyes
+then :
+
+
+if test ${CFLAGS+y}
+then :
+
+ case " $CFLAGS " in #(
+ *" -fno-omit-frame-pointer "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains -fno-omit-frame-pointer"; } >&5
+ (: CFLAGS already contains -fno-omit-frame-pointer) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append CFLAGS " -fno-omit-frame-pointer"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ CFLAGS=-fno-omit-frame-pointer
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+
+else $as_nop
+ :
+fi
+
+ printf "%s\n" "#define NO_LEAKS 1" >>confdefs.h
+
+
+else $as_nop
+
+ as_fn_error $? "$CC does not support the $enable_sanitizer flag" "$LINENO" 5
+
+fi
+
+fi
+if test "$enable_fuzzer" = "yes"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fsanitize=fuzzer-no-link" >&5
+printf %s "checking whether C compiler accepts -fsanitize=fuzzer-no-link... " >&6; }
+if test ${ax_cv_check_cflags___fsanitize_fuzzer_no_link+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ ax_check_save_flags=$CFLAGS
+ CFLAGS="$CFLAGS -fsanitize=fuzzer-no-link"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ ax_cv_check_cflags___fsanitize_fuzzer_no_link=yes
+else $as_nop
+ ax_cv_check_cflags___fsanitize_fuzzer_no_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ CFLAGS=$ax_check_save_flags
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fsanitize_fuzzer_no_link" >&5
+printf "%s\n" "$ax_cv_check_cflags___fsanitize_fuzzer_no_link" >&6; }
+if test x"$ax_cv_check_cflags___fsanitize_fuzzer_no_link" = xyes
+then :
+
+
+if test ${ASAN_CFLAGS+y}
+then :
+
+ case " $ASAN_CFLAGS " in #(
+ *" -fsanitize=fuzzer-no-link "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_CFLAGS already contains -fsanitize=fuzzer-no-link"; } >&5
+ (: ASAN_CFLAGS already contains -fsanitize=fuzzer-no-link) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append ASAN_CFLAGS " -fsanitize=fuzzer-no-link"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_CFLAGS=\"\$ASAN_CFLAGS\""; } >&5
+ (: ASAN_CFLAGS="$ASAN_CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ ASAN_CFLAGS=-fsanitize=fuzzer-no-link
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_CFLAGS=\"\$ASAN_CFLAGS\""; } >&5
+ (: ASAN_CFLAGS="$ASAN_CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___fsanitize_address__fsanitize_undefined" >&5
-$as_echo "$ax_cv_check_ldflags___fsanitize_address__fsanitize_undefined" >&6; }
-if test x"$ax_cv_check_ldflags___fsanitize_address__fsanitize_undefined" = xyes; then :
- ASAN_LDFLAGS="-Wc,-fsanitize=address -Wc,-fsanitize=undefined"
- ASAN_CFLAGS="-fsanitize=address -fsanitize=undefined"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-omit-frame-pointer" >&5
-$as_echo_n "checking whether C compiler accepts -fno-omit-frame-pointer... " >&6; }
-if ${ax_cv_check_cflags___fno_omit_frame_pointer+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+
+if test ${ASAN_LDFLAGS+y}
+then :
+
+ case " $ASAN_LDFLAGS " in #(
+ *" -fsanitize=fuzzer-no-link "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS already contains -fsanitize=fuzzer-no-link"; } >&5
+ (: ASAN_LDFLAGS already contains -fsanitize=fuzzer-no-link) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append ASAN_LDFLAGS " -fsanitize=fuzzer-no-link"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5
+ (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ ASAN_LDFLAGS=-fsanitize=fuzzer-no-link
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : ASAN_LDFLAGS=\"\$ASAN_LDFLAGS\""; } >&5
+ (: ASAN_LDFLAGS="$ASAN_LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+ if test -z "$FUZZ_ENGINE"; then
+ FUZZ_ENGINE="-fsanitize=fuzzer"
+ fi
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-omit-frame-pointer" >&5
+printf %s "checking whether C compiler accepts -fno-omit-frame-pointer... " >&6; }
+if test ${ax_cv_check_cflags___fno_omit_frame_pointer+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -fno-omit-frame-pointer"
@@ -27577,43 +28803,111 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___fno_omit_frame_pointer=yes
-else
+else $as_nop
ax_cv_check_cflags___fno_omit_frame_pointer=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_omit_frame_pointer" >&5
-$as_echo "$ax_cv_check_cflags___fno_omit_frame_pointer" >&6; }
-if test x"$ax_cv_check_cflags___fno_omit_frame_pointer" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_omit_frame_pointer" >&5
+printf "%s\n" "$ax_cv_check_cflags___fno_omit_frame_pointer" >&6; }
+if test x"$ax_cv_check_cflags___fno_omit_frame_pointer" = xyes
+then :
- CFLAGS="$CFLAGS -fno-omit-frame-pointer"
-else
+if test ${CFLAGS+y}
+then :
+
+ case " $CFLAGS " in #(
+ *" -fno-omit-frame-pointer "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains -fno-omit-frame-pointer"; } >&5
+ (: CFLAGS already contains -fno-omit-frame-pointer) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append CFLAGS " -fno-omit-frame-pointer"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ CFLAGS=-fno-omit-frame-pointer
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+
+else $as_nop
:
fi
- $as_echo "#define NO_LEAKS 1" >>confdefs.h
+ # Use CFLAGS, not CPPFLAGS to match oss-fuzz behavior
+if test ${CFLAGS+y}
+then :
+
+ case " $CFLAGS " in #(
+ *" -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"; } >&5
+ (: CFLAGS already contains -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append CFLAGS " -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ CFLAGS=-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS\""; } >&5
+ (: CFLAGS="$CFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
-else
- :
fi
+ printf "%s\n" "#define NO_LEAKS 1" >>confdefs.h
+
+
+else $as_nop
+
+ as_fn_error $? "$CC does not support the -fsanitize=fuzzer-no-link flag" "$LINENO" 5
-else
- :
fi
+else
+ # Not using compiler fuzzing support, link with stub library.
+ FUZZ_ENGINE='$(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la'
fi
if test -n "$GCC"; then
@@ -27627,11 +28921,12 @@ if test -n "$GCC"; then
fi
if test -n "$enable_pie"; then
if test "$enable_pie" = "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-pie" >&5
-$as_echo_n "checking whether C compiler accepts -fno-pie... " >&6; }
-if ${ax_cv_check_cflags___fno_pie+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fno-pie" >&5
+printf %s "checking whether C compiler accepts -fno-pie... " >&6; }
+if test ${ax_cv_check_cflags___fno_pie+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -fno-pie"
@@ -27639,32 +28934,35 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___fno_pie=yes
-else
+else $as_nop
ax_cv_check_cflags___fno_pie=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_pie" >&5
-$as_echo "$ax_cv_check_cflags___fno_pie" >&6; }
-if test x"$ax_cv_check_cflags___fno_pie" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fno_pie" >&5
+printf "%s\n" "$ax_cv_check_cflags___fno_pie" >&6; }
+if test x"$ax_cv_check_cflags___fno_pie" = xyes
+then :
_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fno-pie"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -nopie" >&5
-$as_echo_n "checking whether the linker accepts -nopie... " >&6; }
-if ${ax_cv_check_ldflags___nopie+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -nopie" >&5
+printf %s "checking whether the linker accepts -nopie... " >&6; }
+if test ${ax_cv_check_ldflags___nopie+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS -nopie"
@@ -27672,45 +28970,48 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ax_cv_check_ldflags___nopie=yes
-else
+else $as_nop
ax_cv_check_ldflags___nopie=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___nopie" >&5
-$as_echo "$ax_cv_check_ldflags___nopie" >&6; }
-if test x"$ax_cv_check_ldflags___nopie" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___nopie" >&5
+printf "%s\n" "$ax_cv_check_ldflags___nopie" >&6; }
+if test x"$ax_cv_check_ldflags___nopie" = xyes
+then :
PIE_CFLAGS="-fno-pie"
PIE_LDFLAGS="-nopie"
-else
+else $as_nop
:
fi
CFLAGS="$_CFLAGS"
-else
+else $as_nop
:
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fPIE" >&5
-$as_echo_n "checking whether C compiler accepts -fPIE... " >&6; }
-if ${ax_cv_check_cflags___fPIE+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -fPIE" >&5
+printf %s "checking whether C compiler accepts -fPIE... " >&6; }
+if test ${ax_cv_check_cflags___fPIE+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -fPIE"
@@ -27718,32 +29019,35 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___fPIE=yes
-else
+else $as_nop
ax_cv_check_cflags___fPIE=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fPIE" >&5
-$as_echo "$ax_cv_check_cflags___fPIE" >&6; }
-if test x"$ax_cv_check_cflags___fPIE" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___fPIE" >&5
+printf "%s\n" "$ax_cv_check_cflags___fPIE" >&6; }
+if test x"$ax_cv_check_cflags___fPIE" = xyes
+then :
_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -fPIE"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -pie" >&5
-$as_echo_n "checking whether the linker accepts -pie... " >&6; }
-if ${ax_cv_check_ldflags___pie+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -pie" >&5
+printf %s "checking whether the linker accepts -pie... " >&6; }
+if test ${ax_cv_check_ldflags___pie+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS -pie"
@@ -27751,44 +29055,49 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ax_cv_check_ldflags___pie=yes
-else
+else $as_nop
ax_cv_check_ldflags___pie=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___pie" >&5
-$as_echo "$ax_cv_check_ldflags___pie" >&6; }
-if test x"$ax_cv_check_ldflags___pie" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___pie" >&5
+printf "%s\n" "$ax_cv_check_ldflags___pie" >&6; }
+if test x"$ax_cv_check_ldflags___pie" = xyes
+then :
if test "$enable_pie" = "maybe"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working PIE support" >&5
-$as_echo_n "checking for working PIE support... " >&6; }
-if ${sudo_cv_working_pie+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for working PIE support" >&5
+printf %s "checking for working PIE support... " >&6; }
+if test ${sudo_cv_working_pie+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
rm -f conftestdata; > conftestdata
-if test "$cross_compiling" = yes; then :
+if test "$cross_compiling" = yes
+then :
sudo_cv_working_pie=no
-else
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
$ac_includes_default
int main() { char *p = malloc(1024); if (p == NULL) return 1; memset(p, 0, 1024); return 0; }
_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
+if ac_fn_c_try_run "$LINENO"
+then :
sudo_cv_working_pie=yes
-else
+else $as_nop
sudo_cv_working_pie=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
@@ -27798,9 +29107,10 @@ fi
rm -f core core.* *.core
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_working_pie" >&5
-$as_echo "$sudo_cv_working_pie" >&6; }
-if test $sudo_cv_working_pie = yes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_working_pie" >&5
+printf "%s\n" "$sudo_cv_working_pie" >&6; }
+if test $sudo_cv_working_pie = yes
+then :
enable_pie=yes
fi
fi
@@ -27809,13 +29119,13 @@ fi
PIE_LDFLAGS="-Wc,-fPIE -pie"
fi
-else
+else $as_nop
:
fi
CFLAGS="$_CFLAGS"
-else
+else $as_nop
:
fi
@@ -27826,11 +29136,12 @@ if test "$enable_pie" != "yes"; then
# Solaris 11.1 and higher supports tagging binaries to use ASLR
case "$host_os" in
solaris2.1[1-9]|solaris2.[2-9][0-9])
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,aslr" >&5
-$as_echo_n "checking whether the linker accepts -Wl,-z,aslr... " >&6; }
-if ${ax_cv_check_ldflags___Wl__z_aslr+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,aslr" >&5
+printf %s "checking whether the linker accepts -Wl,-z,aslr... " >&6; }
+if test ${ax_cv_check_ldflags___Wl__z_aslr+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,-z,aslr"
@@ -27838,58 +29149,61 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ax_cv_check_ldflags___Wl__z_aslr=yes
-else
+else $as_nop
ax_cv_check_ldflags___Wl__z_aslr=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_aslr" >&5
-$as_echo "$ax_cv_check_ldflags___Wl__z_aslr" >&6; }
-if test x"$ax_cv_check_ldflags___Wl__z_aslr" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_aslr" >&5
+printf "%s\n" "$ax_cv_check_ldflags___Wl__z_aslr" >&6; }
+if test x"$ax_cv_check_ldflags___Wl__z_aslr" = xyes
+then :
-if ${PIE_LDFLAGS+:} false; then :
+if test ${PIE_LDFLAGS+y}
+then :
case " $PIE_LDFLAGS " in #(
*" -Wl,-z,aslr "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : PIE_LDFLAGS already contains -Wl,-z,aslr"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : PIE_LDFLAGS already contains -Wl,-z,aslr"; } >&5
(: PIE_LDFLAGS already contains -Wl,-z,aslr) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append PIE_LDFLAGS " -Wl,-z,aslr"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : PIE_LDFLAGS=\"\$PIE_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : PIE_LDFLAGS=\"\$PIE_LDFLAGS\""; } >&5
(: PIE_LDFLAGS="$PIE_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
PIE_LDFLAGS=-Wl,-z,aslr
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : PIE_LDFLAGS=\"\$PIE_LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : PIE_LDFLAGS=\"\$PIE_LDFLAGS\""; } >&5
(: PIE_LDFLAGS="$PIE_LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-else
+else $as_nop
:
fi
@@ -27897,12 +29211,13 @@ fi
esac
fi
-if test "$enable_hardening" != "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for compiler stack protector support" >&5
-$as_echo_n "checking for compiler stack protector support... " >&6; }
-if ${sudo_cv_var_stack_protector+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+if test "$enable_hardening" != "no" && test "$enable_ssp" != "no"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for compiler stack protector support" >&5
+printf %s "checking for compiler stack protector support... " >&6; }
+if test ${sudo_cv_var_stack_protector+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
# Avoid CFLAGS since the compiler might optimize away our test.
# We don't want CPPFLAGS or LIBS to interfere with the test but
@@ -27922,7 +29237,7 @@ else
$ac_includes_default
int
-main ()
+main (void)
{
char buf[1024]; buf[1023] = '\0';
;
@@ -27930,9 +29245,10 @@ char buf[1024]; buf[1023] = '\0';
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
sudo_cv_var_stack_protector="-fstack-protector-all"
CFLAGS="$sudo_cv_var_stack_protector"
@@ -27942,7 +29258,7 @@ else
$ac_includes_default
int
-main ()
+main (void)
{
char buf[1024]; buf[1023] = '\0';
;
@@ -27950,9 +29266,10 @@ char buf[1024]; buf[1023] = '\0';
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
sudo_cv_var_stack_protector="-fstack-protector"
CFLAGS="$sudo_cv_var_stack_protector"
@@ -27962,7 +29279,7 @@ else
$ac_includes_default
int
-main ()
+main (void)
{
char buf[1024]; buf[1023] = '\0';
;
@@ -27970,22 +29287,23 @@ char buf[1024]; buf[1023] = '\0';
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
-else
+else $as_nop
sudo_cv_var_stack_protector=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
CPPFLAGS="$_CPPFLAGS"
CFLAGS="$_CFLAGS"
@@ -27994,17 +29312,18 @@ rm -f core conftest.err conftest.$ac_objext \
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_stack_protector" >&5
-$as_echo "$sudo_cv_var_stack_protector" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_stack_protector" >&5
+printf "%s\n" "$sudo_cv_var_stack_protector" >&6; }
if test X"$sudo_cv_var_stack_protector" != X"no"; then
SSP_CFLAGS="$sudo_cv_var_stack_protector"
SSP_LDFLAGS="-Wc,$sudo_cv_var_stack_protector"
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,relro" >&5
-$as_echo_n "checking whether the linker accepts -Wl,-z,relro... " >&6; }
-if ${ax_cv_check_ldflags___Wl__z_relro+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,relro" >&5
+printf %s "checking whether the linker accepts -Wl,-z,relro... " >&6; }
+if test ${ax_cv_check_ldflags___Wl__z_relro+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$LDFLAGS
LDFLAGS="$LDFLAGS -Wl,-z,relro"
@@ -28012,58 +29331,134 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
+if ac_fn_c_try_link "$LINENO"
+then :
ax_cv_check_ldflags___Wl__z_relro=yes
-else
+else $as_nop
ax_cv_check_ldflags___Wl__z_relro=no
fi
-rm -f core conftest.err conftest.$ac_objext \
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
conftest$ac_exeext conftest.$ac_ext
LDFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_relro" >&5
-$as_echo "$ax_cv_check_ldflags___Wl__z_relro" >&6; }
-if test x"$ax_cv_check_ldflags___Wl__z_relro" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_relro" >&5
+printf "%s\n" "$ax_cv_check_ldflags___Wl__z_relro" >&6; }
+if test x"$ax_cv_check_ldflags___Wl__z_relro" = xyes
+then :
-if ${LDFLAGS+:} false; then :
+if test ${LDFLAGS+y}
+then :
case " $LDFLAGS " in #(
*" -Wl,-z,relro "*) :
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,-z,relro"; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,-z,relro"; } >&5
(: LDFLAGS already contains -Wl,-z,relro) 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; } ;; #(
*) :
as_fn_append LDFLAGS " -Wl,-z,relro"
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
;;
esac
-else
+else $as_nop
LDFLAGS=-Wl,-z,relro
- { { $as_echo "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
(: LDFLAGS="$LDFLAGS") 2>&5
ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }
fi
-else
+else $as_nop
+ :
+fi
+
+fi
+if test "$enable_hardening" != "no"; then
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the linker accepts -Wl,-z,relro" >&5
+printf %s "checking whether the linker accepts -Wl,-z,relro... " >&6; }
+if test ${ax_cv_check_ldflags___Wl__z_relro+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
+
+ ax_check_save_flags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-z,relro"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"
+then :
+ ax_cv_check_ldflags___Wl__z_relro=yes
+else $as_nop
+ ax_cv_check_ldflags___Wl__z_relro=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$ax_check_save_flags
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_ldflags___Wl__z_relro" >&5
+printf "%s\n" "$ax_cv_check_ldflags___Wl__z_relro" >&6; }
+if test x"$ax_cv_check_ldflags___Wl__z_relro" = xyes
+then :
+
+if test ${LDFLAGS+y}
+then :
+
+ case " $LDFLAGS " in #(
+ *" -Wl,-z,relro "*) :
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS already contains -Wl,-z,relro"; } >&5
+ (: LDFLAGS already contains -Wl,-z,relro) 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } ;; #(
+ *) :
+
+ as_fn_append LDFLAGS " -Wl,-z,relro"
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ (: LDFLAGS="$LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ ;;
+esac
+
+else $as_nop
+
+ LDFLAGS=-Wl,-z,relro
+ { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: : LDFLAGS=\"\$LDFLAGS\""; } >&5
+ (: LDFLAGS="$LDFLAGS") 2>&5
+ ac_status=$?
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+
+fi
+
+else $as_nop
:
fi
@@ -28073,12 +29468,12 @@ case "$with_passwd" in
yes|maybe)
AUTH_OBJS="$AUTH_OBJS getspwuid.lo passwd.lo"
if test "${ac_cv_search_crypt}" = "no"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: No crypt function found, assuming plaintext passwords" >&5
-$as_echo "$as_me: WARNING: No crypt function found, assuming plaintext passwords" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: No crypt function found, assuming plaintext passwords" >&5
+printf "%s\n" "$as_me: WARNING: No crypt function found, assuming plaintext passwords" >&2;}
fi
;;
*)
- $as_echo "#define WITHOUT_PASSWD 1" >>confdefs.h
+ printf "%s\n" "#define WITHOUT_PASSWD 1" >>confdefs.h
if test -z "$AUTH_OBJS"; then
as_fn_error $? "no authentication methods defined." "$LINENO" 5
@@ -28087,8 +29482,8 @@ $as_echo "$as_me: WARNING: No crypt function found, assuming plaintext passwords
esac
AUTH_OBJS=${AUTH_OBJS# }
_AUTH=`echo "$AUTH_OBJS" | sed -e 's/\.lo//g' -e 's/getspwuid *//'`
-{ $as_echo "$as_me:${as_lineno-$LINENO}: using the following authentication methods: $_AUTH" >&5
-$as_echo "$as_me: using the following authentication methods: $_AUTH" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: using the following authentication methods: $_AUTH" >&5
+printf "%s\n" "$as_me: using the following authentication methods: $_AUTH" >&6;}
if test -n "$LIBS"; then
L="$LIBS"
@@ -28103,19 +29498,18 @@ if test -n "$LIBS"; then
fi
-cat >>confdefs.h <<_ACEOF
-#define os_init $OS_INIT
-_ACEOF
+printf "%s\n" "#define os_init $OS_INIT" >>confdefs.h
if test -n "$GCC"; then
if test X"$enable_warnings" = X"yes" -o X"$with_devel" = X"yes"; then
- CFLAGS="${CFLAGS} -Wall -Wsign-compare -Wpointer-arith"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wshadow" >&5
-$as_echo_n "checking whether C compiler accepts -Wshadow... " >&6; }
-if ${ax_cv_check_cflags___Wshadow+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ CFLAGS="${CFLAGS} -Wall -Wsign-compare -Wpointer-arith -Wno-unknown-pragmas"
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts -Wshadow" >&5
+printf %s "checking whether C compiler accepts -Wshadow... " >&6; }
+if test ${ax_cv_check_cflags___Wshadow+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
ax_check_save_flags=$CFLAGS
CFLAGS="$CFLAGS -Wshadow"
@@ -28123,34 +29517,37 @@ else
/* end confdefs.h. */
int
-main ()
+main (void)
{
;
return 0;
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
ax_cv_check_cflags___Wshadow=yes
-else
+else $as_nop
ax_cv_check_cflags___Wshadow=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
CFLAGS=$ax_check_save_flags
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wshadow" >&5
-$as_echo "$ax_cv_check_cflags___Wshadow" >&6; }
-if test x"$ax_cv_check_cflags___Wshadow" = xyes; then :
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_check_cflags___Wshadow" >&5
+printf "%s\n" "$ax_cv_check_cflags___Wshadow" >&6; }
+if test x"$ax_cv_check_cflags___Wshadow" = xyes
+then :
CFLAGS="$CFLAGS -Wshadow"
-else
+else $as_nop
:
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports the fallthrough attribute" >&5
-$as_echo_n "checking whether $CC supports the fallthrough attribute... " >&6; }
-if ${sudo_cv_var_fallthrough_attribute+:} false; then :
- $as_echo_n "(cached) " >&6
-else
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC supports the fallthrough attribute" >&5
+printf %s "checking whether $CC supports the fallthrough attribute... " >&6; }
+if test ${sudo_cv_var_fallthrough_attribute+y}
+then :
+ printf %s "(cached) " >&6
+else $as_nop
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -28168,22 +29565,23 @@ else
}
_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
+if ac_fn_c_try_compile "$LINENO"
+then :
sudo_cv_var_fallthrough_attribute=yes
-else
+else $as_nop
sudo_cv_var_fallthrough_attribute=no
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_fallthrough_attribute" >&5
-$as_echo "$sudo_cv_var_fallthrough_attribute" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sudo_cv_var_fallthrough_attribute" >&5
+printf "%s\n" "$sudo_cv_var_fallthrough_attribute" >&6; }
if test X"$sudo_cv_var_fallthrough_attribute" = X"yes"; then
- $as_echo "#define HAVE_FALLTHROUGH_ATTRIBUTE 1" >>confdefs.h
+ printf "%s\n" "#define HAVE_FALLTHROUGH_ATTRIBUTE 1" >>confdefs.h
CFLAGS="$CFLAGS -Wimplicit-fallthrough"
fi
@@ -28232,8 +29630,8 @@ if test X"$with_noexec" != X"no"; then
PROGS="${PROGS} sudo_noexec.la"
INSTALL_NOEXEC="install-noexec"
- # Can't use asan with LD_PRELOAD
- if test "$enable_asan" != "yes"; then
+ # Can't use sanitizers with LD_PRELOAD
+ if test "$enable_sanitizer" != "yes"; then
CHECK_NOEXEC=check_noexec
fi
@@ -28264,7 +29662,7 @@ if test X"$enable_shared" != X"no"; then
EOF
-$as_echo "#define ENABLE_SUDO_PLUGIN_API 1" >>confdefs.h
+printf "%s\n" "#define ENABLE_SUDO_PLUGIN_API 1" >>confdefs.h
else
cat >>confdefs.h <<EOF
@@ -28307,7 +29705,7 @@ elif test X"$TMPFILES_D" != X""; then
fi
-ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers"
+ac_config_files="$ac_config_files Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers"
cat >confcache <<\_ACEOF
@@ -28337,8 +29735,8 @@ _ACEOF
case $ac_val in #(
*${as_nl}*)
case $ac_var in #(
- *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
-$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
+ *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5
+printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
esac
case $ac_var in #(
_ | IFS | as_nl) ;; #(
@@ -28368,15 +29766,15 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
/^ac_cv_env_/b end
t clear
:clear
- s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/
+ s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/
t end
s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
if test "x$cache_file" != "x/dev/null"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
-$as_echo "$as_me: updating cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
+printf "%s\n" "$as_me: updating cache $cache_file" >&6;}
if test ! -f "$cache_file" || test -h "$cache_file"; then
cat confcache >"$cache_file"
else
@@ -28390,8 +29788,8 @@ $as_echo "$as_me: updating cache $cache_file" >&6;}
fi
fi
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
-$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
+printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;}
fi
fi
rm -f confcache
@@ -28408,7 +29806,7 @@ U=
for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
# 1. Remove the extension, and $U if already installed.
ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
- ac_i=`$as_echo "$ac_i" | sed "$ac_script"`
+ ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"`
# 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
# will be set to the directory where LIBOBJS objects are built.
as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext"
@@ -28424,8 +29822,8 @@ LTLIBOBJS=$ac_ltlibobjs
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
-$as_echo "$as_me: creating $CONFIG_STATUS" >&6;}
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5
+printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;}
as_write_fail=0
cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1
#! $SHELL
@@ -28448,14 +29846,16 @@ cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1
# Be more Bourne compatible
DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
+as_nop=:
+if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1
+then :
emulate sh
NULLCMD=:
# Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
# is contrary to our usage. Disable this feature.
alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
-else
+else $as_nop
case `(set -o) 2>/dev/null` in #(
*posix*) :
set -o posix ;; #(
@@ -28465,46 +29865,46 @@ esac
fi
+
+# Reset variables that may have inherited troublesome values from
+# the environment.
+
+# IFS needs to be set, to space, tab, and newline, in precisely that order.
+# (If _AS_PATH_WALK were called with IFS unset, it would have the
+# side effect of setting IFS to empty, thus disabling word splitting.)
+# Quoting is to prevent editors from complaining about space-tab.
as_nl='
'
export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='print -r --'
- as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
- as_echo='printf %s\n'
- as_echo_n='printf %s'
-else
- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
- as_echo_n='/usr/ucb/echo -n'
- else
- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
- as_echo_n_body='eval
- arg=$1;
- case $arg in #(
- *"$as_nl"*)
- expr "X$arg" : "X\\(.*\\)$as_nl";
- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
- esac;
- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
- '
- export as_echo_n_body
- as_echo_n='sh -c $as_echo_n_body as_echo'
- fi
- export as_echo_body
- as_echo='sh -c $as_echo_body as_echo'
-fi
+IFS=" "" $as_nl"
+
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# Ensure predictable behavior from utilities with locale-dependent output.
+LC_ALL=C
+export LC_ALL
+LANGUAGE=C
+export LANGUAGE
+
+# We cannot yet rely on "unset" to work, but we need these variables
+# to be unset--not just set to an empty or harmless value--now, to
+# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct
+# also avoids known problems related to "unset" and subshell syntax
+# in other old shells (e.g. bash 2.01 and pdksh 5.2.14).
+for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH
+do eval test \${$as_var+y} \
+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
+done
+
+# Ensure that fds 0, 1, and 2 are open.
+if (exec 3>&0) 2>/dev/null; then :; else exec 0</dev/null; fi
+if (exec 3>&1) 2>/dev/null; then :; else exec 1>/dev/null; fi
+if (exec 3>&2) ; then :; else exec 2>/dev/null; fi
# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
+if ${PATH_SEPARATOR+false} :; then
PATH_SEPARATOR=:
(PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
(PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
@@ -28513,13 +29913,6 @@ if test "${PATH_SEPARATOR+set}" != set; then
fi
-# IFS
-# We need space, tab and new line, in precisely that order. Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" "" $as_nl"
-
# Find who we are. Look in the path if we contain no directory separator.
as_myself=
case $0 in #((
@@ -28528,8 +29921,12 @@ case $0 in #((
for as_dir in $PATH
do
IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+ case $as_dir in #(((
+ '') as_dir=./ ;;
+ */) ;;
+ *) as_dir=$as_dir/ ;;
+ esac
+ test -r "$as_dir$0" && as_myself=$as_dir$0 && break
done
IFS=$as_save_IFS
@@ -28541,30 +29938,10 @@ if test "x$as_myself" = x; then
as_myself=$0
fi
if test ! -f "$as_myself"; then
- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
exit 1
fi
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there. '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
# as_fn_error STATUS ERROR [LINENO LOG_FD]
@@ -28577,13 +29954,14 @@ as_fn_error ()
as_status=$1; test $as_status -eq 0 && as_status=1
if test "$4"; then
as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
+ printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
fi
- $as_echo "$as_me: error: $2" >&2
+ printf "%s\n" "$as_me: error: $2" >&2
as_fn_exit $as_status
} # as_fn_error
+
# as_fn_set_status STATUS
# -----------------------
# Set $? to STATUS, without forking.
@@ -28610,18 +29988,20 @@ as_fn_unset ()
{ eval $1=; unset $1;}
}
as_unset=as_fn_unset
+
# as_fn_append VAR VALUE
# ----------------------
# Append the text in VALUE to the end of the definition contained in VAR. Take
# advantage of any shell optimizations that allow amortized linear growth over
# repeated appends, instead of the typical quadratic growth present in naive
# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null
+then :
eval 'as_fn_append ()
{
eval $1+=\$2
}'
-else
+else $as_nop
as_fn_append ()
{
eval $1=\$$1\$2
@@ -28633,12 +30013,13 @@ fi # as_fn_append
# Perform arithmetic evaluation on the ARGs, and store the result in the
# global $as_val. Take advantage of shells that can avoid forks. The arguments
# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null
+then :
eval 'as_fn_arith ()
{
as_val=$(( $* ))
}'
-else
+else $as_nop
as_fn_arith ()
{
as_val=`expr "$@" || test $? -eq 1`
@@ -28669,7 +30050,7 @@ as_me=`$as_basename -- "$0" ||
$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
X"$0" : 'X\(//\)$' \| \
X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
+printf "%s\n" X/"$0" |
sed '/^.*\/\([^/][^/]*\)\/*$/{
s//\1/
q
@@ -28691,6 +30072,10 @@ as_cr_Letters=$as_cr_letters$as_cr_LETTERS
as_cr_digits='0123456789'
as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# Determine whether it's possible to make 'echo' print without a newline.
+# These variables are no longer used directly by Autoconf, but are AC_SUBSTed
+# for compatibility with existing Makefiles.
ECHO_C= ECHO_N= ECHO_T=
case `echo -n x` in #(((((
-n*)
@@ -28704,6 +30089,12 @@ case `echo -n x` in #(((((
ECHO_N='-n';;
esac
+# For backward compatibility with old third-party macros, we provide
+# the shell variables $as_echo and $as_echo_n. New code should use
+# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively.
+as_echo='printf %s\n'
+as_echo_n='printf %s'
+
rm -f conf$$ conf$$.exe conf$$.file
if test -d conf$$.dir; then
rm -f conf$$.dir/conf$$.file
@@ -28745,7 +30136,7 @@ as_fn_mkdir_p ()
as_dirs=
while :; do
case $as_dir in #(
- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
+ *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
*) as_qdir=$as_dir;;
esac
as_dirs="'$as_qdir' $as_dirs"
@@ -28754,7 +30145,7 @@ $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$as_dir" : 'X\(//\)[^/]' \| \
X"$as_dir" : 'X\(//\)$' \| \
X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
+printf "%s\n" X"$as_dir" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -28816,8 +30207,8 @@ 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 sudo $as_me 1.9.5p2, which was
-generated by GNU Autoconf 2.69. Invocation command line was
+This file was extended by sudo $as_me 1.9.6, which was
+generated by GNU Autoconf 2.71. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
@@ -28879,14 +30270,16 @@ $config_commands
Report bugs to <https://bugzilla.sudo.ws/>."
_ACEOF
+ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"`
+ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"`
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\
-sudo config.status 1.9.5p2
-configured by $0, generated by GNU Autoconf 2.69,
+sudo config.status 1.9.6
+configured by $0, generated by GNU Autoconf 2.71,
with options \\"\$ac_cs_config\\"
-Copyright (C) 2012 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
This config.status script is free software; the Free Software Foundation
gives unlimited permission to copy, distribute and modify it."
@@ -28924,15 +30317,15 @@ do
-recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
ac_cs_recheck=: ;;
--version | --versio | --versi | --vers | --ver | --ve | --v | -V )
- $as_echo "$ac_cs_version"; exit ;;
+ printf "%s\n" "$ac_cs_version"; exit ;;
--config | --confi | --conf | --con | --co | --c )
- $as_echo "$ac_cs_config"; exit ;;
+ printf "%s\n" "$ac_cs_config"; exit ;;
--debug | --debu | --deb | --de | --d | -d )
debug=: ;;
--file | --fil | --fi | --f )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
'') as_fn_error $? "missing file argument" ;;
esac
as_fn_append CONFIG_FILES " '$ac_optarg'"
@@ -28940,7 +30333,7 @@ do
--header | --heade | --head | --hea )
$ac_shift
case $ac_optarg in
- *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;;
esac
as_fn_append CONFIG_HEADERS " '$ac_optarg'"
ac_need_defaults=false;;
@@ -28949,7 +30342,7 @@ do
as_fn_error $? "ambiguous option: \`$1'
Try \`$0 --help' for more information.";;
--help | --hel | -h )
- $as_echo "$ac_cs_usage"; exit ;;
+ printf "%s\n" "$ac_cs_usage"; exit ;;
-q | -quiet | --quiet | --quie | --qui | --qu | --q \
| -silent | --silent | --silen | --sile | --sil | --si | --s)
ac_cs_silent=: ;;
@@ -28977,7 +30370,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
if \$ac_cs_recheck; then
set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
shift
- \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6
CONFIG_SHELL='$SHELL'
export CONFIG_SHELL
exec "\$@"
@@ -28991,7 +30384,7 @@ exec 5>>config.log
sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
## Running $as_me. ##
_ASBOX
- $as_echo "$ac_log"
+ printf "%s\n" "$ac_log"
} >&5
_ACEOF
@@ -29309,6 +30702,7 @@ do
"examples/sudo.conf") CONFIG_FILES="$CONFIG_FILES examples/sudo.conf" ;;
"include/Makefile") CONFIG_FILES="$CONFIG_FILES include/Makefile" ;;
"lib/eventlog/Makefile") CONFIG_FILES="$CONFIG_FILES lib/eventlog/Makefile" ;;
+ "lib/fuzzstub/Makefile") CONFIG_FILES="$CONFIG_FILES lib/fuzzstub/Makefile" ;;
"lib/iolog/Makefile") CONFIG_FILES="$CONFIG_FILES lib/iolog/Makefile" ;;
"lib/logsrv/Makefile") CONFIG_FILES="$CONFIG_FILES lib/logsrv/Makefile" ;;
"lib/util/Makefile") CONFIG_FILES="$CONFIG_FILES lib/util/Makefile" ;;
@@ -29334,9 +30728,9 @@ done
# We use the long form for the default assignment because of an extremely
# bizarre bug on SunOS 4.1.3.
if $ac_need_defaults; then
- test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
- test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
- test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+ test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files
+ test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers
+ test ${CONFIG_COMMANDS+y} || CONFIG_COMMANDS=$config_commands
fi
# Have a temporary directory for convenience. Make it in the build tree
@@ -29672,7 +31066,7 @@ do
esac ||
as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
- case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
+ case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
done
@@ -29680,17 +31074,17 @@ do
# use $as_me), people would be surprised to read:
# /* config.h. Generated by config.status. */
configure_input='Generated from '`
- $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
+ printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g'
`' by configure.'
if test x"$ac_file" != x-; then
configure_input="$ac_file. $configure_input"
- { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
-$as_echo "$as_me: creating $ac_file" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5
+printf "%s\n" "$as_me: creating $ac_file" >&6;}
fi
# Neutralize special characters interpreted by sed in replacement strings.
case $configure_input in #(
*\&* | *\|* | *\\* )
- ac_sed_conf_input=`$as_echo "$configure_input" |
+ ac_sed_conf_input=`printf "%s\n" "$configure_input" |
sed 's/[\\\\&|]/\\\\&/g'`;; #(
*) ac_sed_conf_input=$configure_input;;
esac
@@ -29707,7 +31101,7 @@ $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$ac_file" : 'X\(//\)[^/]' \| \
X"$ac_file" : 'X\(//\)$' \| \
X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$ac_file" |
+printf "%s\n" X"$ac_file" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
@@ -29731,9 +31125,9 @@ $as_echo X"$ac_file" |
case "$ac_dir" in
.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
*)
- ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'`
+ ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'`
# A ".." for each directory in $ac_dir_suffix.
- ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
+ ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'`
case $ac_top_builddir_sub in
"") ac_top_builddir_sub=. ac_top_build_prefix= ;;
*) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
@@ -29786,8 +31180,8 @@ ac_sed_dataroot='
case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in
*datarootdir*) ac_datarootdir_seen=yes;;
*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
-$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_datarootdir_hack='
@@ -29829,9 +31223,9 @@ test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
{ ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
{ ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
"$ac_tmp/out"`; test -z "$ac_out"; } &&
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
-$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
rm -f "$ac_tmp/stdin"
@@ -29847,27 +31241,27 @@ which seems to be undefined. Please make sure it is defined" >&2;}
#
if test x"$ac_file" != x-; then
{
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
} >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
-$as_echo "$as_me: $ac_file is unchanged" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
+printf "%s\n" "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
- $as_echo "/* $configure_input */" \
+ printf "%s\n" "/* $configure_input */" >&1 \
&& eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
;;
- :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
-$as_echo "$as_me: executing $ac_file commands" >&6;}
+ :C) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5
+printf "%s\n" "$as_me: executing $ac_file commands" >&6;}
;;
esac
@@ -30407,6 +31801,7 @@ _LT_EOF
esac
+
ltmain=$ac_aux_dir/ltmain.sh
@@ -30456,8 +31851,8 @@ if test "$no_create" != yes; then
$ac_cs_success || as_fn_exit 1
fi
if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
-$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5
+printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
fi
@@ -30465,15 +31860,15 @@ if test "$with_pam" = "yes"; then
case $host_os in
hpux*)
if test -f /usr/lib/security/libpam_hpsec.so.1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: You may wish to add the following line to /etc/pam.conf" >&5
-$as_echo "$as_me: You may wish to add the following line to /etc/pam.conf" >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: sudo session required libpam_hpsec.so.1 bypass_umask bypass_last_login" >&5
-$as_echo "$as_me: sudo session required libpam_hpsec.so.1 bypass_umask bypass_last_login" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: You may wish to add the following line to /etc/pam.conf" >&5
+printf "%s\n" "$as_me: You may wish to add the following line to /etc/pam.conf" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: sudo session required libpam_hpsec.so.1 bypass_umask bypass_last_login" >&5
+printf "%s\n" "$as_me: sudo session required libpam_hpsec.so.1 bypass_umask bypass_last_login" >&6;}
fi
;;
linux*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: You will need to customize examples/pam.conf and install it as /etc/pam.d/sudo" >&5
-$as_echo "$as_me: You will need to customize examples/pam.conf and install it as /etc/pam.d/sudo" >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: You will need to customize examples/pam.conf and install it as /etc/pam.d/sudo" >&5
+printf "%s\n" "$as_me: You will need to customize examples/pam.conf and install it as /etc/pam.d/sudo" >&6;}
;;
esac
fi
@@ -30486,10 +31881,10 @@ case "$rundir" in
;;
esac
if test $clear_rundir -eq 1; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Warning: the $rundir/ts directory must be cleared at boot time." >&5
-$as_echo "$as_me: Warning: the $rundir/ts directory must be cleared at boot time." >&6;}
- { $as_echo "$as_me:${as_lineno-$LINENO}: You may need to create a startup item to do this." >&5
-$as_echo "$as_me: You may need to create a startup item to do this." >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: Warning: the $rundir/ts directory must be cleared at boot time." >&5
+printf "%s\n" "$as_me: Warning: the $rundir/ts directory must be cleared at boot time." >&6;}
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: You may need to create a startup item to do this." >&5
+printf "%s\n" "$as_me: You may need to create a startup item to do this." >&6;}
fi
diff --git a/configure.ac b/configure.ac
index 00c634e3a..7a38db253 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,7 @@ dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
dnl
AC_PREREQ([2.59])
-AC_INIT([sudo], [1.9.5p2], [https://bugzilla.sudo.ws/], [sudo])
+AC_INIT([sudo], [1.9.6], [https://bugzilla.sudo.ws/], [sudo])
AC_CONFIG_HEADERS([config.h pathnames.h])
AC_CONFIG_SRCDIR([src/sudo.c])
dnl
@@ -122,6 +122,8 @@ AC_SUBST([LOGSRVD_SRC])
AC_SUBST([LOGSRVD_CONF])
AC_SUBST([LIBLOGSRV])
AC_SUBST([PPFILES])
+AC_SUBST([FUZZ_ENGINE])
+AC_SUBST([FUZZ_LD])
dnl
dnl Variables that get substituted in docs (not overridden by environment)
@@ -261,6 +263,8 @@ INIT_DIR=
RC_LINK=
COMPAT_EXP=
SIGNAME=
+FUZZ_ENGINE=
+FUZZ_LD='$(CC)'
dnl
dnl Other variables
dnl
@@ -1515,6 +1519,10 @@ AC_ARG_ENABLE(gcrypt,
fi
])
+AC_ARG_ENABLE(ssp,
+[AS_HELP_STRING([--disable-ssp], [Do not compile using the -fstack-protector option.])],
+[], [enable_ssp=yes])
+
AC_ARG_ENABLE(hardening,
[AS_HELP_STRING([--disable-hardening], [Do not use compiler/linker exploit mitigation options])],
[], [enable_hardening=yes])
@@ -1522,19 +1530,60 @@ AC_ARG_ENABLE(hardening,
AC_ARG_ENABLE(pie,
[AS_HELP_STRING([--enable-pie], [Build sudo as a position independent executable.])])
-AC_ARG_ENABLE(asan,
-[AS_HELP_STRING([--enable-asan], [Build sudo with address sanitizer support.])])
+AC_ARG_ENABLE(sanitizer,
+[AS_HELP_STRING([--enable-sanitizer], [Build sudo with sanitizer support.])], [
+if test X"$enable_sanitizer" = X"yes"; then
+ enable_sanitizer="-fsanitize=address,undefined"
+fi
+], [enable_sanitizer=no])
+
+AC_ARG_ENABLE(fuzzer,
+[AS_HELP_STRING([--enable-fuzzer], [Build sudo with LLVM libFuzzer support.])],
+[], [enable_fuzzer=no])
+
+AC_ARG_ENABLE(fuzzer-engine,
+[AS_HELP_STRING([--enable-fuzzer-engine], [Link fuzz targets with the specified fuzzer engine instead of the default.])],
+[ case "$enableval" in
+ yes) AC_MSG_ERROR(["must give --enable-fuzzer-engine an argument."])
+ ;;
+ no) ;;
+ *) FUZZ_ENGINE="$enableval"
+ ;;
+ esac
+])
+
+AC_ARG_ENABLE(fuzzer-linker,
+[AS_HELP_STRING([--enable-fuzzer-linker], [Use the specified linker when building fuzz targets instead of the default C compiler.])],
+[ case "$enableval" in
+ yes) AC_MSG_ERROR(["must give --enable-fuzzer-linker an argument."])
+ ;;
+ no) ;;
+ *) FUZZ_LD="$enableval"
+ ;;
+ esac
+])
+
+AC_ARG_ENABLE(leaks,
+[AS_HELP_STRING([--disable-leaks], [Prevent some harmless memory leaks.])],
+[ case "$enableval" in
+ yes) ;;
+ no) AC_DEFINE(NO_LEAKS)
+ ;;
+ *) AC_MSG_WARN([Ignoring unknown argument to --disable-leaks: $enableval])
+ ;;
+ esac
+])
AC_ARG_ENABLE(poll,
[AS_HELP_STRING([--disable-poll], [Use select() instead of poll().])])
AC_ARG_ENABLE(admin-flag,
-[AS_HELP_STRING([--enable-admin-flag], [Whether to create a Ubuntu-style admin flag file])],
+[AS_HELP_STRING([--enable-admin-flag[[=PATH]]], [Whether to create a Ubuntu-style admin flag file])],
[ case "$enableval" in
- yes) AC_DEFINE(USE_ADMIN_FLAG)
+ yes) SUDO_DEFINE_UNQUOTED(_PATH_SUDO_ADMIN_FLAG, "~/.sudo_as_admin_successful")
;;
no) ;;
- *) AC_MSG_WARN([Ignoring unknown argument to --enable-admin-flag: $enableval])
+ *) SUDO_DEFINE_UNQUOTED(_PATH_SUDO_ADMIN_FLAG, "$enableval")
;;
esac
])
@@ -1846,6 +1895,11 @@ case "$host" in
# LD_PRELOAD is space-delimited
RTLD_PRELOAD_DELIM=" "
+ # illumos has a broken fmemopen(3)
+ if test X"`uname -o 2>/dev/null`" = X"illumos"; then
+ : ${ac_cv_func_fmemopen='no'}
+ fi
+
# Solaris-specific initialization
OS_INIT=os_init_solaris
SUDO_OBJS="${SUDO_OBJS} solaris.o"
@@ -1897,14 +1951,20 @@ case "$host" in
# strnlen/strndup may be broken on AIX < 6 depending
# on the libc version, use our own.
if test $OSMAJOR -lt 6; then
- ac_cv_func_strnlen=no
+ : ${ac_cv_func_strnlen='no'}
+ fi
+
+ # fmemopen(3) may be broken on AIX < 7.1 depending
+ # on the libc version.
+ if test $OSMAJOR -lt 7; then
+ : ${ac_cv_func_fmemopen='no'}
fi
# getdelim() may or may not be present on AIX <= 6.1.
# bos610 is missing getdelim but bos61J has it.
if test "$enable_package_build" = "yes"; then
if test $OSMAJOR -le 6; then
- ac_cv_func_getdelim=no
+ : ${ac_cv_func_getdelim='no'}
fi
fi
@@ -1912,7 +1972,7 @@ case "$host" in
# bos710 is missing memset_s but bos71L has it.
if test "$enable_package_build" = "yes"; then
if test $OSMAJOR -le 7; then
- ac_cv_func_memset_s=no
+ : ${ac_cv_func_memset_s='no'}
fi
fi
@@ -2292,9 +2352,6 @@ case "$host" in
# Undocumented API that dynamically allocates the groups.
AC_CHECK_FUNCS([getgrouplist_2], [AC_CHECK_DECLS([getgrouplist_2])])
- # macOS >= 10.6 getgroups(2) can support more than > 16 groups
- AC_DEFINE([_DARWIN_UNLIMITED_GETGROUPS])
-
# We need to force a flat namespace to make libc
# symbol hooking work like it does on ELF.
AX_CHECK_LINK_FLAG([-Wl,-force_flat_namespace], [AX_APPEND_FLAG([-Wl,-force_flat_namespace], [SUDO_LDFLAGS])])
@@ -2431,7 +2488,6 @@ fi
dnl
dnl C compiler checks (to be done after os checks)
dnl
-AC_PROG_CC_STDC
AC_C_CONST
AC_C_INLINE
AC_C_VOLATILE
@@ -2525,7 +2581,7 @@ SUDO_MAILDIR
if test ${with_logincap-'no'} != "no"; then
AC_CHECK_HEADERS([login_cap.h], [LOGINCAP_USAGE='[[-c class]] '; LCMAN=1
case "$OS" in
- freebsd|netbsd)
+ freebsd*|netbsd*)
SUDO_LIBS="${SUDO_LIBS} -lutil"
SUDOERS_LIBS="${SUDOERS_LIBS} -lutil"
;;
@@ -2641,7 +2697,7 @@ dnl
dnl Function checks
dnl
AC_FUNC_GETGROUPS
-AC_CHECK_FUNCS_ONCE([fexecve killpg nl_langinfo faccessat wordexp getauxval fseeko])
+AC_CHECK_FUNCS_ONCE([fexecve fmemopen killpg nl_langinfo faccessat wordexp getauxval fseeko])
case "$host_os" in
hpux*)
if test X"$ac_cv_func_pread" = X"yes"; then
@@ -3470,7 +3526,7 @@ AC_INCLUDES_DEFAULT
dnl
dnl Check for incomplete limits.h and missing SIZE_MAX.
dnl
-AC_CHECK_DECLS([LLONG_MAX, LLONG_MIN, ULLONG_MAX, PATH_MAX], [], [], [
+AC_CHECK_DECLS([LLONG_MAX, LLONG_MIN, ULLONG_MAX, PATH_MAX, SSIZE_MAX], [], [], [
#include <sys/types.h>
#include <limits.h>
])
@@ -3796,7 +3852,9 @@ if test ${with_kerb5-'no'} != "no"; then
if test -n "$KRB5CONFIG"; then
AC_DEFINE(HAVE_KERB5)
AUTH_OBJS="$AUTH_OBJS kerb5.lo"
- AX_APPEND_FLAG([`krb5-config --cflags`], [CPPFLAGS])
+ for f in `krb5-config --cflags`; do
+ AX_APPEND_FLAG([$f], [CPPFLAGS])
+ done
SUDOERS_LIBS="$SUDOERS_LIBS `krb5-config --libs`"
dnl
dnl Try to determine whether we have Heimdal or MIT Kerberos
@@ -4042,12 +4100,36 @@ if test ${with_passwd-'no'} != "no"; then
_LIBS="$LIBS"
LIBS="$LIBS $shadow_libs"
found=no
- AC_CHECK_FUNCS([$shadow_funcs], [found=yes])
- if test "$found" = "yes"; then
- case "$shadow_funcs" in
- *getprpwnam*) SECUREWARE=1;;
- esac
- else
+ for func in $shadow_funcs; do
+ AC_CHECK_FUNC([$func], [
+ dnl Enumerate shadow functions instead of using:
+ dnl AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$func]))
+ dnl for autoheader's sake and to catch template omissions.
+ case "$func" in
+ dispcrypt)
+ AC_DEFINE(HAVE_DISPCRYPT)
+ ;;
+ getprpwnam)
+ AC_DEFINE(HAVE_GETPRPWNAM)
+ SECUREWARE=1
+ ;;
+ getpwnam_shadow)
+ AC_DEFINE(HAVE_GETPWNAM_SHADOW)
+ ;;
+ getspnam)
+ AC_DEFINE(HAVE_GETSPNAM)
+ ;;
+ iscomsec)
+ AC_DEFINE(HAVE_ISCOMSEC)
+ ;;
+ *)
+ AC_MSG_ERROR([unhandled shadow password function $func])
+ ;;
+ esac
+ found=yes
+ ])
+ done
+ if test "$found" = "no"; then
shadow_libs=
fi
CHECKSHADOW=false
@@ -4238,7 +4320,8 @@ case "$lt_cv_dlopen" in
AC_DEFINE(STATIC_SUDOERS_PLUGIN)
SUDO_OBJS="${SUDO_OBJS} preload.o"
STATIC_SUDOERS="\$(top_builddir)/plugins/sudoers/sudoers.la"
- AX_APPEND_FLAG([--tag=disable-shared -static], [SUDOERS_LDFLAGS])
+ AX_APPEND_FLAG([--tag=disable-shared], [SUDOERS_LDFLAGS])
+ AX_APPEND_FLAG([-static], [SUDOERS_LDFLAGS])
LT_STATIC=""
else
LT_STATIC="--tag=disable-static"
@@ -4250,7 +4333,8 @@ case "$lt_cv_dlopen" in
AC_DEFINE(STATIC_SUDOERS_PLUGIN)
SUDO_OBJS="${SUDO_OBJS} preload.o"
STATIC_SUDOERS="\$(top_builddir)/plugins/sudoers/sudoers.la"
- AX_APPEND_FLAG([--tag=disable-shared -static], [SUDOERS_LDFLAGS])
+ AX_APPEND_FLAG([--tag=disable-shared], [SUDOERS_LDFLAGS])
+ AX_APPEND_FLAG([-static], [SUDOERS_LDFLAGS])
LT_STATIC=""
else
LT_STATIC="--tag=disable-static"
@@ -4365,7 +4449,7 @@ dnl Otherwise, LD_LIBRARY_PATH does not work when running the tests.
dnl We don't do this on NetBSD where RPATH already supports LD_LIBRARY_PATH.
dnl
case "$OS" in
- netbsd)
+ netbsd*)
;;
*)
AX_CHECK_LINK_FLAG([-Wl,--enable-new-dtags], [AX_APPEND_FLAG([-Wl,--enable-new-dtags], [LDFLAGS])])
@@ -4510,21 +4594,41 @@ EOF
fi
dnl
-dnl Check for -fsanitize=address,undefined support
+dnl Check for -fsanitize support
dnl This test relies on AC_LANG_WERROR
dnl
-if test "$enable_asan" = "yes"; then
- AX_CHECK_COMPILE_FLAG([-fsanitize=address -fsanitize=undefined], [
- AX_CHECK_LINK_FLAG([-fsanitize=address -fsanitize=undefined], [
- ASAN_LDFLAGS="-Wc,-fsanitize=address -Wc,-fsanitize=undefined"
- ASAN_CFLAGS="-fsanitize=address -fsanitize=undefined"
- AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer], [
- CFLAGS="$CFLAGS -fno-omit-frame-pointer"
- ])
- AC_DEFINE(NO_LEAKS)
+if test "$enable_sanitizer" != "no"; then
+ AX_CHECK_COMPILE_FLAG([$enable_sanitizer], [
+ AX_APPEND_FLAG([$enable_sanitizer], [ASAN_CFLAGS])
+ AX_APPEND_FLAG([$enable_sanitizer], [ASAN_LDFLAGS])
+ AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer], [
+ AX_APPEND_FLAG([-fno-omit-frame-pointer], [CFLAGS])
])
+ AC_DEFINE(NO_LEAKS)
+ ], [
+ AC_MSG_ERROR([$CC does not support the $enable_sanitizer flag])
])
fi
+if test "$enable_fuzzer" = "yes"; then
+ AX_CHECK_COMPILE_FLAG([-fsanitize=fuzzer-no-link], [
+ AX_APPEND_FLAG([-fsanitize=fuzzer-no-link], [ASAN_CFLAGS])
+ AX_APPEND_FLAG([-fsanitize=fuzzer-no-link], [ASAN_LDFLAGS])
+ if test -z "$FUZZ_ENGINE"; then
+ FUZZ_ENGINE="-fsanitize=fuzzer"
+ fi
+ AX_CHECK_COMPILE_FLAG([-fno-omit-frame-pointer], [
+ AX_APPEND_FLAG([-fno-omit-frame-pointer], [CFLAGS])
+ ])
+ # Use CFLAGS, not CPPFLAGS to match oss-fuzz behavior
+ AX_APPEND_FLAG([-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION], [CFLAGS])
+ AC_DEFINE(NO_LEAKS)
+ ], [
+ AC_MSG_ERROR([$CC does not support the -fsanitize=fuzzer-no-link flag])
+ ])
+else
+ # Not using compiler fuzzing support, link with stub library.
+ FUZZ_ENGINE='$(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la'
+fi
dnl
dnl Check for PIE executable support if using gcc.
@@ -4581,7 +4685,7 @@ dnl
dnl Check for -fstack-protector and -z relro support
dnl This test relies on AC_LANG_WERROR
dnl
-if test "$enable_hardening" != "no"; then
+if test "$enable_hardening" != "no" && test "$enable_ssp" != "no"; then
AC_CACHE_CHECK([for compiler stack protector support],
[sudo_cv_var_stack_protector],
[
@@ -4632,6 +4736,9 @@ if test "$enable_hardening" != "no"; then
fi
AX_CHECK_LINK_FLAG([-Wl,-z,relro], [AX_APPEND_FLAG([-Wl,-z,relro], [LDFLAGS])])
fi
+if test "$enable_hardening" != "no"; then
+ AX_CHECK_LINK_FLAG([-Wl,-z,relro], [AX_APPEND_FLAG([-Wl,-z,relro], [LDFLAGS])])
+fi
dnl
dnl Use passwd auth module?
@@ -4682,7 +4789,7 @@ if test -n "$GCC"; then
dnl
dnl Default warnings for development use.
dnl
- CFLAGS="${CFLAGS} -Wall -Wsign-compare -Wpointer-arith"
+ CFLAGS="${CFLAGS} -Wall -Wsign-compare -Wpointer-arith -Wno-unknown-pragmas"
AX_CHECK_COMPILE_FLAG([-Wshadow], [CFLAGS="$CFLAGS -Wshadow"])
dnl
dnl The fallthrough attribute is supported by gcc 7.0 and clang 10.
@@ -4772,8 +4879,8 @@ if test X"$with_noexec" != X"no"; then
PROGS="${PROGS} sudo_noexec.la"
INSTALL_NOEXEC="install-noexec"
- # Can't use asan with LD_PRELOAD
- if test "$enable_asan" != "yes"; then
+ # Can't use sanitizers with LD_PRELOAD
+ if test "$enable_sanitizer" != "yes"; then
CHECK_NOEXEC=check_noexec
fi
@@ -4834,7 +4941,7 @@ elif test X"$TMPFILES_D" != X""; then
AC_CONFIG_FILES([etc/init.d/sudo.conf])
fi
-AC_CONFIG_FILES([Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers])
+AC_CONFIG_FILES([Makefile doc/Makefile examples/Makefile examples/sudo.conf include/Makefile lib/eventlog/Makefile lib/fuzzstub/Makefile lib/iolog/Makefile lib/logsrv/Makefile lib/util/Makefile lib/util/util.exp logsrvd/Makefile src/sudo_usage.h src/Makefile plugins/audit_json/Makefile plugins/sample/Makefile plugins/group_file/Makefile plugins/sample_approval/Makefile plugins/system_group/Makefile plugins/sudoers/Makefile plugins/sudoers/sudoers])
AC_OUTPUT
@@ -4954,7 +5061,6 @@ AH_TEMPLATE(SHELL_SETS_HOME, [Define to 1 if you want sudo to set $HOME in shell
AH_TEMPLATE(STATIC_SUDOERS_PLUGIN, [Define to 1 to compile the sudoers plugin statically into the sudo binary.])
AH_TEMPLATE(STUB_LOAD_INTERFACES, [Define to 1 if the code in interfaces.c does not compile for you.])
AH_TEMPLATE(UMASK_OVERRIDE, [Define to 1 to use the umask specified in sudoers even when it is less restrictive than the invoking user's.])
-AH_TEMPLATE(USE_ADMIN_FLAG, [Define to 1 if you want to create ~/.sudo_as_admin_successful if the user is in the admin group the first time they run sudo.])
AH_TEMPLATE(USE_INSULTS, [Define to 1 if you want to insult the user for entering an incorrect password.])
AH_TEMPLATE(USE_STOW, [Define to 1 if you use GNU stow packaging.])
AH_TEMPLATE(WITHOUT_PASSWD, [Define to avoid using the passwd/shadow file for authentication.])
diff --git a/doc/Makefile.in b/doc/Makefile.in
index e5e89de36..9cf297dbd 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -378,6 +378,8 @@ install-doc: install-dirs
install-plugin:
+install-fuzzer:
+
uninstall:
-rm -rf $(DESTDIR)$(docdir)
-rm -f $(DESTDIR)$(mandirexe)/cvtsudoers.1 \
@@ -393,7 +395,7 @@ uninstall:
$(DESTDIR)$(mandirform)/sudo_logsrv.proto.$(mansectform) \
$(DESTDIR)$(mandirform)/sudo_logsrvd.conf.$(mansectform) \
$(DESTDIR)$(mandirform)/sudoers.$(mansectform) \
- $(DESTDIR)$(mandirform)/sudoers_timestamp.$(mansectform)
+ $(DESTDIR)$(mandirform)/sudoers_timestamp.$(mansectform) \
$(DESTDIR)$(mandirform)/sudoers.ldap.$(mansectform)
splint:
@@ -404,6 +406,8 @@ pvs-log-files:
pvs-studio:
+fuzz:
+
check:
clean:
@@ -419,3 +423,5 @@ clobber: distclean
realclean: distclean
cleandir: distclean
+
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
diff --git a/doc/sudo.conf.man.in b/doc/sudo.conf.man.in
index 36a3c00b6..07b66e8da 100644
--- a/doc/sudo.conf.man.in
+++ b/doc/sudo.conf.man.in
@@ -2,7 +2,7 @@
.\"
.\" SPDX-License-Identifier: ISC
.\"
-.\" Copyright (c) 2010-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+.\" Copyright (c) 2010-2021 Todd C. Miller <Todd.Miller@sudo.ws>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
@@ -17,7 +17,7 @@
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.nr SL @SEMAN@
-.TH "SUDO.CONF" "@mansectform@" "December 5, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
+.TH "SUDO.CONF" "@mansectform@" "March 2, 2021" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
.nh
.if n .ad l
.SH "NAME"
@@ -470,12 +470,15 @@ Currently,
\fBsudo\fR
supports efficient group queries on AIX,
BSD,
-HP-UX, Linux and Solaris.
+HP-UX, Linux, macOS and Solaris.
+This is the default behavior on macOS in
+\fBsudo\fR
+1.9.6 and higher.
.TP 10n
adaptive
Only query the group database if the static group list returned
by the kernel has the maximum number of entries.
-This is the default behavior in
+This is the default behavior on systems other than macOS in
\fBsudo\fR
1.8.7 and higher.
.PP
@@ -496,7 +499,7 @@ version 1.8.7 and higher.
.TP 10n
max_groups
The maximum number of user groups to retrieve from the group database.
-Values less than one will be ignored.
+Values less than one or larger than 1024 will be ignored.
This setting is only used when querying the group database directly.
It is intended to be used on systems where it is not possible to detect
when the array to be populated with group entries is not sufficiently large.
diff --git a/doc/sudo.conf.mdoc.in b/doc/sudo.conf.mdoc.in
index 2d572e5ee..3bd203dce 100644
--- a/doc/sudo.conf.mdoc.in
+++ b/doc/sudo.conf.mdoc.in
@@ -1,7 +1,7 @@
.\"
.\" SPDX-License-Identifier: ISC
.\"
-.\" Copyright (c) 2010-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+.\" Copyright (c) 2010-2021 Todd C. Miller <Todd.Miller@sudo.ws>
.\"
.\" Permission to use, copy, modify, and distribute this software for any
.\" purpose with or without fee is hereby granted, provided that the above
@@ -16,7 +16,7 @@
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
.\"
.nr SL @SEMAN@
-.Dd December 5, 2020
+.Dd March 2, 2021
.Dt SUDO.CONF @mansectform@
.Os Sudo @PACKAGE_VERSION@
.Sh NAME
@@ -432,11 +432,14 @@ Currently,
.Nm sudo
supports efficient group queries on AIX,
.Bx ,
-HP-UX, Linux and Solaris.
+HP-UX, Linux, macOS and Solaris.
+This is the default behavior on macOS in
+.Nm sudo
+1.9.6 and higher.
.It adaptive
Only query the group database if the static group list returned
by the kernel has the maximum number of entries.
-This is the default behavior in
+This is the default behavior on systems other than macOS in
.Nm sudo
1.8.7 and higher.
.El
@@ -453,7 +456,7 @@ This setting is only available in
version 1.8.7 and higher.
.It max_groups
The maximum number of user groups to retrieve from the group database.
-Values less than one will be ignored.
+Values less than one or larger than 1024 will be ignored.
This setting is only used when querying the group database directly.
It is intended to be used on systems where it is not possible to detect
when the array to be populated with group entries is not sufficiently large.
diff --git a/doc/sudo.man.in b/doc/sudo.man.in
index 46dcc679c..f777d95db 100644
--- a/doc/sudo.man.in
+++ b/doc/sudo.man.in
@@ -236,7 +236,7 @@ authentication.
.\}
.TP 12n
\fB\-B\fR, \fB\--bell\fR
-Ring the bell as part of the password promp when a terminal is present.
+Ring the bell as part of the password prompt when a terminal is present.
This option has no effect if an askpass program is used.
.TP 12n
\fB\-b\fR, \fB\--background\fR
diff --git a/doc/sudo.mdoc.in b/doc/sudo.mdoc.in
index fd2d20518..0a3d457ad 100644
--- a/doc/sudo.mdoc.in
+++ b/doc/sudo.mdoc.in
@@ -233,7 +233,7 @@ This option is only available on systems that support
authentication.
.\}
.It Fl B , -bell
-Ring the bell as part of the password promp when a terminal is present.
+Ring the bell as part of the password prompt when a terminal is present.
This option has no effect if an askpass program is used.
.It Fl b , -background
Run the given command in the background.
diff --git a/doc/sudoers.man.in b/doc/sudoers.man.in
index 6bd08d9c0..73d769212 100644
--- a/doc/sudoers.man.in
+++ b/doc/sudoers.man.in
@@ -25,7 +25,7 @@
.nr BA @BAMAN@
.nr LC @LCMAN@
.nr PS @PSMAN@
-.TH "SUDOERS" "@mansectform@" "January 8, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
+.TH "SUDOERS" "@mansectform@" "March 3, 2020" "Sudo @PACKAGE_VERSION@" "File Formats Manual"
.nh
.if n .ad l
.SH "NAME"
@@ -1111,6 +1111,21 @@ when they contain multiple words.
Special characters may be escaped with a backslash
(\(oq\e\(cq).
.PP
+To include a literal backslash character in a command line argument
+you must escape the backslash twice.
+For example, to match
+\(oq\en\(cq
+as part of a command line argument, you must use
+\(oq\e\e\e\en\(cq
+in the
+\fIsudoers\fR
+file.
+This is due to there being two levels of escaping, one in the
+\fIsudoers\fR
+parser itself and another when command line arguments are matched by the
+fnmatch(3)
+function.
+.PP
Lists have two additional assignment operators,
\fR+=\fR
and
@@ -4265,6 +4280,24 @@ is built with SELinux support.
.PP
\fBStrings that can be used in a boolean context\fR:
.TP 14n
+admin_flag
+The
+\fIadmin_flag\fR
+option specifies the path to a file that is created the first time
+a user that is a member of the
+\fIsudo\fR
+or
+\fIadmin\fR
+groups runs
+\fBsudo\fR.
+Only available if
+\fBsudo\fR
+is configured with the
+\fR--enable-admin-flag\fR
+option.
+The default value is
+\fR~/.sudo_as_admin_successful\fR.
+.TP 14n
env_file
The
\fIenv_file\fR
diff --git a/doc/sudoers.mdoc.in b/doc/sudoers.mdoc.in
index c14855b49..644fb8473 100644
--- a/doc/sudoers.mdoc.in
+++ b/doc/sudoers.mdoc.in
@@ -24,7 +24,7 @@
.nr BA @BAMAN@
.nr LC @LCMAN@
.nr PS @PSMAN@
-.Dd January 8, 2020
+.Dd March 3, 2020
.Dt SUDOERS @mansectform@
.Os Sudo @PACKAGE_VERSION@
.Sh NAME
@@ -1065,6 +1065,21 @@ when they contain multiple words.
Special characters may be escaped with a backslash
.Pq Ql \e .
.Pp
+To include a literal backslash character in a command line argument
+you must escape the backslash twice.
+For example, to match
+.Ql \en
+as part of a command line argument, you must use
+.Ql \e\e\e\en
+in the
+.Em sudoers
+file.
+This is due to there being two levels of escaping, one in the
+.Em sudoers
+parser itself and another when command line arguments are matched by the
+.Xr fnmatch 3
+function.
+.Pp
Lists have two additional assignment operators,
.Li +=
and
@@ -4003,6 +4018,23 @@ is built with SELinux support.
.Pp
.Sy Strings that can be used in a boolean context :
.Bl -tag -width 12n
+.It admin_flag
+The
+.Em admin_flag
+option specifies the path to a file that is created the first time
+a user that is a member of the
+.Em sudo
+or
+.Em admin
+groups runs
+.Nm sudo .
+Only available if
+.Nm sudo
+is configured with the
+.Li --enable-admin-flag
+option.
+The default value is
+.Li ~/.sudo_as_admin_successful .
.It env_file
The
.Em env_file
diff --git a/examples/Makefile.in b/examples/Makefile.in
index b89f3be41..ad36673e9 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -91,6 +91,8 @@ install-doc: install-dirs
install-plugin:
+install-fuzzer:
+
uninstall:
-rm -rf $(DESTDIR)$(exampledir)
@@ -102,6 +104,8 @@ pvs-log-files:
pvs-studio:
+fuzz:
+
check:
clean:
@@ -109,10 +113,12 @@ clean:
mostlyclean: clean
distclean: clean
- -rm -rf Makefile
+ -rm -rf Makefile sudo.conf
clobber: distclean
realclean: distclean
cleandir: distclean
+
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
diff --git a/include/Makefile.in b/include/Makefile.in
index 7739e39ef..bb7d96689 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -77,6 +77,8 @@ install-includes: install-dirs
install-plugin:
+install-fuzzer:
+
uninstall:
-rm -f $(DESTDIR)$(includedir)/sudo_plugin.h
@@ -88,6 +90,8 @@ pvs-log-files:
pvs-studio:
+fuzz:
+
check:
clean:
@@ -102,3 +106,5 @@ clobber: distclean
realclean: distclean
cleandir: distclean
+
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
diff --git a/include/sudo_compat.h b/include/sudo_compat.h
index 15aeeca70..4ee5b6818 100644
--- a/include/sudo_compat.h
+++ b/include/sudo_compat.h
@@ -134,6 +134,10 @@
# endif
#endif
+#if defined(HAVE_DECL_SSIZE_MAX) && !HAVE_DECL_SSIZE_MAX
+# define SIZE_MAX LONG_MAX
+#endif
+
#if defined(HAVE_DECL_PATH_MAX) && !HAVE_DECL_PATH_MAX
# if defined(HAVE_DECL__POSIX_PATH_MAX) && HAVE_DECL__POSIX_PATH_MAX
# define PATH_MAX _POSIX_PATH_MAX
@@ -142,48 +146,12 @@
# endif
#endif
-/*
- * POSIX versions for those without...
- */
-#ifndef _S_IFMT
-# define _S_IFMT S_IFMT
-#endif /* _S_IFMT */
-#ifndef _S_IFREG
-# define _S_IFREG S_IFREG
-#endif /* _S_IFREG */
-#ifndef _S_IFDIR
-# define _S_IFDIR S_IFDIR
-#endif /* _S_IFDIR */
-#ifndef _S_IFLNK
-# define _S_IFLNK S_IFLNK
-#endif /* _S_IFLNK */
-#ifndef _S_IFIFO
-# define _S_IFIFO S_IFIFO
-#endif /* _S_IFIFO */
-#ifndef S_ISREG
-# define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
-#endif /* S_ISREG */
-#ifndef S_ISDIR
-# define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
-#endif /* S_ISDIR */
-#ifndef S_ISLNK
-# define S_ISLNK(m) (((m) & _S_IFMT) == _S_IFLNK)
-#endif /* S_ISLNK */
-#ifndef S_ISFIFO
-# define S_ISFIFO(m) (((m) & _S_IFMT) == _S_IFIFO)
-#endif /* S_ISLNK */
-#ifndef S_ISTXT
-# define S_ISTXT 0001000
-#endif /* S_ISTXT */
-
-/*
- * ACCESSPERMS (00777) and ALLPERMS (07777) are handy BSDisms
- */
+/* ACCESSPERMS and ALLPERMS are handy BSDisms. */
#ifndef ACCESSPERMS
-# define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
+# define ACCESSPERMS 00777
#endif /* ACCESSPERMS */
#ifndef ALLPERMS
-# define ALLPERMS (S_ISUID|S_ISGID|S_ISTXT|S_IRWXU|S_IRWXG|S_IRWXO)
+# define ALLPERMS 07777
#endif /* ALLPERMS */
/* For futimens() and utimensat() emulation. */
diff --git a/include/sudo_eventlog.h b/include/sudo_eventlog.h
index 127ee5dd8..49153e173 100644
--- a/include/sudo_eventlog.h
+++ b/include/sudo_eventlog.h
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2020-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -66,7 +66,7 @@ enum eventlog_format {
#define EVENTLOG_INDENT " "
/*
- * Event log config, used with eventlog_setconf()
+ * Event log config, used with eventlog_getconf()
*/
struct eventlog_config {
int type;
@@ -101,6 +101,7 @@ struct eventlog {
char *runcwd;
char *rungroup;
char *runuser;
+ char *peeraddr;
char *submithost;
char *submituser;
char *submitgroup;
@@ -144,5 +145,6 @@ void eventlog_set_mailto(const char *to_addr);
void eventlog_set_mailsub(const char *subject);
void eventlog_set_open_log(FILE *(*fn)(int type, const char *));
void eventlog_set_close_log(void (*fn)(int type, FILE *));
+const struct eventlog_config *eventlog_getconf(void);
#endif /* SUDO_EVENTLOG_H */
diff --git a/include/sudo_iolog.h b/include/sudo_iolog.h
index cbcd227e9..16e0c3a97 100644
--- a/include/sudo_iolog.h
+++ b/include/sudo_iolog.h
@@ -101,6 +101,7 @@ char *iolog_parse_delay(const char *cp, struct timespec *delay, const char *deci
int iolog_read_timing_record(struct iolog_file *iol, struct timing_closure *timing);
struct eventlog *iolog_parse_loginfo(int dfd, const char *iolog_dir);
bool iolog_parse_loginfo_json(FILE *fp, const char *iolog_dir, struct eventlog *evlog);
+bool iolog_parse_loginfo_legacy(FILE *fp, const char *iolog_dir, struct eventlog *evlog);
void iolog_adjust_delay(struct timespec *delay, struct timespec *max_delay, double scale_factor);
/* iolog_fileio.c */
@@ -112,7 +113,6 @@ bool iolog_mkdtemp(char *path);
bool iolog_mkpath(char *path);
bool iolog_nextid(char *iolog_dir, char sessid[7]);
bool iolog_open(struct iolog_file *iol, int dfd, int iofd, const char *mode);
-bool iolog_rename(const char *from, const char *to);
bool iolog_write_info_file(int dfd, struct eventlog *evlog);
char *iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes, const char **errsttr);
const char *iolog_fd_to_name(int iofd);
@@ -122,6 +122,13 @@ ssize_t iolog_read(struct iolog_file *iol, void *buf, size_t nbytes, const char
ssize_t iolog_write(struct iolog_file *iol, const void *buf, size_t len, const char **errstr);
void iolog_clearerr(struct iolog_file *iol);
void iolog_rewind(struct iolog_file *iol);
+unsigned int iolog_get_maxseq(void);
+uid_t iolog_get_uid(void);
+gid_t iolog_get_gid(void);
+mode_t iolog_get_file_mode(void);
+mode_t iolog_get_dir_mode(void);
+bool iolog_get_compress(void);
+bool iolog_get_flush(void);
void iolog_set_compress(bool);
void iolog_set_defaults(void);
void iolog_set_flush(bool);
@@ -129,5 +136,7 @@ void iolog_set_gid(gid_t gid);
void iolog_set_maxseq(unsigned int maxval);
void iolog_set_mode(mode_t mode);
void iolog_set_owner(uid_t uid, uid_t gid);
+bool iolog_swapids(bool restore);
+bool iolog_mkdirs(char *path);
#endif /* SUDO_IOLOG_H */
diff --git a/include/sudo_util.h b/include/sudo_util.h
index eb4c81c60..b9991dd1c 100644
--- a/include/sudo_util.h
+++ b/include/sudo_util.h
@@ -188,6 +188,10 @@ sudo_dso_public int aix_setauthdb_v1(char *user);
sudo_dso_public int aix_setauthdb_v2(char *user, char *registry);
#define aix_setauthdb(_a, _b) aix_setauthdb_v2((_a), (_b))
+/* basename.c */
+sudo_dso_public char *sudo_basename_v1(const char *filename);
+#define sudo_basename(_a) sudo_basename_v1(_a)
+
/* gethostname.c */
sudo_dso_public char *sudo_gethostname_v1(void);
#define sudo_gethostname() sudo_gethostname_v1()
diff --git a/lib/eventlog/Makefile.in b/lib/eventlog/Makefile.in
index 134a5d222..7db39ee76 100644
--- a/lib/eventlog/Makefile.in
+++ b/lib/eventlog/Makefile.in
@@ -82,14 +82,12 @@ SHELL = @SHELL@
TEST_PROGS = check_wrap
-LIBEVENTLOG_OBJS = eventlog.lo logwrap.lo
+LIBEVENTLOG_OBJS = eventlog.lo eventlog_conf.lo eventlog_free.lo logwrap.lo
IOBJS = $(LIBEVENTLOG_OBJS:.lo=.i)
POBJS = $(IOBJS:.i=.plog)
-GENERATED = log_server.pb-c.h log_server.pb-c.c
-
CHECK_WRAP_OBJS = check_wrap.lo logwrap.lo
all: libsudo_eventlog.la
@@ -118,21 +116,7 @@ Makefile: $(srcdir)/Makefile.in
.i.plog:
ifile=$<; rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $${ifile%i}c --i-file $< --output-file $@
-$(devdir)/log_server.pb-c.c: $(srcdir)/log_server.proto
- @if [ -n "$(DEVEL)" ]; then \
- cmd='protoc-c --c_out=$(devdir) --proto_path=$(srcdir) $(srcdir)/log_server.proto'; \
- echo "$$cmd"; eval $$cmd; \
- cmd='$(scriptdir)/unanon $(devdir)/log_server.pb-c.h $(devdir)/log_server.pb-c.c'; \
- echo "$$cmd"; eval $$cmd; \
- if [ "$(devdir)" == "$(srcdir)" ]; then \
- cmd='mv -f $(devdir)/log_server.pb-c.h $(incdir)/log_server.pb-c.h'; \
- else \
- cmd='mv -f $(devdir)/log_server.pb-c.h $(top_builddir)/log_server.pb-c.h'; \
- fi; \
- echo "$$cmd"; eval $$cmd; \
- fi
-
-libsudo_eventlog.la: $(LIBEVENTLOG_OBJS)
+libsudo_eventlog.la: $(LIBEVENTLOG_OBJS) $(LT_LIBS)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBEVENTLOG_OBJS) $(LT_LIBS)
check_wrap: $(CHECK_WRAP_OBJS) $(LIBUTIL)
@@ -150,6 +134,8 @@ install-doc:
install-plugin:
+install-fuzzer:
+
uninstall:
splint:
@@ -160,9 +146,15 @@ cppcheck:
pvs-log-files: $(POBJS)
+fuzz:
+
check: $(TEST_PROGS)
@if test X"$(cross_compiling)" != X"yes"; then \
- LC_ALL=C; export LC_ALL; \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
unset LANG || LANG=; \
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
@@ -175,17 +167,13 @@ check: $(TEST_PROGS)
fi
clean:
- -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f *.lo *.o *.la
- -rm -f *.i *.plog stamp-* core *.core core.*
+ -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f *.lo *.o *.la $(TEST_PROGS)
+ -rm -f *.i *.plog stamp-* core *.core core.* regress/*/*.out
mostlyclean: clean
distclean: clean
-rm -rf Makefile .libs
- @if [ -n "$(DEVEL)" -a "$(devdir)" != "$(srcdir)" ]; then \
- cmd='rm -rf $(GENERATED)'; \
- echo "$$cmd"; eval $$cmd; \
- fi
clobber: distclean
@@ -194,6 +182,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
check_wrap.lo: $(srcdir)/regress/logwrap/check_wrap.c \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
@@ -227,6 +217,36 @@ eventlog.i: $(srcdir)/eventlog.c $(incdir)/compat/stdbool.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
eventlog.plog: eventlog.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/eventlog.c --i-file $< --output-file $@
+eventlog_conf.lo: $(srcdir)/eventlog_conf.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_json.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/eventlog_conf.c
+eventlog_conf.i: $(srcdir)/eventlog_conf.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_json.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+eventlog_conf.plog: eventlog_conf.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/eventlog_conf.c --i-file $< --output-file $@
+eventlog_free.lo: $(srcdir)/eventlog_free.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/eventlog_free.c
+eventlog_free.i: $(srcdir)/eventlog_free.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+eventlog_free.plog: eventlog_free.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/eventlog_free.c --i-file $< --output-file $@
logwrap.lo: $(srcdir)/logwrap.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
$(incdir)/sudo_eventlog.h $(incdir)/sudo_queue.h \
diff --git a/lib/eventlog/eventlog.c b/lib/eventlog/eventlog.c
index ae16e2e6e..0c1e74e38 100644
--- a/lib/eventlog/eventlog.c
+++ b/lib/eventlog/eventlog.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 1994-1996, 1998-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 1994-1996, 1998-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -75,35 +75,6 @@
isalnum((unsigned char)(s)[6]) && isalnum((unsigned char)(s)[7]) && \
(s)[8] == '\0')
-static FILE *eventlog_stub_open_log(int type, const char *logfile);
-static void eventlog_stub_close_log(int type, FILE *fp);
-
-/* Eventlog config settings (default values). */
-static struct eventlog_config evl_conf = {
- EVLOG_NONE, /* type */
- EVLOG_SUDO, /* format */
- LOG_NOTICE, /* syslog_acceptpri */
- LOG_ALERT, /* syslog_rejectpri */
- LOG_ALERT, /* syslog_alertpri */
- MAXSYSLOGLEN, /* syslog_maxlen */
- 0, /* file_maxlen */
- ROOT_UID, /* mailuid */
- false, /* omit_hostname */
- _PATH_SUDO_LOGFILE, /* logpath */
- "%h %e %T", /* time_fmt */
-#ifdef _PATH_SUDO_SENDMAIL
- _PATH_SUDO_SENDMAIL, /* mailerpath */
-#else
- NULL, /* mailerpath (disabled) */
-#endif
- "-t", /* mailerflags */
- NULL, /* mailfrom */
- MAILTO, /* mailto */
- N_(MAILSUBJECT), /* mailsub */
- eventlog_stub_open_log, /* open_log */
- eventlog_stub_close_log /* close_log */
-};
-
/*
* Allocate and fill in a new logline.
*/
@@ -111,6 +82,7 @@ static char *
new_logline(int flags, const char *message, const char *errstr,
const struct eventlog *evlog)
{
+ const struct eventlog_config *evl_conf = eventlog_getconf();
char *line = NULL, *evstr = NULL;
const char *iolog_file = evlog->iolog_file;
const char *tty, *tsid = NULL;
@@ -159,7 +131,7 @@ new_logline(int flags, const char *message, const char *errstr,
len += strlen(message) + 3;
if (errstr != NULL)
len += strlen(errstr) + 3;
- if (evlog->submithost != NULL && !evl_conf.omit_hostname)
+ if (evlog->submithost != NULL && !evl_conf->omit_hostname)
len += sizeof(LL_HOST_STR) + 2 + strlen(evlog->submithost);
if (tty != NULL)
len += sizeof(LL_TTY_STR) + 2 + strlen(tty);
@@ -218,7 +190,7 @@ new_logline(int flags, const char *message, const char *errstr,
strlcat(line, " ; ", len) >= len)
goto toobig;
}
- if (evlog->submithost != NULL && !evl_conf.omit_hostname) {
+ if (evlog->submithost != NULL && !evl_conf->omit_hostname) {
if (strlcat(line, LL_HOST_STR, len) >= len ||
strlcat(line, evlog->submithost, len) >= len ||
strlcat(line, " ; ", len) >= len)
@@ -331,8 +303,9 @@ closefrom_nodebug(int lowfd)
static void __attribute__((__noreturn__))
exec_mailer(int pipein)
{
+ const struct eventlog_config *evl_conf = eventlog_getconf();
char *last, *mflags, *p, *argv[MAX_MAILFLAGS + 1];
- const char *mpath = evl_conf.mailerpath;
+ const char *mpath = evl_conf->mailerpath;
int i;
char * const root_envp[] = {
"HOME=/",
@@ -356,15 +329,12 @@ exec_mailer(int pipein)
}
/* Build up an argv based on the mailer path and flags */
- if ((mflags = strdup(evl_conf.mailerflags)) == NULL) {
+ if ((mflags = strdup(evl_conf->mailerflags)) == NULL) {
syslog(LOG_ERR, _("unable to allocate memory")); // -V618
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
_exit(127);
}
- if ((argv[0] = strrchr(mpath, '/')))
- argv[0]++;
- else
- argv[0] = (char *)mpath;
+ argv[0] = sudo_basename(mpath);
i = 1;
if ((p = strtok_r(mflags, " \t", &last))) {
@@ -382,14 +352,14 @@ exec_mailer(int pipein)
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to change uid to %u",
ROOT_UID);
}
- if (evl_conf.mailuid != ROOT_UID) {
- if (setuid(evl_conf.mailuid) != 0) {
+ if (evl_conf->mailuid != ROOT_UID) {
+ if (setuid(evl_conf->mailuid) != 0) {
sudo_debug_printf(SUDO_DEBUG_ERROR, "unable to change uid to %u",
- (unsigned int)evl_conf.mailuid);
+ (unsigned int)evl_conf->mailuid);
}
}
sudo_debug_exit(__func__, __FILE__, __LINE__, sudo_debug_subsys);
- if (evl_conf.mailuid == ROOT_UID)
+ if (evl_conf->mailuid == ROOT_UID)
execve(mpath, argv, root_envp);
else
execv(mpath, argv);
@@ -403,7 +373,8 @@ exec_mailer(int pipein)
static bool
send_mail(const struct eventlog *evlog, const char *fmt, ...)
{
- const char *cp, *timefmt = evl_conf.time_fmt;
+ const struct eventlog_config *evl_conf = eventlog_getconf();
+ const char *cp, *timefmt = evl_conf->time_fmt;
char timebuf[1024];
struct tm *tm;
time_t now;
@@ -418,11 +389,11 @@ send_mail(const struct eventlog *evlog, const char *fmt, ...)
debug_decl(send_mail, SUDO_DEBUG_UTIL);
/* If mailer is disabled just return. */
- if (evl_conf.mailerpath == NULL || evl_conf.mailto == NULL)
+ if (evl_conf->mailerpath == NULL || evl_conf->mailto == NULL)
debug_return_bool(true);
/* Make sure the mailer exists and is a regular file. */
- if (stat(evl_conf.mailerpath, &sb) != 0 || !S_ISREG(sb.st_mode))
+ if (stat(evl_conf->mailerpath, &sb) != 0 || !S_ISREG(sb.st_mode))
debug_return_bool(false);
time(&now);
@@ -519,11 +490,11 @@ send_mail(const struct eventlog *evlog, const char *fmt, ...)
/* Pipes are all setup, send message. */
(void) fprintf(mail, "To: %s\nFrom: %s\nAuto-Submitted: %s\nSubject: ",
- evl_conf.mailto,
- evl_conf.mailfrom ? evl_conf.mailfrom :
+ evl_conf->mailto,
+ evl_conf->mailfrom ? evl_conf->mailfrom :
(evlog ? evlog->submituser : "root"),
"auto-generated");
- for (cp = _(evl_conf.mailsub); *cp; cp++) {
+ for (cp = _(evl_conf->mailsub); *cp; cp++) {
/* Expand escapes in the subject */
if (*cp == '%' && *(cp+1) != '%') {
switch (*(++cp)) {
@@ -579,7 +550,8 @@ static bool
json_add_timestamp(struct json_container *json, const char *name,
const struct timespec *ts)
{
- const char *timefmt = evl_conf.time_fmt;
+ const struct eventlog_config *evl_conf = eventlog_getconf();
+ const char *timefmt = evl_conf->time_fmt;
struct json_value json_value;
time_t secs = ts->tv_sec;
char timebuf[1024];
@@ -853,6 +825,13 @@ format_json(int event_type, const char *reason, const char *errstr,
/* Event log info may be missing for alert messages. */
if (evlog != NULL) {
+ if (evlog->peeraddr != NULL) {
+ json_value.type = JSON_STRING;
+ json_value.u.string = evlog->peeraddr;
+ if (!sudo_json_add_value(&json, "peeraddr", &json_value))
+ goto bad;
+ }
+
if (evlog->iolog_path != NULL) {
json_value.type = JSON_STRING;
json_value.u.string = evlog->iolog_path;
@@ -883,12 +862,13 @@ bad:
static bool
do_syslog_sudo(int pri, char *logline, const struct eventlog *evlog)
{
+ const struct eventlog_config *evl_conf = eventlog_getconf();
size_t len, maxlen;
char *p, *tmp, save;
const char *fmt;
debug_decl(do_syslog_sudo, SUDO_DEBUG_UTIL);
- evl_conf.open_log(EVLOG_SYSLOG, NULL);
+ evl_conf->open_log(EVLOG_SYSLOG, NULL);
if (evlog == NULL) {
/* Not a command, just log it as-is. */
@@ -900,7 +880,7 @@ do_syslog_sudo(int pri, char *logline, const struct eventlog *evlog)
* Log the full line, breaking into multiple syslog(3) calls if necessary
*/
fmt = _("%8s : %s");
- maxlen = evl_conf.syslog_maxlen -
+ maxlen = evl_conf->syslog_maxlen -
(strlen(fmt) - 5 + strlen(evlog->submituser));
for (p = logline; *p != '\0'; ) {
len = strlen(p);
@@ -929,11 +909,11 @@ do_syslog_sudo(int pri, char *logline, const struct eventlog *evlog)
p += len;
}
fmt = _("%8s : (command continued) %s");
- maxlen = evl_conf.syslog_maxlen -
+ maxlen = evl_conf->syslog_maxlen -
(strlen(fmt) - 5 + strlen(evlog->submituser));
}
done:
- evl_conf.close_log(EVLOG_SYSLOG, NULL);
+ evl_conf->close_log(EVLOG_SYSLOG, NULL);
debug_return_bool(true);
}
@@ -944,6 +924,7 @@ do_syslog_json(int pri, int event_type, const char *reason,
const struct timespec *event_time,
eventlog_json_callback_t info_cb, void *info)
{
+ const struct eventlog_config *evl_conf = eventlog_getconf();
char *json_str;
debug_decl(do_syslog_json, SUDO_DEBUG_UTIL);
@@ -953,11 +934,11 @@ do_syslog_json(int pri, int event_type, const char *reason,
if (json_str == NULL)
debug_return_bool(false);
- /* Syslog it with a @cee: prefix */
- /* TODO: use evl_conf.syslog_maxlen to break up long messages. */
- evl_conf.open_log(EVLOG_SYSLOG, NULL);
- syslog(pri, "@cee:{%s}", json_str);
- evl_conf.close_log(EVLOG_SYSLOG, NULL);
+ /* Syslog it in a sudo object with a @cee: prefix. */
+ /* TODO: use evl_conf->syslog_maxlen to break up long messages. */
+ evl_conf->open_log(EVLOG_SYSLOG, NULL);
+ syslog(pri, "@cee:{\"sudo\":{%s}}", json_str);
+ evl_conf->close_log(EVLOG_SYSLOG, NULL);
free(json_str);
debug_return_bool(true);
}
@@ -970,13 +951,14 @@ do_syslog(int event_type, int flags, const char *reason, const char *errstr,
const struct eventlog *evlog, const struct timespec *event_time,
eventlog_json_callback_t info_cb, void *info)
{
+ const struct eventlog_config *evl_conf = eventlog_getconf();
char *logline = NULL;
bool ret = false;
int pri;
debug_decl(do_syslog, SUDO_DEBUG_UTIL);
/* Sudo format logs and mailed logs use the same log line format. */
- if (evl_conf.format == EVLOG_SUDO || ISSET(flags, EVLOG_MAIL)) {
+ if (evl_conf->format == EVLOG_SUDO || ISSET(flags, EVLOG_MAIL)) {
logline = new_logline(flags, reason, errstr, evlog);
if (logline == NULL)
debug_return_bool(false);
@@ -995,13 +977,13 @@ do_syslog(int event_type, int flags, const char *reason, const char *errstr,
switch (event_type) {
case EVLOG_ACCEPT:
- pri = evl_conf.syslog_acceptpri;
+ pri = evl_conf->syslog_acceptpri;
break;
case EVLOG_REJECT:
- pri = evl_conf.syslog_rejectpri;
+ pri = evl_conf->syslog_rejectpri;
break;
case EVLOG_ALERT:
- pri = evl_conf.syslog_alertpri;
+ pri = evl_conf->syslog_alertpri;
break;
default:
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
@@ -1015,7 +997,7 @@ do_syslog(int event_type, int flags, const char *reason, const char *errstr,
debug_return_bool(true);
}
- switch (evl_conf.format) {
+ switch (evl_conf->format) {
case EVLOG_SUDO:
ret = do_syslog_sudo(pri, logline, evlog);
break;
@@ -1025,7 +1007,7 @@ do_syslog(int event_type, int flags, const char *reason, const char *errstr,
break;
default:
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "unexpected eventlog format %d", evl_conf.format);
+ "unexpected eventlog format %d", evl_conf->format);
break;
}
free(logline);
@@ -1037,9 +1019,10 @@ static bool
do_logfile_sudo(const char *logline, const struct eventlog *evlog,
const struct timespec *event_time)
{
+ const struct eventlog_config *evl_conf = eventlog_getconf();
char *full_line, timebuf[8192], *timestr = NULL;
- const char *timefmt = evl_conf.time_fmt;
- const char *logfile = evl_conf.logpath;
+ const char *timefmt = evl_conf->time_fmt;
+ const char *logfile = evl_conf->logpath;
time_t tv_sec = event_time->tv_sec;
struct tm *timeptr;
bool ret = false;
@@ -1047,7 +1030,7 @@ do_logfile_sudo(const char *logline, const struct eventlog *evlog,
int len;
debug_decl(do_logfile_sudo, SUDO_DEBUG_UTIL);
- if ((fp = evl_conf.open_log(EVLOG_FILE, logfile)) == NULL)
+ if ((fp = evl_conf->open_log(EVLOG_FILE, logfile)) == NULL)
debug_return_bool(false);
if (!sudo_lock_file(fileno(fp), SUDO_LOCK)) {
@@ -1070,7 +1053,7 @@ do_logfile_sudo(const char *logline, const struct eventlog *evlog,
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
goto done;
}
- eventlog_writeln(fp, full_line, len, evl_conf.file_maxlen);
+ eventlog_writeln(fp, full_line, len, evl_conf->file_maxlen);
(void)fflush(fp);
if (ferror(fp)) {
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
@@ -1081,7 +1064,7 @@ do_logfile_sudo(const char *logline, const struct eventlog *evlog,
done:
(void)sudo_lock_file(fileno(fp), SUDO_UNLOCK);
- evl_conf.close_log(EVLOG_FILE, fp);
+ evl_conf->close_log(EVLOG_FILE, fp);
debug_return_bool(ret);
}
@@ -1090,14 +1073,15 @@ do_logfile_json(int event_type, const char *reason, const char *errstr,
const struct eventlog *evlog, const struct timespec *event_time,
eventlog_json_callback_t info_cb, void *info)
{
- const char *logfile = evl_conf.logpath;
+ const struct eventlog_config *evl_conf = eventlog_getconf();
+ const char *logfile = evl_conf->logpath;
struct stat sb;
char *json_str;
int ret = false;
FILE *fp;
debug_decl(do_logfile_json, SUDO_DEBUG_UTIL);
- if ((fp = evl_conf.open_log(EVLOG_FILE, logfile)) == NULL)
+ if ((fp = evl_conf->open_log(EVLOG_FILE, logfile)) == NULL)
debug_return_bool(false);
json_str = format_json(event_type, reason, errstr, evlog, event_time,
@@ -1138,7 +1122,7 @@ do_logfile_json(int event_type, const char *reason, const char *errstr,
done:
free(json_str);
(void)sudo_lock_file(fileno(fp), SUDO_UNLOCK);
- evl_conf.close_log(EVLOG_FILE, fp);
+ evl_conf->close_log(EVLOG_FILE, fp);
debug_return_bool(ret);
}
@@ -1147,12 +1131,13 @@ do_logfile(int event_type, int flags, const char *reason, const char *errstr,
const struct eventlog *evlog, const struct timespec *event_time,
eventlog_json_callback_t info_cb, void *info)
{
+ const struct eventlog_config *evl_conf = eventlog_getconf();
bool ret = false;
char *logline = NULL;
debug_decl(do_logfile, SUDO_DEBUG_UTIL);
/* Sudo format logs and mailed logs use the same log line format. */
- if (evl_conf.format == EVLOG_SUDO || ISSET(flags, EVLOG_MAIL)) {
+ if (evl_conf->format == EVLOG_SUDO || ISSET(flags, EVLOG_MAIL)) {
logline = new_logline(flags, reason, errstr, evlog);
if (logline == NULL)
debug_return_bool(false);
@@ -1169,7 +1154,7 @@ do_logfile(int event_type, int flags, const char *reason, const char *errstr,
}
}
- switch (evl_conf.format) {
+ switch (evl_conf->format) {
case EVLOG_SUDO:
ret = do_logfile_sudo(logline ? logline : reason, evlog, event_time);
break;
@@ -1179,7 +1164,7 @@ do_logfile(int event_type, int flags, const char *reason, const char *errstr,
break;
default:
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "unexpected eventlog format %d", evl_conf.format);
+ "unexpected eventlog format %d", evl_conf->format);
break;
}
free(logline);
@@ -1191,7 +1176,8 @@ bool
eventlog_accept(const struct eventlog *evlog, int flags,
eventlog_json_callback_t info_cb, void *info)
{
- const int log_type = evl_conf.type;
+ const struct eventlog_config *evl_conf = eventlog_getconf();
+ const int log_type = evl_conf->type;
bool ret = true;
debug_decl(log_accept, SUDO_DEBUG_UTIL);
@@ -1217,7 +1203,8 @@ bool
eventlog_reject(const struct eventlog *evlog, int flags, const char *reason,
eventlog_json_callback_t info_cb, void *info)
{
- const int log_type = evl_conf.type;
+ const struct eventlog_config *evl_conf = eventlog_getconf();
+ const int log_type = evl_conf->type;
bool ret = true;
debug_decl(log_reject, SUDO_DEBUG_UTIL);
@@ -1240,7 +1227,8 @@ bool
eventlog_alert(const struct eventlog *evlog, int flags,
struct timespec *alert_time, const char *reason, const char *errstr)
{
- const int log_type = evl_conf.type;
+ const struct eventlog_config *evl_conf = eventlog_getconf();
+ const int log_type = evl_conf->type;
bool ret = true;
debug_decl(log_alert, SUDO_DEBUG_UTIL);
@@ -1258,206 +1246,3 @@ eventlog_alert(const struct eventlog *evlog, int flags,
debug_return_bool(ret);
}
-
-/*
- * Free the strings in a struct eventlog.
- */
-void
-eventlog_free(struct eventlog *evlog)
-{
- int i;
- debug_decl(eventlog_free, SUDO_DEBUG_UTIL);
-
- if (evlog != NULL) {
- free(evlog->iolog_path);
- free(evlog->command);
- free(evlog->cwd);
- free(evlog->runchroot);
- free(evlog->runcwd);
- free(evlog->rungroup);
- free(evlog->runuser);
- free(evlog->submithost);
- free(evlog->submituser);
- free(evlog->submitgroup);
- free(evlog->ttyname);
- if (evlog->argv != NULL) {
- for (i = 0; evlog->argv[i] != NULL; i++)
- free(evlog->argv[i]);
- free(evlog->argv);
- }
- if (evlog->envp != NULL) {
- for (i = 0; evlog->envp[i] != NULL; i++)
- free(evlog->envp[i]);
- free(evlog->envp);
- }
- free(evlog);
- }
-
- debug_return;
-}
-
-static FILE *
-eventlog_stub_open_log(int type, const char *logfile)
-{
- debug_decl(eventlog_stub_open_log, SUDO_DEBUG_UTIL);
- sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO,
- "open_log not set, using stub");
- debug_return_ptr(NULL);
-}
-
-static void
-eventlog_stub_close_log(int type, FILE *fp)
-{
- debug_decl(eventlog_stub_close_log, SUDO_DEBUG_UTIL);
- sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO,
- "close_log not set, using stub");
- debug_return;
-}
-
-/*
- * Set eventlog config settings.
- */
-
-void
-eventlog_set_type(int type)
-{
- evl_conf.type = type;
-}
-
-void
-eventlog_set_format(enum eventlog_format format)
-{
- evl_conf.format = format;
-}
-
-void
-eventlog_set_syslog_acceptpri(int pri)
-{
- evl_conf.syslog_acceptpri = pri;
-}
-
-void
-eventlog_set_syslog_rejectpri(int pri)
-{
- evl_conf.syslog_rejectpri = pri;
-}
-
-void
-eventlog_set_syslog_alertpri(int pri)
-{
- evl_conf.syslog_alertpri = pri;
-}
-
-void
-eventlog_set_syslog_maxlen(int len)
-{
- evl_conf.syslog_maxlen = len;
-}
-
-void
-eventlog_set_file_maxlen(int len)
-{
- evl_conf.file_maxlen = len;
-}
-
-void
-eventlog_set_mailuid(uid_t uid)
-{
- evl_conf.mailuid = uid;
-}
-
-void
-eventlog_set_omit_hostname(bool omit_hostname)
-{
- evl_conf.omit_hostname = omit_hostname;
-}
-
-void
-eventlog_set_logpath(const char *path)
-{
- evl_conf.logpath = path;
-}
-
-void
-eventlog_set_time_fmt(const char *fmt)
-{
- evl_conf.time_fmt = fmt;
-}
-
-void
-eventlog_set_mailerpath(const char *path)
-{
- evl_conf.mailerpath = path;
-}
-
-void
-eventlog_set_mailerflags(const char *mflags)
-{
- evl_conf.mailerflags = mflags;
-}
-
-void
-eventlog_set_mailfrom(const char *from_addr)
-{
- evl_conf.mailfrom = from_addr;
-}
-
-void
-eventlog_set_mailto(const char *to_addr)
-{
- evl_conf.mailto = to_addr;
-}
-
-void
-eventlog_set_mailsub(const char *subject)
-{
- evl_conf.mailsub = subject;
-}
-
-void
-eventlog_set_open_log(FILE *(*fn)(int type, const char *))
-{
- evl_conf.open_log = fn;
-}
-
-void
-eventlog_set_close_log(void (*fn)(int type, FILE *))
-{
- evl_conf.close_log = fn;
-}
-
-bool
-eventlog_setconf(struct eventlog_config *conf)
-{
- debug_decl(eventlog_setconf, SUDO_DEBUG_UTIL);
-
- if (conf != NULL) {
- memcpy(&evl_conf, conf, sizeof(evl_conf));
- } else {
- memset(&evl_conf, 0, sizeof(evl_conf));
- }
-
- /* Apply default values where possible. */
- if (evl_conf.syslog_maxlen == 0)
- evl_conf.syslog_maxlen = MAXSYSLOGLEN;
- if (evl_conf.logpath == NULL)
- evl_conf.logpath = _PATH_SUDO_LOGFILE;
- if (evl_conf.time_fmt == NULL)
- evl_conf.time_fmt = "%h %e %T";
-#ifdef _PATH_SUDO_SENDMAIL
- if (evl_conf.mailerpath == NULL)
- evl_conf.mailerpath = _PATH_SUDO_SENDMAIL;
-#endif
- if (evl_conf.mailerflags == NULL)
- evl_conf.mailerflags = "-t";
- if (evl_conf.mailto == NULL)
- evl_conf.mailto = MAILTO;
- if (evl_conf.mailsub == NULL)
- evl_conf.mailsub = N_(MAILSUBJECT);
- if (evl_conf.open_log == NULL)
- evl_conf.open_log = eventlog_stub_open_log;
- if (evl_conf.close_log == NULL)
- evl_conf.close_log = eventlog_stub_close_log;
-
- debug_return_bool(true);
-}
diff --git a/lib/eventlog/eventlog_conf.c b/lib/eventlog/eventlog_conf.c
new file mode 100644
index 000000000..8ad03851f
--- /dev/null
+++ b/lib/eventlog/eventlog_conf.c
@@ -0,0 +1,226 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 1994-1996, 1998-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <locale.h>
+#include <pwd.h>
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "pathnames.h"
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_json.h"
+#include "sudo_queue.h"
+#include "sudo_util.h"
+
+static FILE *eventlog_stub_open_log(int type, const char *logfile);
+static void eventlog_stub_close_log(int type, FILE *fp);
+
+/* Eventlog config settings (default values). */
+static struct eventlog_config evl_conf = {
+ EVLOG_NONE, /* type */
+ EVLOG_SUDO, /* format */
+ LOG_NOTICE, /* syslog_acceptpri */
+ LOG_ALERT, /* syslog_rejectpri */
+ LOG_ALERT, /* syslog_alertpri */
+ MAXSYSLOGLEN, /* syslog_maxlen */
+ 0, /* file_maxlen */
+ ROOT_UID, /* mailuid */
+ false, /* omit_hostname */
+ _PATH_SUDO_LOGFILE, /* logpath */
+ "%h %e %T", /* time_fmt */
+#ifdef _PATH_SUDO_SENDMAIL
+ _PATH_SUDO_SENDMAIL, /* mailerpath */
+#else
+ NULL, /* mailerpath (disabled) */
+#endif
+ "-t", /* mailerflags */
+ NULL, /* mailfrom */
+ MAILTO, /* mailto */
+ N_(MAILSUBJECT), /* mailsub */
+ eventlog_stub_open_log, /* open_log */
+ eventlog_stub_close_log /* close_log */
+};
+
+static FILE *
+eventlog_stub_open_log(int type, const char *logfile)
+{
+ debug_decl(eventlog_stub_open_log, SUDO_DEBUG_UTIL);
+ sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO,
+ "open_log not set, using stub");
+ debug_return_ptr(NULL);
+}
+
+static void
+eventlog_stub_close_log(int type, FILE *fp)
+{
+ debug_decl(eventlog_stub_close_log, SUDO_DEBUG_UTIL);
+ sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO,
+ "close_log not set, using stub");
+ debug_return;
+}
+
+/*
+ * eventlog config setters.
+ */
+
+void
+eventlog_set_type(int type)
+{
+ evl_conf.type = type;
+}
+
+void
+eventlog_set_format(enum eventlog_format format)
+{
+ evl_conf.format = format;
+}
+
+void
+eventlog_set_syslog_acceptpri(int pri)
+{
+ evl_conf.syslog_acceptpri = pri;
+}
+
+void
+eventlog_set_syslog_rejectpri(int pri)
+{
+ evl_conf.syslog_rejectpri = pri;
+}
+
+void
+eventlog_set_syslog_alertpri(int pri)
+{
+ evl_conf.syslog_alertpri = pri;
+}
+
+void
+eventlog_set_syslog_maxlen(int len)
+{
+ evl_conf.syslog_maxlen = len;
+}
+
+void
+eventlog_set_file_maxlen(int len)
+{
+ evl_conf.file_maxlen = len;
+}
+
+void
+eventlog_set_mailuid(uid_t uid)
+{
+ evl_conf.mailuid = uid;
+}
+
+void
+eventlog_set_omit_hostname(bool omit_hostname)
+{
+ evl_conf.omit_hostname = omit_hostname;
+}
+
+void
+eventlog_set_logpath(const char *path)
+{
+ evl_conf.logpath = path;
+}
+
+void
+eventlog_set_time_fmt(const char *fmt)
+{
+ evl_conf.time_fmt = fmt;
+}
+
+void
+eventlog_set_mailerpath(const char *path)
+{
+ evl_conf.mailerpath = path;
+}
+
+void
+eventlog_set_mailerflags(const char *mflags)
+{
+ evl_conf.mailerflags = mflags;
+}
+
+void
+eventlog_set_mailfrom(const char *from_addr)
+{
+ evl_conf.mailfrom = from_addr;
+}
+
+void
+eventlog_set_mailto(const char *to_addr)
+{
+ evl_conf.mailto = to_addr;
+}
+
+void
+eventlog_set_mailsub(const char *subject)
+{
+ evl_conf.mailsub = subject;
+}
+
+void
+eventlog_set_open_log(FILE *(*fn)(int type, const char *))
+{
+ evl_conf.open_log = fn;
+}
+
+void
+eventlog_set_close_log(void (*fn)(int type, FILE *))
+{
+ evl_conf.close_log = fn;
+}
+
+/*
+ * get eventlog config.
+ */
+const struct eventlog_config *
+eventlog_getconf(void)
+{
+ return &evl_conf;
+}
diff --git a/lib/eventlog/eventlog_free.c b/lib/eventlog/eventlog_free.c
new file mode 100644
index 000000000..49583b61c
--- /dev/null
+++ b/lib/eventlog/eventlog_free.c
@@ -0,0 +1,73 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_util.h"
+
+/*
+ * Free the strings in a struct eventlog.
+ */
+void
+eventlog_free(struct eventlog *evlog)
+{
+ int i;
+ debug_decl(eventlog_free, SUDO_DEBUG_UTIL);
+
+ if (evlog != NULL) {
+ free(evlog->iolog_path);
+ free(evlog->command);
+ free(evlog->cwd);
+ free(evlog->runchroot);
+ free(evlog->runcwd);
+ free(evlog->rungroup);
+ free(evlog->runuser);
+ free(evlog->submithost);
+ free(evlog->submituser);
+ free(evlog->submitgroup);
+ free(evlog->ttyname);
+ if (evlog->argv != NULL) {
+ for (i = 0; evlog->argv[i] != NULL; i++)
+ free(evlog->argv[i]);
+ free(evlog->argv);
+ }
+ if (evlog->envp != NULL) {
+ for (i = 0; evlog->envp[i] != NULL; i++)
+ free(evlog->envp[i]);
+ free(evlog->envp);
+ }
+ free(evlog);
+ }
+
+ debug_return;
+}
diff --git a/lib/eventlog/logwrap.c b/lib/eventlog/logwrap.c
index 4c3532056..615598230 100644
--- a/lib/eventlog/logwrap.c
+++ b/lib/eventlog/logwrap.c
@@ -46,9 +46,9 @@ eventlog_writeln(FILE *fp, char *line, size_t linelen, size_t maxlen)
/* Maximum length too small, disable wrapping. */
outlen = fwrite(line, 1, linelen, fp);
if (outlen != linelen)
- debug_return_size_t(-1);
+ debug_return_ssize_t(-1);
if (fputc('\n', fp) == EOF)
- debug_return_size_t(-1);
+ debug_return_ssize_t(-1);
debug_return_int(outlen + 1);
}
@@ -67,7 +67,7 @@ eventlog_writeln(FILE *fp, char *line, size_t linelen, size_t maxlen)
}
len = fprintf(fp, "%s%.*s\n", indent, (int)(end - beg), beg);
if (len < 0)
- debug_return_size_t(-1);
+ debug_return_ssize_t(-1);
outlen += len;
while (*end == ' ')
end++;
@@ -82,7 +82,7 @@ eventlog_writeln(FILE *fp, char *line, size_t linelen, size_t maxlen)
if (linelen) {
len = fprintf(fp, "%s%s\n", indent, beg);
if (len < 0)
- debug_return_size_t(-1);
+ debug_return_ssize_t(-1);
outlen += len;
}
diff --git a/lib/fuzzstub/Makefile.in b/lib/fuzzstub/Makefile.in
new file mode 100644
index 000000000..37c5e1398
--- /dev/null
+++ b/lib/fuzzstub/Makefile.in
@@ -0,0 +1,174 @@
+#
+# SPDX-License-Identifier: ISC
+#
+# Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+# @configure_input@
+#
+
+#### Start of system configuration section. ####
+
+srcdir = @srcdir@
+abs_srcdir = @abs_srcdir@
+top_srcdir = @top_srcdir@
+abs_top_srcdir = @abs_top_srcdir@
+top_builddir = @top_builddir@
+abs_top_builddir = @abs_top_builddir@
+devdir = @devdir@
+scriptdir = $(top_srcdir)/scripts
+incdir = $(top_srcdir)/include
+
+# Compiler & tools to use
+CC = @CC@
+LIBTOOL = @LIBTOOL@
+
+# C preprocessor flags
+CPPFLAGS = -I$(incdir) -I$(top_builddir) -I$(srcdir) -I$(top_srcdir) @CPPFLAGS@
+
+# Usually -O and/or -g
+CFLAGS = @CFLAGS@
+
+# Flags to pass to the link stage
+LDFLAGS = @LDFLAGS@
+
+# Flags to pass to libtool
+LTFLAGS = @LT_STATIC@
+
+# Libraries
+LT_LIBS =
+LIBS = $(LT_LIBS)
+
+# Address sanitizer flags
+ASAN_CFLAGS = @ASAN_CFLAGS@
+ASAN_LDFLAGS = @ASAN_LDFLAGS@
+
+# PIE flags
+PIE_CFLAGS = @PIE_CFLAGS@
+PIE_LDFLAGS = @PIE_LDFLAGS@
+
+# Stack smashing protection flags
+SSP_CFLAGS = @SSP_CFLAGS@
+SSP_LDFLAGS = @SSP_LDFLAGS@
+
+# cppcheck options, usually set in the top-level Makefile
+CPPCHECK_OPTS = -q --enable=warning,performance,portability --suppress=constStatement --suppress=compareBoolExpressionWithInt --error-exitcode=1 --inline-suppr -Dva_copy=va_copy -U__cplusplus -UQUAD_MAX -UQUAD_MIN -UUQUAD_MAX -U_POSIX_HOST_NAME_MAX -U_POSIX_PATH_MAX -U__NBBY -DNSIG=64
+
+# splint options, usually set in the top-level Makefile
+SPLINT_OPTS = -D__restrict= -checks
+
+# PVS-studio options
+PVS_CFG = $(top_srcdir)/PVS-Studio.cfg
+PVS_IGNORE = 'V707,V011,V002,V536'
+PVS_LOG_OPTS = -a 'GA:1,2' -e -t errorfile -d $(PVS_IGNORE)
+
+# Set to non-empty for development mode
+DEVEL = @DEVEL@
+
+#### End of system configuration section. ####
+
+SHELL = @SHELL@
+
+LIBFUZZSTUB_OBJS = fuzzstub.lo
+
+IOBJS = $(LIBFUZZSTUB_OBJS:.lo=.i)
+
+POBJS = $(IOBJS:.i=.plog)
+
+all: libsudo_fuzzstub.la
+
+pvs-log-files: $(POBJS)
+
+pvs-studio: $(POBJS)
+ plog-converter $(PVS_LOG_OPTS) $(POBJS)
+
+depend:
+ $(scriptdir)/mkdep.pl --srcdir=$(abs_top_srcdir) \
+ --builddir=$(abs_top_builddir) lib/fuzzstub/Makefile.in
+ cd $(top_builddir) && ./config.status --file lib/fuzzstub/Makefile
+
+Makefile: $(srcdir)/Makefile.in
+ cd $(top_builddir) && ./config.status --file lib/fuzzstub/Makefile
+
+.SUFFIXES: .c .h .i .lo .plog
+
+.c.lo:
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $<
+
+.c.i:
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+
+.i.plog:
+ ifile=$<; rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $${ifile%i}c --i-file $< --output-file $@
+
+libsudo_fuzzstub.la: $(LIBFUZZSTUB_OBJS)
+ $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBFUZZSTUB_OBJS) $(LT_LIBS)
+
+pre-install:
+
+install:
+
+install-binaries:
+
+install-includes:
+
+install-doc:
+
+install-plugin:
+
+install-fuzzer:
+
+uninstall:
+
+splint:
+ splint $(SPLINT_OPTS) -I$(incdir) -I$(top_builddir) -I$(top_srcdir) $(srcdir)/*.c
+
+cppcheck:
+ cppcheck $(CPPCHECK_OPTS) -I$(incdir) -I$(top_builddir) -I$(top_srcdir) $(srcdir)/*.c
+
+pvs-log-files: $(POBJS)
+
+fuzz:
+
+check:
+
+clean:
+ -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f *.lo *.o *.la
+ -rm -f *.i *.plog stamp-* core *.core core.*
+
+mostlyclean: clean
+
+distclean: clean
+ -rm -rf Makefile .libs
+
+clobber: distclean
+
+realclean: distclean
+ rm -f TAGS tags
+
+cleandir: realclean
+
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
+# Autogenerated dependencies, do not modify
+fuzzstub.lo: $(srcdir)/fuzzstub.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/fuzzstub.c
+fuzzstub.i: $(srcdir)/fuzzstub.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzzstub.plog: fuzzstub.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/fuzzstub.c --i-file $< --output-file $@
diff --git a/lib/fuzzstub/fuzzstub.c b/lib/fuzzstub/fuzzstub.c
new file mode 100644
index 000000000..0ec7490f5
--- /dev/null
+++ b/lib/fuzzstub/fuzzstub.c
@@ -0,0 +1,119 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/stat.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+#include <fcntl.h>
+#include <time.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+
+#include "sudo_compat.h"
+#include "sudo_util.h"
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
+
+/*
+ * Simple driver for fuzzers built for LLVM libfuzzer.
+ * This stub library allows fuzz targets to be built and run without
+ * libfuzzer. No actual fuzzing will occur but the provided inputs
+ * will be tested.
+ */
+int
+main(int argc, char *argv[])
+{
+ struct timespec start_time, stop_time;
+ size_t filesize, bufsize = 0;
+ ssize_t nread, ms;
+ struct stat sb;
+ uint8_t *buf = NULL;
+ int fd, i, errors = 0;
+
+ /* Test provided input files. */
+ for (i = 1; i < argc; i++) {
+ fd = open(argv[i], O_RDONLY);
+ if (fd == -1 || fstat(fd, &sb) != 0) {
+ fprintf(stderr, "open %s: %s\n", argv[i], strerror(errno));
+ if (fd != -1)
+ close(fd);
+ errors++;
+ continue;
+ }
+#ifndef __LP64__
+ if (sizeof(sb.st_size) > sizeof(size_t) && sb.st_size > SSIZE_MAX) {
+ errno = E2BIG;
+ fprintf(stderr, "%s: %s\n", argv[i], strerror(errno));
+ close(fd);
+ errors++;
+ continue;
+ }
+#endif
+ filesize = sb.st_size;
+ if (bufsize < filesize) {
+ void *tmp = realloc(buf, filesize);
+ if (tmp == NULL) {
+ fprintf(stderr, "realloc: %s\n", strerror(errno));
+ close(fd);
+ errors++;
+ continue;
+ }
+ buf = tmp;
+ bufsize = filesize;
+ }
+ nread = read(fd, buf, filesize);
+ if ((size_t)nread != filesize) {
+ if (nread == -1)
+ fprintf(stderr, "read %s: %s\n", argv[i], strerror(errno));
+ else
+ fprintf(stderr, "read %s: short read\n", argv[i]);
+ close(fd);
+ errors++;
+ continue;
+ }
+ close(fd);
+
+ /* NOTE: doesn't support LLVMFuzzerInitialize() (but we don't use it) */
+ fprintf(stderr, "Running: %s\n", argv[i]);
+ sudo_gettime_mono(&start_time);
+ LLVMFuzzerTestOneInput(buf, nread);
+ fflush(stdout);
+ sudo_gettime_mono(&stop_time);
+ sudo_timespecsub(&stop_time, &start_time, &stop_time);
+ ms = (stop_time.tv_sec * 1000) + (stop_time.tv_nsec / 1000000);
+ fprintf(stderr, "Executed %s in %zd ms\n", argv[i], ms);
+ }
+ free(buf);
+
+ return errors;
+}
diff --git a/lib/iolog/Makefile.in b/lib/iolog/Makefile.in
index 2ae9c1b42..fb2a350de 100644
--- a/lib/iolog/Makefile.in
+++ b/lib/iolog/Makefile.in
@@ -1,7 +1,7 @@
#
# SPDX-License-Identifier: ISC
#
-# Copyright (c) 2011-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+# Copyright (c) 2011-2021 Todd C. Miller <Todd.Miller@sudo.ws>
#
# Permission to use, copy, modify, and distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
@@ -36,7 +36,8 @@ CC = @CC@
LIBTOOL = @LIBTOOL@
# Libraries
-LT_LIBS = $(top_builddir)/lib/util/libsudo_util.la
+LT_LIBS = $(top_builddir)/lib/eventlog/libsudo_eventlog.la \
+ $(top_builddir)/lib/util/libsudo_util.la
LIBS = @LIBS@ @ZLIB@ $(LT_LIBS)
# C preprocessor flags
@@ -75,10 +76,18 @@ PVS_IGNORE = 'V707,V011,V002,V536'
PVS_LOG_OPTS = -a 'GA:1,2' -e -t errorfile -d $(PVS_IGNORE)
# Regression tests
-TEST_PROGS = check_iolog_json check_iolog_mkpath check_iolog_path check_iolog_util host_port_test
-TEST_LIBS = @LIBS@ $(top_builddir)/lib/eventlog/libsudo_eventlog.la
+TEST_PROGS = check_iolog_json check_iolog_mkpath check_iolog_path check_iolog_timing host_port_test
+TEST_LIBS = @LIBS@
TEST_LDFLAGS = @LDFLAGS@
+# Fuzzers
+LIBFUZZSTUB = $(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la
+LIB_FUZZING_ENGINE = @FUZZ_ENGINE@
+FUZZ_PROGS = fuzz_iolog_json fuzz_iolog_legacy fuzz_iolog_timing
+FUZZ_SEED_CORPUS = ${FUZZ_PROGS:=_seed_corpus.zip}
+FUZZ_LIBS = @LIBS@ $(LIB_FUZZING_ENGINE)
+FUZZ_LDFLAGS = @LDFLAGS@
+
# Set to non-empty for development mode
DEVEL = @DEVEL@
@@ -86,22 +95,39 @@ DEVEL = @DEVEL@
SHELL = @SHELL@
-LIBIOLOG_OBJS = iolog_fileio.lo iolog_json.lo iolog_path.lo iolog_util.lo \
- host_port.lo hostcheck.lo
+LIBIOLOG_OBJS = host_port.lo hostcheck.lo iolog_clearerr.lo iolog_close.lo \
+ iolog_conf.lo iolog_eof.lo iolog_gets.lo iolog_json.lo \
+ iolog_legacy.lo iolog_loginfo.lo iolog_mkdirs.lo \
+ iolog_mkdtemp.lo iolog_mkpath.lo iolog_nextid.lo \
+ iolog_open.lo iolog_openat.lo iolog_path.lo iolog_read.lo \
+ iolog_seek.lo iolog_swapids.lo iolog_timing.lo iolog_util.lo \
+ iolog_write.lo
IOBJS = $(LIBIOLOG_OBJS:.lo=.i)
POBJS = $(IOBJS:.i=.plog)
-CHECK_IOLOG_MKPATH_OBJS = check_iolog_mkpath.lo iolog_fileio.lo
+CHECK_IOLOG_MKPATH_OBJS = check_iolog_mkpath.lo
+
+CHECK_IOLOG_PATH_OBJS = check_iolog_path.lo
+
+CHECK_IOLOG_TIMING_OBJS = check_iolog_timing.lo
+
+CHECK_IOLOG_JSON_OBJS = check_iolog_json.lo
+
+HOST_PORT_TEST_OBJS = host_port_test.lo
+
+FUZZ_IOLOG_JSON_OBJS = fuzz_iolog_json.lo
-CHECK_IOLOG_PATH_OBJS = check_iolog_path.lo iolog_path.lo
+FUZZ_IOLOG_JSON_CORPUS = $(srcdir)/regress/corpus/log_json/*.json
-CHECK_IOLOG_UTIL_OBJS = check_iolog_util.lo iolog_json.lo iolog_util.lo
+FUZZ_IOLOG_LEGACY_OBJS = fuzz_iolog_legacy.lo
-CHECK_IOLOG_JSON_OBJS = check_iolog_json.lo iolog_json.lo
+FUZZ_IOLOG_LEGACY_CORPUS = $(srcdir)/regress/corpus/log_legacy/*.log
-HOST_PORT_TEST_OBJS = host_port_test.lo host_port.lo
+FUZZ_IOLOG_TIMING_OBJS = fuzz_iolog_timing.lo
+
+FUZZ_IOLOG_TIMING_CORPUS = $(srcdir)/regress/corpus/timing/timing.*
all: libsudo_iolog.la
@@ -129,7 +155,7 @@ Makefile: $(srcdir)/Makefile.in
.i.plog:
ifile=$<; rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $${ifile%i}c --i-file $< --output-file $@
-libsudo_iolog.la: $(LIBIOLOG_OBJS)
+libsudo_iolog.la: $(LIBIOLOG_OBJS) $(LT_LIBS)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBIOLOG_OBJS) $(LT_LIBS) @ZLIB@ @NET_LIBS@
check_iolog_path: $(CHECK_IOLOG_PATH_OBJS) libsudo_iolog.la
@@ -138,8 +164,8 @@ check_iolog_path: $(CHECK_IOLOG_PATH_OBJS) libsudo_iolog.la
check_iolog_mkpath: $(CHECK_IOLOG_MKPATH_OBJS) libsudo_iolog.la
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_MKPATH_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS)
-check_iolog_util: $(CHECK_IOLOG_UTIL_OBJS) libsudo_iolog.la
- $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_UTIL_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS)
+check_iolog_timing: $(CHECK_IOLOG_TIMING_OBJS) libsudo_iolog.la
+ $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_TIMING_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS)
check_iolog_json: $(CHECK_IOLOG_JSON_OBJS) libsudo_iolog.la
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_JSON_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS)
@@ -147,6 +173,42 @@ check_iolog_json: $(CHECK_IOLOG_JSON_OBJS) libsudo_iolog.la
host_port_test: $(HOST_PORT_TEST_OBJS) libsudo_iolog.la
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(HOST_PORT_TEST_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS)
+fuzz_iolog_json: $(FUZZ_IOLOG_JSON_OBJS) $(LIBFUZZSTUB) libsudo_iolog.la
+ $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_JSON_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS)
+
+fuzz_iolog_legacy: $(FUZZ_IOLOG_LEGACY_OBJS) $(LIBFUZZSTUB) libsudo_iolog.la
+ $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_LEGACY_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS)
+
+fuzz_iolog_timing: $(FUZZ_IOLOG_TIMING_OBJS) $(LIBFUZZSTUB) libsudo_iolog.la
+ $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_IOLOG_TIMING_OBJS) libsudo_iolog.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS)
+
+fuzz_iolog_json_seed_corpus.zip:
+ tdir=fuzz_iolog_json.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_IOLOG_JSON_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
+fuzz_iolog_legacy_seed_corpus.zip:
+ tdir=fuzz_iolog_legacy.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_IOLOG_LEGACY_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
+fuzz_iolog_timing_seed_corpus.zip:
+ tdir=fuzz_iolog_timing.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_IOLOG_TIMING_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
pre-install:
install:
@@ -159,6 +221,14 @@ install-doc:
install-plugin:
+install-fuzzer: $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS)
+ @if test X"$(FUZZ_DESTDIR)" = X""; then \
+ echo "must set FUZZ_DESTDIR for install-fuzzer target"; \
+ else \
+ cp $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS) $(FUZZ_DESTDIR); \
+ cp $(srcdir)/regress/fuzz/*.dict $(FUZZ_DESTDIR); \
+ fi
+
uninstall:
splint:
@@ -169,21 +239,46 @@ cppcheck:
pvs-log-files: $(POBJS)
-check: $(TEST_PROGS)
+fuzz: $(FUZZ_PROGS)
+ @if test X"$(cross_compiling)" != X"yes"; then \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
+ unset LANG || LANG=; \
+ MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
+ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
+ echo "fuzz_iolog_legacy: verifying corpus"; \
+ ./fuzz_iolog_legacy $(FUZZ_IOLOG_LEGACY_CORPUS); \
+ echo "fuzz_iolog_json: verifying corpus"; \
+ ./fuzz_iolog_json $(FUZZ_IOLOG_JSON_CORPUS); \
+ echo "fuzz_iolog_timing: verifying corpus"; \
+ ./fuzz_iolog_timing $(FUZZ_IOLOG_TIMING_CORPUS); \
+ fi
+
+check: $(TEST_PROGS) fuzz
@if test X"$(cross_compiling)" != X"yes"; then \
- LC_ALL=C; export LC_ALL; \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
unset LANG || LANG=; \
+ MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
+ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
rval=0; \
./check_iolog_json $(srcdir)/regress/iolog_json/*.in || rval=`expr $$rval + $$?`; \
./check_iolog_path $(srcdir)/regress/iolog_path/data || rval=`expr $$rval + $$?`; \
./check_iolog_mkpath || rval=`expr $$rval + $$?`; \
- ./check_iolog_util || rval=`expr $$rval + $$?`; \
+ ./check_iolog_timing || rval=`expr $$rval + $$?`; \
./host_port_test || rval=`expr $$rval + $$?`; \
exit $$rval; \
fi
clean:
- -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f $(TEST_PROGS) *.lo *.o *.la
+ -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f $(TEST_PROGS) $(FUZZ_PROGS) \
+ *.lo *.o *.la
-rm -f *.i *.plog stamp-* core *.core core.* regress/*/*.out \
regress/*/*.err
@@ -199,6 +294,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean $(FUZZ_SEED_CORPUS)
+
# Autogenerated dependencies, do not modify
check_iolog_json.lo: $(srcdir)/regress/iolog_json/check_iolog_json.c \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
@@ -244,20 +341,66 @@ check_iolog_path.i: $(srcdir)/regress/iolog_path/check_iolog_path.c \
$(CC) -E -o $@ $(CPPFLAGS) $<
check_iolog_path.plog: check_iolog_path.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/iolog_path/check_iolog_path.c --i-file $< --output-file $@
-check_iolog_util.lo: $(srcdir)/regress/iolog_util/check_iolog_util.c \
- $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \
- $(top_builddir)/config.h
- $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/iolog_util/check_iolog_util.c
-check_iolog_util.i: $(srcdir)/regress/iolog_util/check_iolog_util.c \
- $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
- $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \
- $(top_builddir)/config.h
+check_iolog_timing.lo: $(srcdir)/regress/iolog_timing/check_iolog_timing.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/iolog_timing/check_iolog_timing.c
+check_iolog_timing.i: $(srcdir)/regress/iolog_timing/check_iolog_timing.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+check_iolog_timing.plog: check_iolog_timing.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/iolog_timing/check_iolog_timing.c --i-file $< --output-file $@
+fuzz_iolog_json.lo: $(srcdir)/regress/fuzz/fuzz_iolog_json.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_json.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/iolog_json.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_iolog_json.c
+fuzz_iolog_json.i: $(srcdir)/regress/fuzz/fuzz_iolog_json.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_json.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/iolog_json.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_iolog_json.plog: fuzz_iolog_json.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_iolog_json.c --i-file $< --output-file $@
+fuzz_iolog_legacy.lo: $(srcdir)/regress/fuzz/fuzz_iolog_legacy.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_iolog_legacy.c
+fuzz_iolog_legacy.i: $(srcdir)/regress/fuzz/fuzz_iolog_legacy.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
$(CC) -E -o $@ $(CPPFLAGS) $<
-check_iolog_util.plog: check_iolog_util.i
- rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/iolog_util/check_iolog_util.c --i-file $< --output-file $@
+fuzz_iolog_legacy.plog: fuzz_iolog_legacy.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_iolog_legacy.c --i-file $< --output-file $@
+fuzz_iolog_timing.lo: $(srcdir)/regress/fuzz/fuzz_iolog_timing.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_iolog_timing.c
+fuzz_iolog_timing.i: $(srcdir)/regress/fuzz/fuzz_iolog_timing.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_iolog_timing.plog: fuzz_iolog_timing.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_iolog_timing.c --i-file $< --output-file $@
host_port.lo: $(srcdir)/host_port.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
$(incdir)/sudo_gettext.h $(incdir)/sudo_queue.h \
@@ -296,26 +439,68 @@ hostcheck.i: $(srcdir)/hostcheck.c $(incdir)/compat/stdbool.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
hostcheck.plog: hostcheck.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/hostcheck.c --i-file $< --output-file $@
-iolog_fileio.lo: $(srcdir)/iolog_fileio.c $(incdir)/compat/stdbool.h \
- $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
- $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
- $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
- $(incdir)/sudo_iolog.h $(incdir)/sudo_json.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(top_builddir)/config.h \
- $(top_builddir)/pathnames.h
- $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_fileio.c
-iolog_fileio.i: $(srcdir)/iolog_fileio.c $(incdir)/compat/stdbool.h \
- $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
- $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
- $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
- $(incdir)/sudo_iolog.h $(incdir)/sudo_json.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(top_builddir)/config.h \
- $(top_builddir)/pathnames.h
+iolog_clearerr.lo: $(srcdir)/iolog_clearerr.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_clearerr.c
+iolog_clearerr.i: $(srcdir)/iolog_clearerr.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_clearerr.plog: iolog_clearerr.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_clearerr.c --i-file $< --output-file $@
+iolog_close.lo: $(srcdir)/iolog_close.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_close.c
+iolog_close.i: $(srcdir)/iolog_close.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_close.plog: iolog_close.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_close.c --i-file $< --output-file $@
+iolog_conf.lo: $(srcdir)/iolog_conf.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_conf.c
+iolog_conf.i: $(srcdir)/iolog_conf.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_conf.plog: iolog_conf.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_conf.c --i-file $< --output-file $@
+iolog_eof.lo: $(srcdir)/iolog_eof.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_eof.c
+iolog_eof.i: $(srcdir)/iolog_eof.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
$(CC) -E -o $@ $(CPPFLAGS) $<
-iolog_fileio.plog: iolog_fileio.i
- rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_fileio.c --i-file $< --output-file $@
+iolog_eof.plog: iolog_eof.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_eof.c --i-file $< --output-file $@
+iolog_gets.lo: $(srcdir)/iolog_gets.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_gets.c
+iolog_gets.i: $(srcdir)/iolog_gets.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_gets.plog: iolog_gets.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_gets.c --i-file $< --output-file $@
iolog_json.lo: $(srcdir)/iolog_json.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
$(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
@@ -334,6 +519,128 @@ iolog_json.i: $(srcdir)/iolog_json.c $(incdir)/compat/stdbool.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
iolog_json.plog: iolog_json.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_json.c --i-file $< --output-file $@
+iolog_legacy.lo: $(srcdir)/iolog_legacy.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_legacy.c
+iolog_legacy.i: $(srcdir)/iolog_legacy.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_legacy.plog: iolog_legacy.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_legacy.c --i-file $< --output-file $@
+iolog_loginfo.lo: $(srcdir)/iolog_loginfo.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_loginfo.c
+iolog_loginfo.i: $(srcdir)/iolog_loginfo.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_json.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_loginfo.plog: iolog_loginfo.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_loginfo.c --i-file $< --output-file $@
+iolog_mkdirs.lo: $(srcdir)/iolog_mkdirs.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_mkdirs.c
+iolog_mkdirs.i: $(srcdir)/iolog_mkdirs.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_mkdirs.plog: iolog_mkdirs.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_mkdirs.c --i-file $< --output-file $@
+iolog_mkdtemp.lo: $(srcdir)/iolog_mkdtemp.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_mkdtemp.c
+iolog_mkdtemp.i: $(srcdir)/iolog_mkdtemp.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_mkdtemp.plog: iolog_mkdtemp.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_mkdtemp.c --i-file $< --output-file $@
+iolog_mkpath.lo: $(srcdir)/iolog_mkpath.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_mkpath.c
+iolog_mkpath.i: $(srcdir)/iolog_mkpath.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_mkpath.plog: iolog_mkpath.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_mkpath.c --i-file $< --output-file $@
+iolog_nextid.lo: $(srcdir)/iolog_nextid.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_nextid.c
+iolog_nextid.i: $(srcdir)/iolog_nextid.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_nextid.plog: iolog_nextid.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_nextid.c --i-file $< --output-file $@
+iolog_open.lo: $(srcdir)/iolog_open.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_open.c
+iolog_open.i: $(srcdir)/iolog_open.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_open.plog: iolog_open.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_open.c --i-file $< --output-file $@
+iolog_openat.lo: $(srcdir)/iolog_openat.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_openat.c
+iolog_openat.i: $(srcdir)/iolog_openat.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_openat.plog: iolog_openat.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_openat.c --i-file $< --output-file $@
iolog_path.lo: $(srcdir)/iolog_path.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
@@ -350,19 +657,81 @@ iolog_path.i: $(srcdir)/iolog_path.c $(incdir)/compat/stdbool.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
iolog_path.plog: iolog_path.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_path.c --i-file $< --output-file $@
+iolog_read.lo: $(srcdir)/iolog_read.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_read.c
+iolog_read.i: $(srcdir)/iolog_read.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_read.plog: iolog_read.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_read.c --i-file $< --output-file $@
+iolog_seek.lo: $(srcdir)/iolog_seek.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_seek.c
+iolog_seek.i: $(srcdir)/iolog_seek.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_seek.plog: iolog_seek.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_seek.c --i-file $< --output-file $@
+iolog_swapids.lo: $(srcdir)/iolog_swapids.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_swapids.c
+iolog_swapids.i: $(srcdir)/iolog_swapids.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_swapids.plog: iolog_swapids.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_swapids.c --i-file $< --output-file $@
+iolog_timing.lo: $(srcdir)/iolog_timing.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_timing.c
+iolog_timing.i: $(srcdir)/iolog_timing.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_timing.plog: iolog_timing.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_timing.c --i-file $< --output-file $@
iolog_util.lo: $(srcdir)/iolog_util.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
- $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
- $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_util.c
iolog_util.i: $(srcdir)/iolog_util.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
- $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
- $(incdir)/sudo_gettext.h $(incdir)/sudo_iolog.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(top_builddir)/config.h
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
$(CC) -E -o $@ $(CPPFLAGS) $<
iolog_util.plog: iolog_util.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_util.c --i-file $< --output-file $@
+iolog_write.lo: $(srcdir)/iolog_write.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/iolog_write.c
+iolog_write.i: $(srcdir)/iolog_write.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_iolog.h $(incdir)/sudo_queue.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+iolog_write.plog: iolog_write.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/iolog_write.c --i-file $< --output-file $@
diff --git a/lib/iolog/iolog_clearerr.c b/lib/iolog/iolog_clearerr.c
new file mode 100644
index 000000000..631e02090
--- /dev/null
+++ b/lib/iolog/iolog_clearerr.c
@@ -0,0 +1,45 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+void
+iolog_clearerr(struct iolog_file *iol)
+{
+ debug_decl(iolog_eof, SUDO_DEBUG_UTIL);
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed)
+ gzclearerr(iol->fd.g);
+ else
+#endif
+ clearerr(iol->fd.f);
+ debug_return;
+}
diff --git a/lib/iolog/iolog_close.c b/lib/iolog/iolog_close.c
new file mode 100644
index 000000000..caa68c6db
--- /dev/null
+++ b/lib/iolog/iolog_close.c
@@ -0,0 +1,80 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <string.h>
+#include <errno.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+/*
+ * Close an I/O log.
+ */
+bool
+iolog_close(struct iolog_file *iol, const char **errstr)
+{
+ bool ret = true;
+ debug_decl(iolog_close, SUDO_DEBUG_UTIL);
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed) {
+ int errnum;
+
+ /* Must check error indicator before closing. */
+ if (iol->writable) {
+ if (gzflush(iol->fd.g, Z_SYNC_FLUSH) != Z_OK) {
+ ret = false;
+ if (errstr != NULL) {
+ *errstr = gzerror(iol->fd.g, &errnum);
+ if (errnum == Z_ERRNO)
+ *errstr = strerror(errno);
+ }
+ }
+ }
+ errnum = gzclose(iol->fd.g);
+ if (ret && errnum != Z_OK) {
+ ret = false;
+ if (errstr != NULL)
+ *errstr = errnum == Z_ERRNO ? strerror(errno) : "unknown error";
+ }
+ } else
+#endif
+ if (fclose(iol->fd.f) != 0) {
+ ret = false;
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ }
+
+ debug_return_bool(ret);
+}
diff --git a/lib/iolog/iolog_conf.c b/lib/iolog/iolog_conf.c
new file mode 100644
index 000000000..58e893c15
--- /dev/null
+++ b/lib/iolog/iolog_conf.c
@@ -0,0 +1,202 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+
+#include "pathnames.h"
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_util.h"
+#include "sudo_iolog.h"
+
+static unsigned int sessid_max = SESSID_MAX;
+static mode_t iolog_filemode = S_IRUSR|S_IWUSR;
+static mode_t iolog_dirmode = S_IRWXU;
+static uid_t iolog_uid = ROOT_UID;
+static gid_t iolog_gid = ROOT_GID;
+static bool iolog_gid_set;
+static bool iolog_compress;
+static bool iolog_flush;
+
+/*
+ * Reset I/O log settings to default values.
+ */
+void
+iolog_set_defaults(void)
+{
+ sessid_max = SESSID_MAX;
+ iolog_filemode = S_IRUSR|S_IWUSR;
+ iolog_dirmode = S_IRWXU;
+ iolog_uid = ROOT_UID;
+ iolog_gid = ROOT_GID;
+ iolog_gid_set = false;
+ iolog_compress = false;
+ iolog_flush = false;
+}
+
+/*
+ * Set max sequence number (aka session ID)
+ */
+void
+iolog_set_maxseq(unsigned int newval)
+{
+ debug_decl(iolog_set_maxseq, SUDO_DEBUG_UTIL);
+
+ /* Clamp to SESSID_MAX as documented. */
+ if (newval > SESSID_MAX)
+ newval = SESSID_MAX;
+ sessid_max = newval;
+
+ debug_return;
+}
+
+/*
+ * Set iolog_uid (and iolog_gid if gid not explicitly set).
+ */
+void
+iolog_set_owner(uid_t uid, gid_t gid)
+{
+ debug_decl(iolog_set_owner, SUDO_DEBUG_UTIL);
+
+ iolog_uid = uid;
+ if (!iolog_gid_set)
+ iolog_gid = gid;
+
+ debug_return;
+}
+
+/*
+ * Set iolog_gid.
+ */
+void
+iolog_set_gid(gid_t gid)
+{
+ debug_decl(iolog_set_gid, SUDO_DEBUG_UTIL);
+
+ iolog_gid = gid;
+ iolog_gid_set = true;
+
+ debug_return;
+}
+
+/*
+ * Set iolog_filemode and iolog_dirmode.
+ */
+void
+iolog_set_mode(mode_t mode)
+{
+ debug_decl(iolog_set_mode, SUDO_DEBUG_UTIL);
+
+ /* I/O log files must be readable and writable by owner. */
+ iolog_filemode = S_IRUSR|S_IWUSR;
+
+ /* Add in group and other read/write if specified. */
+ iolog_filemode |= mode & (S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
+
+ /* For directory mode, add execute bits as needed. */
+ iolog_dirmode = iolog_filemode | S_IXUSR;
+ if (iolog_dirmode & (S_IRGRP|S_IWGRP))
+ iolog_dirmode |= S_IXGRP;
+ if (iolog_dirmode & (S_IROTH|S_IWOTH))
+ iolog_dirmode |= S_IXOTH;
+
+ debug_return;
+}
+
+/*
+ * Set iolog_compress
+ */
+void
+iolog_set_compress(bool newval)
+{
+ debug_decl(iolog_set_compress, SUDO_DEBUG_UTIL);
+ iolog_compress = newval;
+ debug_return;
+}
+
+/*
+ * Set iolog_flush
+ */
+void
+iolog_set_flush(bool newval)
+{
+ debug_decl(iolog_set_flush, SUDO_DEBUG_UTIL);
+ iolog_flush = newval;
+ debug_return;
+}
+
+/*
+ * Getters.
+ */
+
+unsigned int
+iolog_get_maxseq(void)
+{
+ return sessid_max;
+}
+
+uid_t
+iolog_get_uid(void)
+{
+ return iolog_uid;
+}
+
+gid_t
+iolog_get_gid(void)
+{
+ return iolog_gid;
+}
+
+mode_t
+iolog_get_file_mode(void)
+{
+ return iolog_filemode;
+}
+
+mode_t
+iolog_get_dir_mode(void)
+{
+ return iolog_dirmode;
+}
+
+bool
+iolog_get_compress(void)
+{
+ return iolog_compress;
+}
+
+bool
+iolog_get_flush(void)
+{
+ return iolog_flush;
+}
diff --git a/lib/iolog/iolog_eof.c b/lib/iolog/iolog_eof.c
new file mode 100644
index 000000000..c1cece287
--- /dev/null
+++ b/lib/iolog/iolog_eof.c
@@ -0,0 +1,54 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+/*
+ * Returns true if at end of I/O log file, else false.
+ */
+bool
+iolog_eof(struct iolog_file *iol)
+{
+ bool ret;
+ debug_decl(iolog_eof, SUDO_DEBUG_UTIL);
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed)
+ ret = gzeof(iol->fd.g) != 0;
+ else
+#endif
+ ret = feof(iol->fd.f) != 0;
+ debug_return_int(ret);
+}
diff --git a/lib/iolog/iolog_fileio.c b/lib/iolog/iolog_fileio.c
deleted file mode 100644
index 84aeaa85b..000000000
--- a/lib/iolog/iolog_fileio.c
+++ /dev/null
@@ -1,1061 +0,0 @@
-/*
- * SPDX-License-Identifier: ISC
- *
- * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * This is an open source non-commercial project. Dear PVS-Studio, please check it.
- * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
- */
-
-#include <config.h>
-
-#include <sys/stat.h>
-#include <stdio.h>
-#include <stdlib.h>
-#ifdef HAVE_STDBOOL_H
-# include <stdbool.h>
-#else
-# include "compat/stdbool.h"
-#endif
-#include <string.h>
-#include <unistd.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <limits.h>
-
-#include "pathnames.h"
-#include "sudo_compat.h"
-#include "sudo_conf.h"
-#include "sudo_debug.h"
-#include "sudo_eventlog.h"
-#include "sudo_fatal.h"
-#include "sudo_gettext.h"
-#include "sudo_iolog.h"
-#include "sudo_json.h"
-#include "sudo_queue.h"
-#include "sudo_util.h"
-
-static unsigned char const gzip_magic[2] = {0x1f, 0x8b};
-static unsigned int sessid_max = SESSID_MAX;
-static mode_t iolog_filemode = S_IRUSR|S_IWUSR;
-static mode_t iolog_dirmode = S_IRWXU;
-static uid_t iolog_uid = ROOT_UID;
-static gid_t iolog_gid = ROOT_GID;
-static bool iolog_gid_set;
-static bool iolog_compress;
-static bool iolog_flush;
-
-/*
- * Set effective user and group-IDs to iolog_uid and iolog_gid.
- * If restore flag is set, swap them back.
- */
-static bool
-io_swapids(bool restore)
-{
-#ifdef HAVE_SETEUID
- static uid_t user_euid = (uid_t)-1;
- static gid_t user_egid = (gid_t)-1;
- debug_decl(io_swapids, SUDO_DEBUG_UTIL);
-
- if (user_euid == (uid_t)-1)
- user_euid = geteuid();
- if (user_egid == (gid_t)-1)
- user_egid = getegid();
-
- if (restore) {
- if (seteuid(user_euid) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to restore effective uid to %d", __func__,
- (int)user_euid);
- sudo_warn("seteuid() %d -> %d", (int)iolog_uid, (int)user_euid);
- debug_return_bool(false);
- }
- if (setegid(user_egid) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to restore effective gid to %d", __func__,
- (int)user_egid);
- sudo_warn("setegid() %d -> %d", (int)iolog_gid, (int)user_egid);
- debug_return_bool(false);
- }
- } else {
- /* Fail silently if the user has insufficient privileges. */
- if (setegid(iolog_gid) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to set effective gid to %d", __func__,
- (int)iolog_gid);
- debug_return_bool(false);
- }
- if (seteuid(iolog_uid) == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to set effective uid to %d", __func__,
- (int)iolog_uid);
- debug_return_bool(false);
- }
- }
- debug_return_bool(true);
-#else
- return false;
-#endif
-}
-
-/*
- * Create directory and any parent directories as needed.
- */
-static bool
-iolog_mkdirs(char *path)
-{
- mode_t omask;
- struct stat sb;
- int dfd;
- bool ok = true, uid_changed = false;
- debug_decl(iolog_mkdirs, SUDO_DEBUG_UTIL);
-
- dfd = open(path, O_RDONLY|O_NONBLOCK);
- if (dfd == -1 && errno == EACCES) {
- /* Try again as the I/O log owner (for NFS). */
- if (io_swapids(false)) {
- dfd = open(path, O_RDONLY|O_NONBLOCK);
- if (!io_swapids(true)) {
- ok = false;
- goto done;
- }
- }
- }
- if (dfd != -1 && fstat(dfd, &sb) != -1) {
- if (S_ISDIR(sb.st_mode)) {
- if (sb.st_uid != iolog_uid || sb.st_gid != iolog_gid) {
- if (fchown(dfd, iolog_uid, iolog_gid) != 0) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to chown %d:%d %s", __func__,
- (int)iolog_uid, (int)iolog_gid, path);
- }
- }
- if ((sb.st_mode & ALLPERMS) != iolog_dirmode) {
- if (fchmod(dfd, iolog_dirmode) != 0) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to chmod 0%o %s", __func__,
- (int)iolog_dirmode, path);
- }
- }
- } else {
- sudo_warnx(U_("%s exists but is not a directory (0%o)"),
- path, (unsigned int) sb.st_mode);
- ok = false;
- }
- goto done;
- }
-
- /* umask must not be more restrictive than the file modes. */
- omask = umask(ACCESSPERMS & ~(iolog_filemode|iolog_dirmode));
-
- ok = sudo_mkdir_parents(path, iolog_uid, iolog_gid, iolog_dirmode, true);
- if (!ok && errno == EACCES) {
- /* Try again as the I/O log owner (for NFS). */
- uid_changed = io_swapids(false);
- if (uid_changed)
- ok = sudo_mkdir_parents(path, -1, -1, iolog_dirmode, false);
- }
- if (ok) {
- /* Create final path component. */
- sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_LINENO,
- "mkdir %s, mode 0%o", path, (unsigned int) iolog_dirmode);
- ok = mkdir(path, iolog_dirmode) == 0 || errno == EEXIST;
- if (!ok) {
- if (errno == EACCES && !uid_changed) {
- /* Try again as the I/O log owner (for NFS). */
- uid_changed = io_swapids(false);
- if (uid_changed)
- ok = mkdir(path, iolog_dirmode) == 0 || errno == EEXIST;
- }
- if (!ok)
- sudo_warn(U_("unable to mkdir %s"), path);
- } else {
- if (chown(path, iolog_uid, iolog_gid) != 0) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to chown %d:%d %s", __func__,
- (int)iolog_uid, (int)iolog_gid, path);
- }
- }
- }
- if (uid_changed) {
- if (!io_swapids(true))
- ok = false;
- }
-
- umask(omask);
-
-done:
- if (dfd != -1)
- close(dfd);
- debug_return_bool(ok);
-}
-
-/*
- * Create temporary directory and any parent directories as needed.
- */
-bool
-iolog_mkdtemp(char *path)
-{
- bool ok, uid_changed = false;
- debug_decl(iolog_mkdtemp, SUDO_DEBUG_UTIL);
-
- ok = sudo_mkdir_parents(path, iolog_uid, iolog_gid, iolog_dirmode, true);
- if (!ok && errno == EACCES) {
- /* Try again as the I/O log owner (for NFS). */
- uid_changed = io_swapids(false);
- if (uid_changed)
- ok = sudo_mkdir_parents(path, -1, -1, iolog_dirmode, false);
- }
- if (ok) {
- /* Create final path component. */
- sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_LINENO,
- "mkdtemp %s", path);
- /* We cannot retry mkdtemp() so always open as iolog user */
- if (!uid_changed)
- uid_changed = io_swapids(false);
- if (mkdtemp(path) == NULL) {
- sudo_warn(U_("unable to mkdir %s"), path);
- ok = false;
- } else {
- if (chmod(path, iolog_dirmode) != 0) {
- sudo_warn(U_("unable to change mode of %s to 0%o"),
- path, (unsigned int)iolog_dirmode);
- }
- }
- }
-
- if (uid_changed) {
- if (!io_swapids(true))
- ok = false;
- }
- debug_return_bool(ok);
-}
-
-/*
- * Like rename(2) but changes UID as needed.
- */
-bool
-iolog_rename(const char *from, const char *to)
-{
- bool ok, uid_changed = false;
- debug_decl(iolog_rename, SUDO_DEBUG_UTIL);
-
- ok = rename(from, to) == 0;
- if (!ok && errno == EACCES) {
- uid_changed = io_swapids(false);
- if (uid_changed)
- ok = rename(from, to) == 0;
- }
-
- if (uid_changed) {
- if (!io_swapids(true))
- ok = false;
- }
- debug_return_bool(ok);
-}
-
-/*
- * Reset I/O log settings to default values.
- */
-void
-iolog_set_defaults(void)
-{
- sessid_max = SESSID_MAX;
- iolog_filemode = S_IRUSR|S_IWUSR;
- iolog_dirmode = S_IRWXU;
- iolog_uid = ROOT_UID;
- iolog_gid = ROOT_GID;
- iolog_gid_set = false;
- iolog_compress = false;
- iolog_flush = false;
-}
-
-/*
- * Set max sequence number (aka session ID)
- */
-void
-iolog_set_maxseq(unsigned int newval)
-{
- debug_decl(iolog_set_maxseq, SUDO_DEBUG_UTIL);
-
- /* Clamp to SESSID_MAX as documented. */
- if (newval > SESSID_MAX)
- newval = SESSID_MAX;
- sessid_max = newval;
-
- debug_return;
-}
-
-/*
- * Set iolog_uid (and iolog_gid if gid not explicitly set).
- */
-void
-iolog_set_owner(uid_t uid, gid_t gid)
-{
- debug_decl(iolog_set_owner, SUDO_DEBUG_UTIL);
-
- iolog_uid = uid;
- if (!iolog_gid_set)
- iolog_gid = gid;
-
- debug_return;
-}
-
-/*
- * Set iolog_gid.
- */
-void
-iolog_set_gid(gid_t gid)
-{
- debug_decl(iolog_set_gid, SUDO_DEBUG_UTIL);
-
- iolog_gid = gid;
- iolog_gid_set = true;
-
- debug_return;
-}
-
-/*
- * Set iolog_filemode and iolog_dirmode.
- */
-void
-iolog_set_mode(mode_t mode)
-{
- debug_decl(iolog_set_mode, SUDO_DEBUG_UTIL);
-
- /* I/O log files must be readable and writable by owner. */
- iolog_filemode = S_IRUSR|S_IWUSR;
-
- /* Add in group and other read/write if specified. */
- iolog_filemode |= mode & (S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
-
- /* For directory mode, add execute bits as needed. */
- iolog_dirmode = iolog_filemode | S_IXUSR;
- if (iolog_dirmode & (S_IRGRP|S_IWGRP))
- iolog_dirmode |= S_IXGRP;
- if (iolog_dirmode & (S_IROTH|S_IWOTH))
- iolog_dirmode |= S_IXOTH;
-
- debug_return;
-}
-
-/*
- * Set iolog_compress
- */
-void
-iolog_set_compress(bool newval)
-{
- debug_decl(iolog_set_compress, SUDO_DEBUG_UTIL);
- iolog_compress = newval;
- debug_return;
-}
-
-/*
- * Set iolog_flush
- */
-void
-iolog_set_flush(bool newval)
-{
- debug_decl(iolog_set_flush, SUDO_DEBUG_UTIL);
- iolog_flush = newval;
- debug_return;
-}
-
-/*
- * Wrapper for openat(2) that sets umask and retries as iolog_uid/iolog_gid
- * if openat(2) returns EACCES.
- */
-int
-iolog_openat(int dfd, const char *path, int flags)
-{
- int fd;
- mode_t omask = S_IRWXG|S_IRWXO;
- debug_decl(iolog_openat, SUDO_DEBUG_UTIL);
-
- if (ISSET(flags, O_CREAT)) {
- /* umask must not be more restrictive than the file modes. */
- omask = umask(ACCESSPERMS & ~(iolog_filemode|iolog_dirmode));
- }
- fd = openat(dfd, path, flags, iolog_filemode);
- if (fd == -1 && errno == EACCES) {
- /* Enable write bit if it is missing. */
- struct stat sb;
- if (fstatat(dfd, path, &sb, 0) == 0) {
- mode_t write_bits = iolog_filemode & (S_IWUSR|S_IWGRP|S_IWOTH);
- if ((sb.st_mode & write_bits) != write_bits) {
- if (fchmodat(dfd, path, iolog_filemode, 0) == 0)
- fd = openat(dfd, path, flags, iolog_filemode);
- }
- }
- }
- if (fd == -1 && errno == EACCES) {
- /* Try again as the I/O log owner (for NFS). */
- if (io_swapids(false)) {
- fd = openat(dfd, path, flags, iolog_filemode);
- if (!io_swapids(true)) {
- /* io_swapids() warns on error. */
- if (fd != -1) {
- close(fd);
- fd = -1;
- }
- }
- }
- }
- if (ISSET(flags, O_CREAT))
- umask(omask);
- debug_return_int(fd);
-}
-
-/*
- * Read the on-disk sequence number, set sessid to the next
- * number, and update the on-disk copy.
- * Uses file locking to avoid sequence number collisions.
- */
-bool
-iolog_nextid(char *iolog_dir, char sessid[7])
-{
- char buf[32], *ep;
- int i, len, fd = -1;
- unsigned long id = 0;
- ssize_t nread;
- bool ret = false;
- char pathbuf[PATH_MAX];
- static const char b36char[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
- debug_decl(iolog_nextid, SUDO_DEBUG_UTIL);
-
- /*
- * Create I/O log directory if it doesn't already exist.
- */
- if (!iolog_mkdirs(iolog_dir))
- goto done;
-
- /*
- * Open sequence file
- */
- len = snprintf(pathbuf, sizeof(pathbuf), "%s/seq", iolog_dir);
- if (len < 0 || len >= ssizeof(pathbuf)) {
- errno = ENAMETOOLONG;
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: %s/seq", __func__, iolog_dir);
- goto done;
- }
- fd = iolog_openat(AT_FDCWD, pathbuf, O_RDWR|O_CREAT);
- if (fd == -1) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to open %s", __func__, pathbuf);
- goto done;
- }
- if (!sudo_lock_file(fd, SUDO_LOCK)) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "unable to lock %s", pathbuf);
- goto done;
- }
- if (fchown(fd, iolog_uid, iolog_gid) != 0) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to fchown %d:%d %s", __func__,
- (int)iolog_uid, (int)iolog_gid, pathbuf);
- }
-
- /* Read current seq number (base 36). */
- nread = read(fd, buf, sizeof(buf) - 1);
- if (nread != 0) {
- if (nread == -1) {
- goto done;
- }
- if (buf[nread - 1] == '\n')
- nread--;
- buf[nread] = '\0';
- id = strtoul(buf, &ep, 36);
- if (ep == buf || *ep != '\0' || id >= sessid_max) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "%s: bad sequence number: %s", pathbuf, buf);
- id = 0;
- }
- }
- id++;
-
- /*
- * Convert id to a string and stash in sessid.
- * Note that that least significant digits go at the end of the string.
- */
- for (i = 5; i >= 0; i--) {
- buf[i] = b36char[id % 36];
- id /= 36;
- }
- buf[6] = '\n';
-
- /* Stash id for logging purposes. */
- memcpy(sessid, buf, 6);
- sessid[6] = '\0';
-
- /* Rewind and overwrite old seq file, including the NUL byte. */
-#ifdef HAVE_PWRITE
- if (pwrite(fd, buf, 7, 0) != 7) {
-#else
- if (lseek(fd, 0, SEEK_SET) == -1 || write(fd, buf, 7) != 7) {
-#endif
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to write %s", __func__, pathbuf);
- goto done;
- }
- ret = true;
-
-done:
- if (fd != -1)
- close(fd);
- debug_return_bool(ret);
-}
-
-/*
- * Create path and any intermediate directories.
- * If path ends in 'XXXXXX', use mkdtemp().
- */
-bool
-iolog_mkpath(char *path)
-{
- size_t len;
- bool ret;
- debug_decl(iolog_mkpath, SUDO_DEBUG_UTIL);
-
- /*
- * Create path and intermediate subdirs as needed.
- * If path ends in at least 6 Xs (ala POSIX mktemp), use mkdtemp().
- * Sets iolog_gid (if it is not already set) as a side effect.
- */
- len = strlen(path);
- if (len >= 6 && strcmp(&path[len - 6], "XXXXXX") == 0)
- ret = iolog_mkdtemp(path);
- else
- ret = iolog_mkdirs(path);
-
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "iolog path %s", path);
-
- debug_return_bool(ret);
-}
-
-/*
- * Append suffix to pathbuf after len chars and open the resulting file.
- * Note that the size of pathbuf is assumed to be PATH_MAX.
- * Stores the open file handle which has the close-on-exec flag set.
- * XXX - move enabled logic into caller?
- */
-bool
-iolog_open(struct iolog_file *iol, int dfd, int iofd, const char *mode)
-{
- int flags;
- const char *file;
- unsigned char magic[2];
- debug_decl(iolog_open, SUDO_DEBUG_UTIL);
-
- if (mode[0] == 'r') {
- flags = mode[1] == '+' ? O_RDWR : O_RDONLY;
- } else if (mode[0] == 'w') {
- flags = O_CREAT|O_TRUNC;
- flags |= mode[1] == '+' ? O_RDWR : O_WRONLY;
- } else {
- sudo_debug_printf(SUDO_DEBUG_ERROR,
- "%s: invalid I/O mode %s", __func__, mode);
- debug_return_bool(false);
- }
- if ((file = iolog_fd_to_name(iofd)) == NULL) {
- sudo_debug_printf(SUDO_DEBUG_ERROR,
- "%s: invalid iofd %d", __func__, iofd);
- debug_return_bool(false);
- }
-
- iol->writable = false;
- iol->compressed = false;
- if (iol->enabled) {
- int fd = iolog_openat(dfd, file, flags);
- if (fd != -1) {
- if (*mode == 'w') {
- if (fchown(fd, iolog_uid, iolog_gid) != 0) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to fchown %d:%d %s", __func__,
- (int)iolog_uid, (int)iolog_gid, file);
- }
- iol->compressed = iolog_compress;
- } else {
- /* check for gzip magic number */
- if (pread(fd, magic, sizeof(magic), 0) == ssizeof(magic)) {
- if (magic[0] == gzip_magic[0] && magic[1] == gzip_magic[1])
- iol->compressed = true;
- }
- }
- if (fcntl(fd, F_SETFD, FD_CLOEXEC) != -1) {
-#ifdef HAVE_ZLIB_H
- if (iol->compressed)
- iol->fd.g = gzdopen(fd, mode);
- else
-#endif
- iol->fd.f = fdopen(fd, mode);
- }
- if (iol->fd.v != NULL) {
- switch ((flags & O_ACCMODE)) {
- case O_WRONLY:
- case O_RDWR:
- iol->writable = true;
- break;
- }
- } else {
- int save_errno = errno;
- close(fd);
- errno = save_errno;
- fd = -1;
- }
- }
- if (fd == -1) {
- iol->enabled = false;
- debug_return_bool(false);
- }
- } else {
- if (*mode == 'w') {
- /* Remove old log file in case we recycled sequence numbers. */
- (void)unlinkat(dfd, file, 0);
- }
- }
- debug_return_bool(true);
-}
-
-#ifdef HAVE_ZLIB_H
-static const char *
-gzstrerror(gzFile file)
-{
- const char *errstr;
- int errnum;
-
- errstr = gzerror(file, &errnum);
- if (errnum == Z_ERRNO)
- errstr = strerror(errno);
-
- return errstr;
-}
-#endif /* HAVE_ZLIB_H */
-
-/*
- * Close an I/O log.
- */
-bool
-iolog_close(struct iolog_file *iol, const char **errstr)
-{
- bool ret = true;
- debug_decl(iolog_close, SUDO_DEBUG_UTIL);
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed) {
- int errnum;
-
- /* Must check error indicator before closing. */
- if (iol->writable) {
- if (gzflush(iol->fd.g, Z_SYNC_FLUSH) != Z_OK) {
- ret = false;
- if (errstr != NULL)
- *errstr = gzstrerror(iol->fd.g);
- }
- }
- errnum = gzclose(iol->fd.g);
- if (ret && errnum != Z_OK) {
- ret = false;
- if (errstr != NULL)
- *errstr = errnum == Z_ERRNO ? strerror(errno) : "unknown error";
- }
- } else
-#endif
- if (fclose(iol->fd.f) != 0) {
- ret = false;
- if (errstr != NULL)
- *errstr = strerror(errno);
- }
-
- debug_return_bool(ret);
-}
-
-/*
- * I/O log wrapper for fseek/gzseek.
- */
-off_t
-iolog_seek(struct iolog_file *iol, off_t offset, int whence)
-{
- off_t ret;
- //debug_decl(iolog_seek, SUDO_DEBUG_UTIL);
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed)
- ret = gzseek(iol->fd.g, offset, whence);
- else
-#endif
- ret = fseeko(iol->fd.f, offset, whence);
-
- //debug_return_off_t(ret);
- return ret;
-}
-
-/*
- * I/O log wrapper for rewind/gzrewind.
- */
-void
-iolog_rewind(struct iolog_file *iol)
-{
- debug_decl(iolog_rewind, SUDO_DEBUG_UTIL);
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed)
- (void)gzrewind(iol->fd.g);
- else
-#endif
- rewind(iol->fd.f);
-
- debug_return;
-}
-
-/*
- * Read from a (possibly compressed) I/O log file.
- */
-ssize_t
-iolog_read(struct iolog_file *iol, void *buf, size_t nbytes,
- const char **errstr)
-{
- ssize_t nread;
- debug_decl(iolog_read, SUDO_DEBUG_UTIL);
-
- if (nbytes > UINT_MAX) {
- errno = EINVAL;
- if (errstr != NULL)
- *errstr = strerror(errno);
- debug_return_ssize_t(-1);
- }
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed) {
- if ((nread = gzread(iol->fd.g, buf, nbytes)) == -1) {
- if (errstr != NULL)
- *errstr = gzstrerror(iol->fd.g);
- }
- } else
-#endif
- {
- nread = (ssize_t)fread(buf, 1, nbytes, iol->fd.f);
- if (nread == 0 && ferror(iol->fd.f)) {
- nread = -1;
- if (errstr != NULL)
- *errstr = strerror(errno);
- }
- }
- debug_return_ssize_t(nread);
-}
-
-/*
- * Write to an I/O log, optionally compressing.
- */
-ssize_t
-iolog_write(struct iolog_file *iol, const void *buf, size_t len,
- const char **errstr)
-{
- ssize_t ret;
- debug_decl(iolog_write, SUDO_DEBUG_UTIL);
-
- if (len > UINT_MAX) {
- errno = EINVAL;
- if (errstr != NULL)
- *errstr = strerror(errno);
- debug_return_ssize_t(-1);
- }
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed) {
- ret = gzwrite(iol->fd.g, (const voidp)buf, len);
- if (ret == 0) {
- ret = -1;
- if (errstr != NULL)
- *errstr = gzstrerror(iol->fd.g);
- goto done;
- }
- if (iolog_flush) {
- if (gzflush(iol->fd.g, Z_SYNC_FLUSH) != Z_OK) {
- ret = -1;
- if (errstr != NULL)
- *errstr = gzstrerror(iol->fd.g);
- goto done;
- }
- }
- } else
-#endif
- {
- ret = fwrite(buf, 1, len, iol->fd.f);
- if (ret == 0) {
- ret = -1;
- if (errstr != NULL)
- *errstr = strerror(errno);
- goto done;
- }
- if (iolog_flush) {
- if (fflush(iol->fd.f) != 0) {
- ret = -1;
- if (errstr != NULL)
- *errstr = strerror(errno);
- goto done;
- }
- }
- }
-
-done:
- debug_return_ssize_t(ret);
-}
-
-/*
- * Returns true if at end of I/O log file, else false.
- */
-bool
-iolog_eof(struct iolog_file *iol)
-{
- bool ret;
- debug_decl(iolog_eof, SUDO_DEBUG_UTIL);
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed)
- ret = gzeof(iol->fd.g) == 1;
- else
-#endif
- ret = feof(iol->fd.f) == 1;
- debug_return_int(ret);
-}
-
-void
-iolog_clearerr(struct iolog_file *iol)
-{
- debug_decl(iolog_eof, SUDO_DEBUG_UTIL);
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed)
- gzclearerr(iol->fd.g);
- else
-#endif
- clearerr(iol->fd.f);
- debug_return;
-}
-
-/*
- * Like gets() but for struct iolog_file.
- */
-char *
-iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes,
- const char **errstr)
-{
- char *str;
- debug_decl(iolog_gets, SUDO_DEBUG_UTIL);
-
- if (nbytes > UINT_MAX) {
- errno = EINVAL;
- if (errstr != NULL)
- *errstr = strerror(errno);
- debug_return_str(NULL);
- }
-
-#ifdef HAVE_ZLIB_H
- if (iol->compressed) {
- if ((str = gzgets(iol->fd.g, buf, nbytes)) == NULL) {
- if (errstr != NULL)
- *errstr = gzstrerror(iol->fd.g);
- }
- } else
-#endif
- {
- if ((str = fgets(buf, nbytes, iol->fd.f)) == NULL) {
- if (errstr != NULL)
- *errstr = strerror(errno);
- }
- }
- debug_return_str(str);
-}
-
-/*
- * Write the legacy I/O log file that contains the user and command info.
- * This file is not compressed.
- */
-static bool
-iolog_write_info_file_legacy(int dfd, struct eventlog *evlog)
-{
- char * const *av;
- FILE *fp;
- int error, fd;
- debug_decl(iolog_info_write_log, SUDO_DEBUG_UTIL);
-
- fd = iolog_openat(dfd, "log", O_CREAT|O_TRUNC|O_WRONLY);
- if (fd == -1 || (fp = fdopen(fd, "w")) == NULL) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
- "unable to open %s/log", evlog->iolog_path);
- if (fd != -1)
- close(fd);
- debug_return_bool(false);
- }
- if (fchown(fd, iolog_uid, iolog_gid) != 0) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to fchown %d:%d %s/log", __func__,
- (int)iolog_uid, (int)iolog_gid, evlog->iolog_path);
- }
-
- fprintf(fp, "%lld:%s:%s:%s:%s:%d:%d\n%s\n",
- (long long)evlog->submit_time.tv_sec,
- evlog->submituser ? evlog->submituser : "unknown",
- evlog->runuser ? evlog->runuser : RUNAS_DEFAULT,
- evlog->rungroup ? evlog->rungroup : "",
- evlog->ttyname ? evlog->ttyname : "unknown",
- evlog->lines, evlog->columns,
- evlog->cwd ? evlog->cwd : "unknown");
- fputs(evlog->command ? evlog->command : "unknown", fp);
- for (av = evlog->argv + 1; *av != NULL; av++) {
- fputc(' ', fp);
- fputs(*av, fp);
- }
- fputc('\n', fp);
- fflush(fp);
- if ((error = ferror(fp))) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
- "unable to write to I/O log file %s/log", evlog->iolog_path);
- }
- fclose(fp);
-
- debug_return_bool(!error);
-}
-
-/*
- * Write the "log.json" file that contains the user and command info.
- * This file is not compressed.
- */
-static bool
-iolog_write_info_file_json(int dfd, struct eventlog *evlog)
-{
- struct json_container json;
- struct json_value json_value;
- bool ret = false;
- FILE *fp = NULL;
- int fd = -1;
- debug_decl(iolog_write_info_file_json, SUDO_DEBUG_UTIL);
-
- if (!sudo_json_init(&json, 4, false, false))
- debug_return_bool(false);
-
- /* Timestamp */
- if (!sudo_json_open_object(&json, "timestamp"))
- goto oom;
-
- json_value.type = JSON_NUMBER;
- json_value.u.number = evlog->submit_time.tv_sec;
- if (!sudo_json_add_value(&json, "seconds", &json_value))
- goto oom;
-
- json_value.type = JSON_NUMBER;
- json_value.u.number = evlog->submit_time.tv_nsec;
- if (!sudo_json_add_value(&json, "nanoseconds", &json_value))
- goto oom;
-
- if (!sudo_json_close_object(&json))
- goto oom;
-
- if (!eventlog_store_json(&json, evlog))
- goto done;
-
- fd = iolog_openat(dfd, "log.json", O_CREAT|O_TRUNC|O_WRONLY);
- if (fd == -1 || (fp = fdopen(fd, "w")) == NULL) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
- "unable to open %s/log.json", evlog->iolog_path);
- goto done;
- }
-
- if (fchown(fd, iolog_uid, iolog_gid) != 0) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
- "%s: unable to fchown %d:%d %s/log", __func__,
- (int)iolog_uid, (int)iolog_gid, evlog->iolog_path);
- }
- fd = -1;
-
- fprintf(fp, "{%s\n}\n", sudo_json_get_buf(&json));
- fflush(fp);
- if (ferror(fp)) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
- "unable to write to I/O log file %s/log.json", evlog->iolog_path);
- goto done;
- }
-
- ret = true;
- goto done;
-
-oom:
- sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
-done:
- sudo_json_free(&json);
- if (fp != NULL)
- fclose(fp);
- if (fd != -1)
- close(fd);
-
- debug_return_bool(ret);
-}
-
-/*
- * Write the I/O log and log.json files that contain user and command info.
- * These files are not compressed.
- */
-bool
-iolog_write_info_file(int dfd, struct eventlog *evlog)
-{
- debug_decl(iolog_write_info_file, SUDO_DEBUG_UTIL);
-
- if (!iolog_write_info_file_legacy(dfd, evlog))
- debug_return_bool(false);
- if (!iolog_write_info_file_json(dfd, evlog))
- debug_return_bool(false);
-
- debug_return_bool(true);
-}
-
-/*
- * Map IOFD_* -> name.
- */
-const char *
-iolog_fd_to_name(int iofd)
-{
- const char *ret;
- debug_decl(iolog_fd_to_name, SUDO_DEBUG_UTIL);
-
- switch (iofd) {
- case IOFD_STDIN:
- ret = "stdin";
- break;
- case IOFD_STDOUT:
- ret = "stdout";
- break;
- case IOFD_STDERR:
- ret = "stderr";
- break;
- case IOFD_TTYIN:
- ret = "ttyin";
- break;
- case IOFD_TTYOUT:
- ret = "ttyout";
- break;
- case IOFD_TIMING:
- ret = "timing";
- break;
- default:
- ret = "unknown";
- sudo_debug_printf(SUDO_DEBUG_ERROR, "%s: unexpected iofd %d",
- __func__, iofd);
- break;
- }
- debug_return_const_str(ret);
-}
diff --git a/lib/iolog/iolog_gets.c b/lib/iolog/iolog_gets.c
new file mode 100644
index 000000000..0ef5a2362
--- /dev/null
+++ b/lib/iolog/iolog_gets.c
@@ -0,0 +1,78 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+/*
+ * Like gets() but for struct iolog_file.
+ */
+char *
+iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes,
+ const char **errstr)
+{
+ char *str;
+ debug_decl(iolog_gets, SUDO_DEBUG_UTIL);
+
+ if (nbytes > UINT_MAX) {
+ errno = EINVAL;
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ debug_return_str(NULL);
+ }
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed) {
+ if ((str = gzgets(iol->fd.g, buf, nbytes)) == NULL) {
+ if (errstr != NULL) {
+ int errnum;
+ *errstr = gzerror(iol->fd.g, &errnum);
+ if (errnum == Z_ERRNO)
+ *errstr = strerror(errno);
+ }
+ }
+ } else
+#endif
+ {
+ if ((str = fgets(buf, nbytes, iol->fd.f)) == NULL) {
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ }
+ }
+ debug_return_str(str);
+}
diff --git a/lib/iolog/iolog_json.c b/lib/iolog/iolog_json.c
index 684f938c0..a27fe4d6c 100644
--- a/lib/iolog/iolog_json.c
+++ b/lib/iolog/iolog_json.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2020-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -79,6 +79,7 @@ json_store_command(struct json_item *item, struct eventlog *evlog)
* Note: struct eventlog must store command + args.
* We don't have argv yet so we append the args later.
*/
+ free(evlog->command);
evlog->command = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -114,7 +115,11 @@ json_array_to_strvec(struct json_object *array)
sudo_warnx(U_("expected JSON_STRING, got %d"), item->type);
debug_return_ptr(NULL);
}
- len++;
+ /* Prevent integer overflow. */
+ if (++len == INT_MAX) {
+ sudo_warnx("%s", U_("JSON_ARRAY too large"));
+ debug_return_ptr(NULL);
+ }
}
if ((ret = reallocarray(NULL, len + 1, sizeof(char *))) == NULL) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
@@ -133,8 +138,14 @@ json_array_to_strvec(struct json_object *array)
static bool
json_store_runargv(struct json_item *item, struct eventlog *evlog)
{
+ int i;
debug_decl(json_store_runargv, SUDO_DEBUG_UTIL);
+ if (evlog->argv != NULL) {
+ for (i = 0; evlog->argv[i] != NULL; i++)
+ free(evlog->argv[i]);
+ free(evlog->argv);
+ }
evlog->argv = json_array_to_strvec(&item->u.child);
debug_return_bool(evlog->argv != NULL);
@@ -143,8 +154,14 @@ json_store_runargv(struct json_item *item, struct eventlog *evlog)
static bool
json_store_runenv(struct json_item *item, struct eventlog *evlog)
{
+ int i;
debug_decl(json_store_runenv, SUDO_DEBUG_UTIL);
+ if (evlog->envp != NULL) {
+ for (i = 0; evlog->envp[i] != NULL; i++)
+ free(evlog->envp[i]);
+ free(evlog->envp);
+ }
evlog->envp = json_array_to_strvec(&item->u.child);
debug_return_bool(evlog->envp != NULL);
@@ -164,6 +181,7 @@ json_store_rungroup(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_rungroup, SUDO_DEBUG_UTIL);
+ free(evlog->rungroup);
evlog->rungroup = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -183,6 +201,7 @@ json_store_runuser(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_runuser, SUDO_DEBUG_UTIL);
+ free(evlog->runuser);
evlog->runuser = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -193,6 +212,7 @@ json_store_runchroot(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_runchroot, SUDO_DEBUG_UTIL);
+ free(evlog->runchroot);
evlog->runchroot = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -203,6 +223,7 @@ json_store_runcwd(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_runcwd, SUDO_DEBUG_UTIL);
+ free(evlog->runcwd);
evlog->runcwd = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -213,6 +234,7 @@ json_store_submitcwd(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_submitcwd, SUDO_DEBUG_UTIL);
+ free(evlog->cwd);
evlog->cwd = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -223,6 +245,7 @@ json_store_submithost(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_submithost, SUDO_DEBUG_UTIL);
+ free(evlog->submithost);
evlog->submithost = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -233,6 +256,7 @@ json_store_submituser(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_submituser, SUDO_DEBUG_UTIL);
+ free(evlog->submituser);
evlog->submituser = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -265,6 +289,7 @@ json_store_ttyname(struct json_item *item, struct eventlog *evlog)
{
debug_decl(json_store_ttyname, SUDO_DEBUG_UTIL);
+ free(evlog->ttyname);
evlog->ttyname = item->u.string;
item->u.string = NULL;
debug_return_bool(true);
@@ -331,8 +356,10 @@ json_parse_string(char **strp)
/* Copy string, flattening escaped chars. */
dst = ret = malloc(len + 1);
- if (dst == NULL)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ if (dst == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_str(NULL);
+ }
while (src < end) {
char ch = *src++;
/* TODO: handle unicode escapes */
@@ -391,7 +418,15 @@ free_json_items(struct json_item_list *items)
case JSON_OBJECT:
free_json_items(&item->u.child.items);
break;
+ case JSON_ID:
+ case JSON_NUMBER:
+ case JSON_BOOL:
+ case JSON_NULL:
+ /* Nothing to free. */
+ break;
default:
+ sudo_warnx("%s: internal error, invalid JSON type %d",
+ __func__, item->type);
break;
}
free(item->name);
@@ -410,6 +445,10 @@ iolog_parse_json_object(struct json_object *object, struct eventlog *evlog)
/* First object holds all the actual data. */
item = TAILQ_FIRST(&object->items);
+ if (item == NULL) {
+ sudo_warnx("%s", U_("missing JSON_OBJECT"));
+ goto done;
+ }
if (item->type != JSON_OBJECT) {
sudo_warnx(U_("expected JSON_OBJECT, got %d"), item->type);
goto done;
@@ -419,6 +458,13 @@ iolog_parse_json_object(struct json_object *object, struct eventlog *evlog)
TAILQ_FOREACH(item, &object->items, entries) {
struct iolog_json_key *key;
+ /* expecting key:value pairs */
+ if (item->name == NULL) {
+ sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO,
+ "%s: missing object name", __func__);
+ goto done;
+ }
+
/* lookup name */
for (key = iolog_json_keys; key->name != NULL; key++) {
if (strcmp(item->name, key->name) == 0)
@@ -444,7 +490,7 @@ iolog_parse_json_object(struct json_object *object, struct eventlog *evlog)
}
/* Merge cmd and argv as sudoreplay expects. */
- if (evlog->command != NULL && evlog->argv != NULL) {
+ if (evlog->command != NULL && evlog->argv != NULL && evlog->argv[0] != NULL) {
size_t len = strlen(evlog->command) + 1;
char *newcmd;
int ac;
@@ -546,7 +592,13 @@ json_stack_push(struct json_stack *stack, struct json_item_list *items,
unsigned int lineno)
{
struct json_item *item;
- debug_decl(iolog_parse_loginfo_json, SUDO_DEBUG_UTIL);
+ debug_decl(json_stack_push, SUDO_DEBUG_UTIL);
+
+ /* We limit the stack size rather than expanding it. */
+ if (stack->depth >= stack->maxdepth) {
+ sudo_warnx(U_("json stack exhausted (max %u frames)"), stack->maxdepth);
+ debug_return_ptr(NULL);
+ }
/* Allocate a new item and insert it into the list. */
if ((item = new_json_item(type, name, lineno)) == NULL)
@@ -555,9 +607,7 @@ json_stack_push(struct json_stack *stack, struct json_item_list *items,
item->u.child.parent = item;
TAILQ_INSERT_TAIL(items, item, entries);
- /* Push the current frame onto the stack. */
- if (stack->depth == stack->maxdepth)
- sudo_fatalx(U_("internal error, %s overflow"), __func__);
+ /* Push the current frame onto the stack (depth check performed above). */
stack->frames[stack->depth++] = frame;
/* Return the new frame */
@@ -574,10 +624,11 @@ iolog_parse_json(FILE *fp, const char *filename, struct json_object *root)
struct json_stack stack = JSON_STACK_INTIALIZER(stack);
unsigned int lineno = 0;
char *name = NULL;
- char *buf = NULL;
+ char *cp, *buf = NULL;
size_t bufsize = 0;
ssize_t len;
bool ret = false;
+ bool saw_comma = false;
long long num;
char ch;
debug_decl(iolog_parse_json, SUDO_DEBUG_UTIL);
@@ -586,8 +637,8 @@ iolog_parse_json(FILE *fp, const char *filename, struct json_object *root)
TAILQ_INIT(&root->items);
while ((len = getdelim(&buf, &bufsize, '\n', fp)) != -1) {
- char *cp = buf;
char *ep = buf + len - 1;
+ cp = buf;
lineno++;
@@ -603,143 +654,205 @@ iolog_parse_json(FILE *fp, const char *filename, struct json_object *root)
while (isspace((unsigned char)*cp))
cp++;
- /* Strip out commas. TODO: require commas between values. */
+ /* Check for comma separator and strip it out. */
if (*cp == ',') {
+ saw_comma = true;
cp++;
while (isspace((unsigned char)*cp))
cp++;
}
+ /* End of line? */
if (*cp == '\0')
break;
switch (*cp) {
case '{':
+ if (name == NULL && frame->parent != NULL) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("objects must consist of name:value pairs"));
+ goto done;
+ }
+ if (!saw_comma && !TAILQ_EMPTY(&frame->items)) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing separator between values"));
+ goto done;
+ }
cp++;
+ saw_comma = false;
frame = json_stack_push(&stack, &frame->items, frame,
JSON_OBJECT, name, lineno);
if (frame == NULL)
- goto parse_error;
+ goto done;
name = NULL;
break;
case '}':
- cp++;
if (stack.depth == 0 || frame->parent == NULL ||
frame->parent->type != JSON_OBJECT) {
- sudo_warnx("%s", U_("unmatched close brace"));
- goto parse_error;
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unmatched close brace"));
+ goto done;
}
+ cp++;
frame = stack.frames[--stack.depth];
+ saw_comma = false;
break;
case '[':
- cp++;
if (frame->parent == NULL) {
/* Must have an enclosing object. */
- sudo_warnx("%s", U_("unexpected array"));
- goto parse_error;
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unexpected array"));
+ goto done;
}
+ if (!saw_comma && !TAILQ_EMPTY(&frame->items)) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing separator between values"));
+ goto done;
+ }
+ cp++;
+ saw_comma = false;
frame = json_stack_push(&stack, &frame->items, frame,
JSON_ARRAY, name, lineno);
if (frame == NULL)
- goto parse_error;
+ goto done;
name = NULL;
break;
case ']':
- cp++;
if (stack.depth == 0 || frame->parent == NULL ||
frame->parent->type != JSON_ARRAY) {
- sudo_warnx("%s", U_("unmatched close bracket"));
- goto parse_error;
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unmatched close bracket"));
+ goto done;
}
+ cp++;
frame = stack.frames[--stack.depth];
+ saw_comma = false;
break;
case '"':
if (frame->parent == NULL) {
/* Must have an enclosing object. */
- sudo_warnx("%s", U_("unexpected string"));
- goto parse_error;
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unexpected string"));
+ goto done;
}
if (!expect_value) {
/* Parse "name": */
if ((name = json_parse_string(&cp)) == NULL)
- goto parse_error;
+ goto done;
/* TODO: allow colon on next line? */
- if (*cp++ != ':') {
- sudo_warnx("%s", U_("missing colon after name"));
- goto parse_error;
+ if (*cp != ':') {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing colon after name"));
+ goto done;
}
+ cp++;
} else {
+ if (!saw_comma && !TAILQ_EMPTY(&frame->items)) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing separator between values"));
+ goto done;
+ }
+ saw_comma = false;
if (!json_insert_str(&frame->items, name, &cp, lineno))
- goto parse_error;
+ goto done;
name = NULL;
}
break;
case 't':
- if (!expect_value) {
- sudo_warnx("%s", U_("unexpected boolean"));
- goto parse_error;
- }
if (strncmp(cp, "true", sizeof("true") - 1) != 0)
goto parse_error;
+ if (!expect_value) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unexpected boolean"));
+ goto done;
+ }
cp += sizeof("true") - 1;
if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0')
goto parse_error;
+ if (!saw_comma && !TAILQ_EMPTY(&frame->items)) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing separator between values"));
+ goto done;
+ }
+ saw_comma = false;
if (!json_insert_bool(&frame->items, name, true, lineno))
- goto parse_error;
+ goto done;
name = NULL;
break;
case 'f':
- if (!expect_value) {
- sudo_warnx("%s", U_("unexpected boolean"));
- goto parse_error;
- }
if (strncmp(cp, "false", sizeof("false") - 1) != 0)
goto parse_error;
+ if (!expect_value) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unexpected boolean"));
+ goto done;
+ }
cp += sizeof("false") - 1;
if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0')
goto parse_error;
+ if (!saw_comma && !TAILQ_EMPTY(&frame->items)) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing separator between values"));
+ goto done;
+ }
+ saw_comma = false;
if (!json_insert_bool(&frame->items, name, false, lineno))
- goto parse_error;
+ goto done;
name = NULL;
break;
case 'n':
- if (!expect_value) {
- sudo_warnx("%s", U_("unexpected boolean"));
- goto parse_error;
- }
if (strncmp(cp, "null", sizeof("null") - 1) != 0)
goto parse_error;
+ if (!expect_value) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unexpected null"));
+ goto done;
+ }
cp += sizeof("null") - 1;
if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0')
goto parse_error;
+ if (!saw_comma && !TAILQ_EMPTY(&frame->items)) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing separator between values"));
+ goto done;
+ }
+ saw_comma = false;
if (!json_insert_null(&frame->items, name, lineno))
- goto parse_error;
+ goto done;
name = NULL;
break;
case '+': case '-': case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7': case '8': case '9':
if (!expect_value) {
- sudo_warnx("%s", U_("unexpected number"));
- goto parse_error;
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unexpected number"));
+ goto done;
}
/* XXX - strtonumx() would be simpler here. */
len = strcspn(cp, " \f\n\r\t\v,");
ch = cp[len];
cp[len] = '\0';
+ if (!saw_comma && !TAILQ_EMPTY(&frame->items)) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("missing separator between values"));
+ goto done;
+ }
+ saw_comma = false;
num = sudo_strtonum(cp, LLONG_MIN, LLONG_MAX, &errstr);
if (errstr != NULL) {
- sudo_warnx(U_("%s: %s"), cp, U_(errstr));
- goto parse_error;
+ sudo_warnx("%s:%u:%td: %s: %s", filename, lineno, cp - buf,
+ cp, U_(errstr));
+ goto done;
}
cp += len;
*cp = ch;
if (!json_insert_num(&frame->items, name, num, lineno))
- goto parse_error;
+ goto done;
name = NULL;
break;
default:
@@ -749,18 +862,21 @@ iolog_parse_json(FILE *fp, const char *filename, struct json_object *root)
}
if (stack.depth != 0) {
frame = stack.frames[stack.depth - 1];
- if (frame->parent == NULL || frame->parent->type == JSON_OBJECT)
- sudo_warnx("%s", U_("unmatched close brace"));
- else
- sudo_warnx("%s", U_("unmatched close bracket"));
- goto parse_error;
+ if (frame->parent == NULL || frame->parent->type == JSON_OBJECT) {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unmatched close brace"));
+ } else {
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf,
+ U_("unmatched close bracket"));
+ }
+ goto done;
}
ret = true;
goto done;
parse_error:
- sudo_warnx(U_("%s:%u unable to parse \"%s\""), filename, lineno, buf);
+ sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, U_("parse error"));
done:
free(buf);
free(name);
diff --git a/lib/iolog/iolog_legacy.c b/lib/iolog/iolog_legacy.c
new file mode 100644
index 000000000..5d987ae8f
--- /dev/null
+++ b/lib/iolog/iolog_legacy.c
@@ -0,0 +1,168 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif /* HAVE_STDBOOL_H */
+#include <string.h>
+#include <signal.h>
+#include <limits.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+bool
+iolog_parse_loginfo_legacy(FILE *fp, const char *iolog_dir,
+ struct eventlog *evlog)
+{
+ char *buf = NULL, *cp, *ep;
+ const char *errstr;
+ size_t bufsize = 0, cwdsize = 0, cmdsize = 0;
+ bool ret = false;
+ debug_decl(iolog_parse_loginfo_legacy, SUDO_DEBUG_UTIL);
+
+ /*
+ * Info file has three lines:
+ * 1) a log info line
+ * 2) cwd
+ * 3) command with args
+ */
+ if (getdelim(&buf, &bufsize, '\n', fp) == -1 ||
+ getdelim(&evlog->cwd, &cwdsize, '\n', fp) == -1 ||
+ getdelim(&evlog->command, &cmdsize, '\n', fp) == -1) {
+ sudo_warn(U_("%s: invalid log file"), iolog_dir);
+ goto done;
+ }
+
+ /* Strip the newline from the cwd and command. */
+ evlog->cwd[strcspn(evlog->cwd, "\n")] = '\0';
+ evlog->command[strcspn(evlog->command, "\n")] = '\0';
+
+ /*
+ * Crack the log line (lines and cols not present in old versions).
+ * timestamp:user:runas_user:runas_group:tty:lines:cols
+ * XXX - probably better to use strtok and switch on the state.
+ */
+ buf[strcspn(buf, "\n")] = '\0';
+ cp = buf;
+
+ /* timestamp */
+ if ((ep = strchr(cp, ':')) == NULL) {
+ sudo_warn(U_("%s: time stamp field is missing"), iolog_dir);
+ goto done;
+ }
+ *ep = '\0';
+ evlog->submit_time.tv_sec = sudo_strtonum(cp, 0, TIME_T_MAX, &errstr);
+ if (errstr != NULL) {
+ sudo_warn(U_("%s: time stamp %s: %s"), iolog_dir, cp, errstr);
+ goto done;
+ }
+
+ /* submit user */
+ cp = ep + 1;
+ if ((ep = strchr(cp, ':')) == NULL) {
+ sudo_warn(U_("%s: user field is missing"), iolog_dir);
+ goto done;
+ }
+ if ((evlog->submituser = strndup(cp, (size_t)(ep - cp))) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+
+ /* runas user */
+ cp = ep + 1;
+ if ((ep = strchr(cp, ':')) == NULL) {
+ sudo_warn(U_("%s: runas user field is missing"), iolog_dir);
+ goto done;
+ }
+ if ((evlog->runuser = strndup(cp, (size_t)(ep - cp))) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+
+ /* runas group */
+ cp = ep + 1;
+ if ((ep = strchr(cp, ':')) == NULL) {
+ sudo_warn(U_("%s: runas group field is missing"), iolog_dir);
+ goto done;
+ }
+ if (cp != ep) {
+ if ((evlog->rungroup = strndup(cp, (size_t)(ep - cp))) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+ }
+
+ /* tty, followed by optional lines + cols */
+ cp = ep + 1;
+ if ((ep = strchr(cp, ':')) == NULL) {
+ /* just the tty */
+ if ((evlog->ttyname = strdup(cp)) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+ } else {
+ /* tty followed by lines + cols */
+ if ((evlog->ttyname = strndup(cp, (size_t)(ep - cp))) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+ cp = ep + 1;
+ /* need to NULL out separator to use sudo_strtonum() */
+ /* XXX - use sudo_strtonumx */
+ if ((ep = strchr(cp, ':')) != NULL) {
+ *ep = '\0';
+ }
+ evlog->lines = sudo_strtonum(cp, 1, INT_MAX, &errstr);
+ if (errstr != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: tty lines %s: %s", iolog_dir, cp, errstr);
+ }
+ if (ep != NULL) {
+ cp = ep + 1;
+ evlog->columns = sudo_strtonum(cp, 1, INT_MAX, &errstr);
+ if (errstr != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: tty cols %s: %s", iolog_dir, cp, errstr);
+ }
+ }
+ }
+
+ ret = true;
+
+done:
+ free(buf);
+ debug_return_bool(ret);
+}
diff --git a/lib/iolog/iolog_loginfo.c b/lib/iolog/iolog_loginfo.c
new file mode 100644
index 000000000..daf2a7105
--- /dev/null
+++ b/lib/iolog/iolog_loginfo.c
@@ -0,0 +1,236 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif /* HAVE_STDBOOL_H */
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_json.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+struct eventlog *
+iolog_parse_loginfo(int dfd, const char *iolog_dir)
+{
+ struct eventlog *evlog = NULL;
+ FILE *fp = NULL;
+ int fd = -1;
+ int tmpfd = -1;
+ bool ok, legacy = false;
+ debug_decl(iolog_parse_loginfo, SUDO_DEBUG_UTIL);
+
+ if (dfd == -1) {
+ if ((tmpfd = open(iolog_dir, O_RDONLY)) == -1) {
+ sudo_warn("%s", iolog_dir);
+ goto bad;
+ }
+ dfd = tmpfd;
+ }
+ if ((fd = openat(dfd, "log.json", O_RDONLY, 0)) == -1) {
+ fd = openat(dfd, "log", O_RDONLY, 0);
+ legacy = true;
+ }
+ if (tmpfd != -1)
+ close(tmpfd);
+ if (fd == -1 || (fp = fdopen(fd, "r")) == NULL) {
+ sudo_warn("%s/log", iolog_dir);
+ goto bad;
+ }
+ fd = -1;
+
+ if ((evlog = calloc(1, sizeof(*evlog))) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto bad;
+ }
+ evlog->runuid = (uid_t)-1;
+ evlog->rungid = (gid_t)-1;
+
+ ok = legacy ? iolog_parse_loginfo_legacy(fp, iolog_dir, evlog) :
+ iolog_parse_loginfo_json(fp, iolog_dir, evlog);
+ if (ok) {
+ fclose(fp);
+ debug_return_ptr(evlog);
+ }
+
+bad:
+ if (fd != -1)
+ close(fd);
+ if (fp != NULL)
+ fclose(fp);
+ eventlog_free(evlog);
+ debug_return_ptr(NULL);
+}
+
+/*
+ * Write the legacy I/O log file that contains the user and command info.
+ * This file is not compressed.
+ */
+static bool
+iolog_write_info_file_legacy(int dfd, struct eventlog *evlog)
+{
+ char * const *av;
+ FILE *fp;
+ int error, fd;
+ debug_decl(iolog_info_write_log, SUDO_DEBUG_UTIL);
+
+ fd = iolog_openat(dfd, "log", O_CREAT|O_TRUNC|O_WRONLY);
+ if (fd == -1 || (fp = fdopen(fd, "w")) == NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+ "unable to open %s/log", evlog->iolog_path);
+ if (fd != -1)
+ close(fd);
+ debug_return_bool(false);
+ }
+ if (fchown(fd, iolog_get_uid(), iolog_get_gid()) != 0) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to fchown %d:%d %s/log", __func__,
+ (int)iolog_get_uid(), (int)iolog_get_gid(), evlog->iolog_path);
+ }
+
+ fprintf(fp, "%lld:%s:%s:%s:%s:%d:%d\n%s\n",
+ (long long)evlog->submit_time.tv_sec,
+ evlog->submituser ? evlog->submituser : "unknown",
+ evlog->runuser ? evlog->runuser : RUNAS_DEFAULT,
+ evlog->rungroup ? evlog->rungroup : "",
+ evlog->ttyname ? evlog->ttyname : "unknown",
+ evlog->lines, evlog->columns,
+ evlog->cwd ? evlog->cwd : "unknown");
+ fputs(evlog->command ? evlog->command : "unknown", fp);
+ for (av = evlog->argv + 1; *av != NULL; av++) {
+ fputc(' ', fp);
+ fputs(*av, fp);
+ }
+ fputc('\n', fp);
+ fflush(fp);
+ if ((error = ferror(fp))) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+ "unable to write to I/O log file %s/log", evlog->iolog_path);
+ }
+ fclose(fp);
+
+ debug_return_bool(!error);
+}
+
+/*
+ * Write the "log.json" file that contains the user and command info.
+ * This file is not compressed.
+ */
+static bool
+iolog_write_info_file_json(int dfd, struct eventlog *evlog)
+{
+ struct json_container json;
+ struct json_value json_value;
+ bool ret = false;
+ FILE *fp = NULL;
+ int fd = -1;
+ debug_decl(iolog_write_info_file_json, SUDO_DEBUG_UTIL);
+
+ if (!sudo_json_init(&json, 4, false, false))
+ debug_return_bool(false);
+
+ /* Timestamp */
+ if (!sudo_json_open_object(&json, "timestamp"))
+ goto oom;
+
+ json_value.type = JSON_NUMBER;
+ json_value.u.number = evlog->submit_time.tv_sec;
+ if (!sudo_json_add_value(&json, "seconds", &json_value))
+ goto oom;
+
+ json_value.type = JSON_NUMBER;
+ json_value.u.number = evlog->submit_time.tv_nsec;
+ if (!sudo_json_add_value(&json, "nanoseconds", &json_value))
+ goto oom;
+
+ if (!sudo_json_close_object(&json))
+ goto oom;
+
+ if (!eventlog_store_json(&json, evlog))
+ goto done;
+
+ fd = iolog_openat(dfd, "log.json", O_CREAT|O_TRUNC|O_WRONLY);
+ if (fd == -1 || (fp = fdopen(fd, "w")) == NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+ "unable to open %s/log.json", evlog->iolog_path);
+ goto done;
+ }
+ if (fchown(fd, iolog_get_uid(), iolog_get_gid()) != 0) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to fchown %d:%d %s/log.json", __func__,
+ (int)iolog_get_uid(), (int)iolog_get_gid(), evlog->iolog_path);
+ }
+ fd = -1;
+
+ fprintf(fp, "{%s\n}\n", sudo_json_get_buf(&json));
+ fflush(fp);
+ if (ferror(fp)) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO|SUDO_DEBUG_ERRNO,
+ "unable to write to I/O log file %s/log.json", evlog->iolog_path);
+ goto done;
+ }
+
+ ret = true;
+ goto done;
+
+oom:
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+done:
+ sudo_json_free(&json);
+ if (fp != NULL)
+ fclose(fp);
+ if (fd != -1)
+ close(fd);
+
+ debug_return_bool(ret);
+}
+
+/*
+ * Write the I/O log and log.json files that contain user and command info.
+ * These files are not compressed.
+ */
+bool
+iolog_write_info_file(int dfd, struct eventlog *evlog)
+{
+ debug_decl(iolog_write_info_file, SUDO_DEBUG_UTIL);
+
+ if (!iolog_write_info_file_legacy(dfd, evlog))
+ debug_return_bool(false);
+ if (!iolog_write_info_file_json(dfd, evlog))
+ debug_return_bool(false);
+
+ debug_return_bool(true);
+}
diff --git a/lib/iolog/iolog_mkdirs.c b/lib/iolog/iolog_mkdirs.c
new file mode 100644
index 000000000..baa9eba00
--- /dev/null
+++ b/lib/iolog/iolog_mkdirs.c
@@ -0,0 +1,139 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+/*
+ * Create directory and any parent directories as needed.
+ */
+bool
+iolog_mkdirs(char *path)
+{
+ const mode_t iolog_filemode = iolog_get_file_mode();
+ const mode_t iolog_dirmode = iolog_get_dir_mode();
+ const uid_t iolog_uid = iolog_get_uid();
+ const gid_t iolog_gid = iolog_get_gid();
+ bool ok = true, uid_changed = false;
+ struct stat sb;
+ mode_t omask;
+ int dfd;
+ debug_decl(iolog_mkdirs, SUDO_DEBUG_UTIL);
+
+ dfd = open(path, O_RDONLY|O_NONBLOCK);
+ if (dfd == -1 && errno == EACCES) {
+ /* Try again as the I/O log owner (for NFS). */
+ if (iolog_swapids(false)) {
+ dfd = open(path, O_RDONLY|O_NONBLOCK);
+ if (!iolog_swapids(true)) {
+ ok = false;
+ goto done;
+ }
+ }
+ }
+ if (dfd != -1 && fstat(dfd, &sb) != -1) {
+ if (S_ISDIR(sb.st_mode)) {
+ if (sb.st_uid != iolog_uid || sb.st_gid != iolog_gid) {
+ if (fchown(dfd, iolog_uid, iolog_gid) != 0) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to chown %d:%d %s", __func__,
+ (int)iolog_uid, (int)iolog_gid, path);
+ }
+ }
+ if ((sb.st_mode & ALLPERMS) != iolog_dirmode) {
+ if (fchmod(dfd, iolog_dirmode) != 0) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to chmod 0%o %s", __func__,
+ (int)iolog_dirmode, path);
+ }
+ }
+ } else {
+ sudo_warnx(U_("%s exists but is not a directory (0%o)"),
+ path, (unsigned int) sb.st_mode);
+ ok = false;
+ }
+ goto done;
+ }
+
+ /* umask must not be more restrictive than the file modes. */
+ omask = umask(ACCESSPERMS & ~(iolog_filemode|iolog_dirmode));
+
+ ok = sudo_mkdir_parents(path, iolog_uid, iolog_gid, iolog_dirmode, true);
+ if (!ok && errno == EACCES) {
+ /* Try again as the I/O log owner (for NFS). */
+ uid_changed = iolog_swapids(false);
+ if (uid_changed)
+ ok = sudo_mkdir_parents(path, -1, -1, iolog_dirmode, false);
+ }
+ if (ok) {
+ /* Create final path component. */
+ sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_LINENO,
+ "mkdir %s, mode 0%o", path, (unsigned int) iolog_dirmode);
+ ok = mkdir(path, iolog_dirmode) == 0 || errno == EEXIST;
+ if (!ok) {
+ if (errno == EACCES && !uid_changed) {
+ /* Try again as the I/O log owner (for NFS). */
+ uid_changed = iolog_swapids(false);
+ if (uid_changed)
+ ok = mkdir(path, iolog_dirmode) == 0 || errno == EEXIST;
+ }
+ if (!ok)
+ sudo_warn(U_("unable to mkdir %s"), path);
+ } else {
+ if (chown(path, iolog_uid, iolog_gid) != 0) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to chown %d:%d %s", __func__,
+ (int)iolog_uid, (int)iolog_gid, path);
+ }
+ }
+ }
+ if (uid_changed) {
+ if (!iolog_swapids(true))
+ ok = false;
+ }
+
+ umask(omask);
+
+done:
+ if (dfd != -1)
+ close(dfd);
+ debug_return_bool(ok);
+}
diff --git a/lib/iolog/iolog_mkdtemp.c b/lib/iolog/iolog_mkdtemp.c
new file mode 100644
index 000000000..72c180414
--- /dev/null
+++ b/lib/iolog/iolog_mkdtemp.c
@@ -0,0 +1,87 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <time.h>
+#include <errno.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_util.h"
+#include "sudo_iolog.h"
+
+/*
+ * Create temporary directory and any parent directories as needed.
+ */
+bool
+iolog_mkdtemp(char *path)
+{
+ const mode_t iolog_dirmode = iolog_get_dir_mode();
+ const uid_t iolog_uid = iolog_get_uid();
+ const gid_t iolog_gid = iolog_get_gid();
+ bool ok, uid_changed = false;
+ debug_decl(iolog_mkdtemp, SUDO_DEBUG_UTIL);
+
+ ok = sudo_mkdir_parents(path, iolog_uid, iolog_gid, iolog_dirmode, true);
+ if (!ok && errno == EACCES) {
+ /* Try again as the I/O log owner (for NFS). */
+ uid_changed = iolog_swapids(false);
+ if (uid_changed)
+ ok = sudo_mkdir_parents(path, -1, -1, iolog_dirmode, false);
+ }
+ if (ok) {
+ /* Create final path component. */
+ sudo_debug_printf(SUDO_DEBUG_DEBUG|SUDO_DEBUG_LINENO,
+ "mkdtemp %s", path);
+ /* We cannot retry mkdtemp() so always open as iolog user */
+ if (!uid_changed)
+ uid_changed = iolog_swapids(false);
+ if (mkdtemp(path) == NULL) {
+ sudo_warn(U_("unable to mkdir %s"), path);
+ ok = false;
+ } else {
+ if (chmod(path, iolog_dirmode) != 0) {
+ sudo_warn(U_("unable to change mode of %s to 0%o"),
+ path, (unsigned int)iolog_dirmode);
+ }
+ }
+ }
+
+ if (uid_changed) {
+ if (!iolog_swapids(true))
+ ok = false;
+ }
+ debug_return_bool(ok);
+}
diff --git a/lib/iolog/iolog_mkpath.c b/lib/iolog/iolog_mkpath.c
new file mode 100644
index 000000000..b4d177a99
--- /dev/null
+++ b/lib/iolog/iolog_mkpath.c
@@ -0,0 +1,65 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <string.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+/*
+ * Create path and any intermediate directories.
+ * If path ends in 'XXXXXX', use mkdtemp().
+ */
+bool
+iolog_mkpath(char *path)
+{
+ size_t len;
+ bool ret;
+ debug_decl(iolog_mkpath, SUDO_DEBUG_UTIL);
+
+ /*
+ * Create path and intermediate subdirs as needed.
+ * If path ends in at least 6 Xs (ala POSIX mktemp), use mkdtemp().
+ * Sets iolog_gid (if it is not already set) as a side effect.
+ */
+ len = strlen(path);
+ if (len >= 6 && strcmp(&path[len - 6], "XXXXXX") == 0)
+ ret = iolog_mkdtemp(path);
+ else
+ ret = iolog_mkdirs(path);
+
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO, "iolog path %s", path);
+
+ debug_return_bool(ret);
+}
diff --git a/lib/iolog/iolog_nextid.c b/lib/iolog/iolog_nextid.c
new file mode 100644
index 000000000..5ca0ca691
--- /dev/null
+++ b/lib/iolog/iolog_nextid.c
@@ -0,0 +1,143 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+/*
+ * Read the on-disk sequence number, set sessid to the next
+ * number, and update the on-disk copy.
+ * Uses file locking to avoid sequence number collisions.
+ */
+bool
+iolog_nextid(char *iolog_dir, char sessid[7])
+{
+ char buf[32], *ep;
+ int i, len, fd = -1;
+ unsigned long id = 0;
+ ssize_t nread;
+ bool ret = false;
+ char pathbuf[PATH_MAX];
+ static const char b36char[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ const uid_t iolog_uid = iolog_get_uid();
+ const gid_t iolog_gid = iolog_get_gid();
+ debug_decl(iolog_nextid, SUDO_DEBUG_UTIL);
+
+ /*
+ * Create I/O log directory if it doesn't already exist.
+ */
+ if (!iolog_mkdirs(iolog_dir))
+ goto done;
+
+ /*
+ * Open sequence file
+ */
+ len = snprintf(pathbuf, sizeof(pathbuf), "%s/seq", iolog_dir);
+ if (len < 0 || len >= ssizeof(pathbuf)) {
+ errno = ENAMETOOLONG;
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: %s/seq", __func__, iolog_dir);
+ goto done;
+ }
+ fd = iolog_openat(AT_FDCWD, pathbuf, O_RDWR|O_CREAT);
+ if (fd == -1) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to open %s", __func__, pathbuf);
+ goto done;
+ }
+ if (!sudo_lock_file(fd, SUDO_LOCK)) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "unable to lock %s", pathbuf);
+ goto done;
+ }
+ if (fchown(fd, iolog_uid, iolog_gid) != 0) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to fchown %d:%d %s", __func__,
+ (int)iolog_uid, (int)iolog_gid, pathbuf);
+ }
+
+ /* Read current seq number (base 36). */
+ nread = read(fd, buf, sizeof(buf) - 1);
+ if (nread != 0) {
+ if (nread == -1) {
+ goto done;
+ }
+ if (buf[nread - 1] == '\n')
+ nread--;
+ buf[nread] = '\0';
+ id = strtoul(buf, &ep, 36);
+ if (ep == buf || *ep != '\0' || id >= iolog_get_maxseq()) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: bad sequence number: %s", pathbuf, buf);
+ id = 0;
+ }
+ }
+ id++;
+
+ /*
+ * Convert id to a string and stash in sessid.
+ * Note that that least significant digits go at the end of the string.
+ */
+ for (i = 5; i >= 0; i--) {
+ buf[i] = b36char[id % 36];
+ id /= 36;
+ }
+ buf[6] = '\n';
+
+ /* Stash id for logging purposes. */
+ memcpy(sessid, buf, 6);
+ sessid[6] = '\0';
+
+ /* Rewind and overwrite old seq file, including the NUL byte. */
+ if (pwrite(fd, buf, 7, 0) != 7) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to write %s", __func__, pathbuf);
+ goto done;
+ }
+ ret = true;
+
+done:
+ if (fd != -1)
+ close(fd);
+ debug_return_bool(ret);
+}
diff --git a/lib/iolog/iolog_open.c b/lib/iolog/iolog_open.c
new file mode 100644
index 000000000..c2556a7f8
--- /dev/null
+++ b/lib/iolog/iolog_open.c
@@ -0,0 +1,127 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <errno.h>
+#include <fcntl.h>
+#include <time.h>
+#include <unistd.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+static unsigned char const gzip_magic[2] = {0x1f, 0x8b};
+
+/*
+ * Open the specified I/O log file and store in iol.
+ * Stores the open file handle which has the close-on-exec flag set.
+ */
+bool
+iolog_open(struct iolog_file *iol, int dfd, int iofd, const char *mode)
+{
+ int flags;
+ const char *file;
+ unsigned char magic[2];
+ const uid_t iolog_uid = iolog_get_uid();
+ const gid_t iolog_gid = iolog_get_gid();
+ debug_decl(iolog_open, SUDO_DEBUG_UTIL);
+
+ if (mode[0] == 'r') {
+ flags = mode[1] == '+' ? O_RDWR : O_RDONLY;
+ } else if (mode[0] == 'w') {
+ flags = O_CREAT|O_TRUNC;
+ flags |= mode[1] == '+' ? O_RDWR : O_WRONLY;
+ } else {
+ sudo_debug_printf(SUDO_DEBUG_ERROR,
+ "%s: invalid I/O mode %s", __func__, mode);
+ debug_return_bool(false);
+ }
+ if ((file = iolog_fd_to_name(iofd)) == NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR,
+ "%s: invalid iofd %d", __func__, iofd);
+ debug_return_bool(false);
+ }
+
+ iol->writable = false;
+ iol->compressed = false;
+ if (iol->enabled) {
+ int fd = iolog_openat(dfd, file, flags);
+ if (fd != -1) {
+ if (*mode == 'w') {
+ if (fchown(fd, iolog_uid, iolog_gid) != 0) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to fchown %d:%d %s", __func__,
+ (int)iolog_uid, (int)iolog_gid, file);
+ }
+ iol->compressed = iolog_get_compress();
+ } else {
+ /* check for gzip magic number */
+ if (pread(fd, magic, sizeof(magic), 0) == ssizeof(magic)) {
+ if (magic[0] == gzip_magic[0] && magic[1] == gzip_magic[1])
+ iol->compressed = true;
+ }
+ }
+ if (fcntl(fd, F_SETFD, FD_CLOEXEC) != -1) {
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed)
+ iol->fd.g = gzdopen(fd, mode);
+ else
+#endif
+ iol->fd.f = fdopen(fd, mode);
+ }
+ if (iol->fd.v != NULL) {
+ switch ((flags & O_ACCMODE)) {
+ case O_WRONLY:
+ case O_RDWR:
+ iol->writable = true;
+ break;
+ }
+ } else {
+ int save_errno = errno;
+ close(fd);
+ errno = save_errno;
+ fd = -1;
+ }
+ }
+ if (fd == -1) {
+ iol->enabled = false;
+ debug_return_bool(false);
+ }
+ } else {
+ if (*mode == 'w') {
+ /* Remove old log file in case we recycled sequence numbers. */
+ (void)unlinkat(dfd, file, 0);
+ }
+ }
+ debug_return_bool(true);
+}
diff --git a/lib/iolog/iolog_openat.c b/lib/iolog/iolog_openat.c
new file mode 100644
index 000000000..f6cd21b57
--- /dev/null
+++ b/lib/iolog/iolog_openat.c
@@ -0,0 +1,90 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <errno.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+/*
+ * Wrapper for openat(2) that sets umask and retries as iolog_uid/iolog_gid
+ * if openat(2) returns EACCES.
+ */
+int
+iolog_openat(int dfd, const char *path, int flags)
+{
+ const mode_t iolog_filemode = iolog_get_file_mode();
+ const mode_t iolog_dirmode = iolog_get_dir_mode();
+ mode_t omask = S_IRWXG|S_IRWXO;
+ int fd;
+ debug_decl(iolog_openat, SUDO_DEBUG_UTIL);
+
+ if (ISSET(flags, O_CREAT)) {
+ /* umask must not be more restrictive than the file modes. */
+ omask = umask(ACCESSPERMS & ~(iolog_filemode|iolog_dirmode));
+ }
+ fd = openat(dfd, path, flags, iolog_filemode);
+ if (fd == -1 && errno == EACCES) {
+ /* Enable write bit if it is missing. */
+ struct stat sb;
+ if (fstatat(dfd, path, &sb, 0) == 0) {
+ mode_t write_bits = iolog_filemode & (S_IWUSR|S_IWGRP|S_IWOTH);
+ if ((sb.st_mode & write_bits) != write_bits) {
+ if (fchmodat(dfd, path, iolog_filemode, 0) == 0)
+ fd = openat(dfd, path, flags, iolog_filemode);
+ }
+ }
+ }
+ if (fd == -1 && errno == EACCES) {
+ /* Try again as the I/O log owner (for NFS). */
+ if (iolog_swapids(false)) {
+ fd = openat(dfd, path, flags, iolog_filemode);
+ if (!iolog_swapids(true)) {
+ /* iolog_swapids() warns on error. */
+ if (fd != -1) {
+ close(fd);
+ fd = -1;
+ }
+ }
+ }
+ }
+ if (ISSET(flags, O_CREAT))
+ umask(omask);
+ debug_return_int(fd);
+}
diff --git a/lib/iolog/iolog_read.c b/lib/iolog/iolog_read.c
new file mode 100644
index 000000000..71f778a14
--- /dev/null
+++ b/lib/iolog/iolog_read.c
@@ -0,0 +1,79 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+/*
+ * Read from a (possibly compressed) I/O log file.
+ */
+ssize_t
+iolog_read(struct iolog_file *iol, void *buf, size_t nbytes,
+ const char **errstr)
+{
+ ssize_t nread;
+ debug_decl(iolog_read, SUDO_DEBUG_UTIL);
+
+ if (nbytes > UINT_MAX) {
+ errno = EINVAL;
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ debug_return_ssize_t(-1);
+ }
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed) {
+ if ((nread = gzread(iol->fd.g, buf, nbytes)) == -1) {
+ if (errstr != NULL) {
+ int errnum;
+ *errstr = gzerror(iol->fd.g, &errnum);
+ if (errnum == Z_ERRNO)
+ *errstr = strerror(errno);
+ }
+ }
+ } else
+#endif
+ {
+ nread = (ssize_t)fread(buf, 1, nbytes, iol->fd.f);
+ if (nread == 0 && ferror(iol->fd.f)) {
+ nread = -1;
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ }
+ }
+ debug_return_ssize_t(nread);
+}
diff --git a/lib/iolog/iolog_seek.c b/lib/iolog/iolog_seek.c
new file mode 100644
index 000000000..928ae6ef6
--- /dev/null
+++ b/lib/iolog/iolog_seek.c
@@ -0,0 +1,69 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+/*
+ * I/O log wrapper for fseek/gzseek.
+ */
+off_t
+iolog_seek(struct iolog_file *iol, off_t offset, int whence)
+{
+ off_t ret;
+ //debug_decl(iolog_seek, SUDO_DEBUG_UTIL);
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed)
+ ret = gzseek(iol->fd.g, offset, whence);
+ else
+#endif
+ ret = fseeko(iol->fd.f, offset, whence);
+
+ //debug_return_off_t(ret);
+ return ret;
+}
+
+/*
+ * I/O log wrapper for rewind/gzrewind.
+ */
+void
+iolog_rewind(struct iolog_file *iol)
+{
+ debug_decl(iolog_rewind, SUDO_DEBUG_UTIL);
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed)
+ (void)gzrewind(iol->fd.g);
+ else
+#endif
+ rewind(iol->fd.f);
+
+ debug_return;
+}
diff --git a/lib/iolog/iolog_swapids.c b/lib/iolog/iolog_swapids.c
new file mode 100644
index 000000000..a0a361498
--- /dev/null
+++ b/lib/iolog/iolog_swapids.c
@@ -0,0 +1,95 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <time.h>
+#include <unistd.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_iolog.h"
+
+/*
+ * Set effective user and group-IDs to iolog_uid and iolog_gid.
+ * If restore flag is set, swap them back.
+ */
+bool
+iolog_swapids(bool restore)
+{
+#ifdef HAVE_SETEUID
+ static uid_t user_euid = (uid_t)-1;
+ static gid_t user_egid = (gid_t)-1;
+ const uid_t iolog_uid = iolog_get_uid();
+ const gid_t iolog_gid = iolog_get_gid();
+ debug_decl(io_swapids, SUDO_DEBUG_UTIL);
+
+ if (user_euid == (uid_t)-1)
+ user_euid = geteuid();
+ if (user_egid == (gid_t)-1)
+ user_egid = getegid();
+
+ if (restore) {
+ if (seteuid(user_euid) == -1) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to restore effective uid to %d", __func__,
+ (int)user_euid);
+ sudo_warn("seteuid() %d -> %d", (int)iolog_uid, (int)user_euid);
+ debug_return_bool(false);
+ }
+ if (setegid(user_egid) == -1) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to restore effective gid to %d", __func__,
+ (int)user_egid);
+ sudo_warn("setegid() %d -> %d", (int)iolog_gid, (int)user_egid);
+ debug_return_bool(false);
+ }
+ } else {
+ /* Fail silently if the user has insufficient privileges. */
+ if (setegid(iolog_gid) == -1) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to set effective gid to %d", __func__,
+ (int)iolog_gid);
+ debug_return_bool(false);
+ }
+ if (seteuid(iolog_uid) == -1) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
+ "%s: unable to set effective uid to %d", __func__,
+ (int)iolog_uid);
+ debug_return_bool(false);
+ }
+ }
+ debug_return_bool(true);
+#else
+ return false;
+#endif
+}
diff --git a/lib/iolog/iolog_timing.c b/lib/iolog/iolog_timing.c
new file mode 100644
index 000000000..b7375050c
--- /dev/null
+++ b/lib/iolog/iolog_timing.c
@@ -0,0 +1,267 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif /* HAVE_STDBOOL_H */
+#include <string.h>
+#include <signal.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <errno.h>
+#include <limits.h>
+#include <fcntl.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_fatal.h"
+#include "sudo_gettext.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+static int timing_event_adj;
+
+void
+iolog_adjust_delay(struct timespec *delay, struct timespec *max_delay,
+ double scale_factor)
+{
+ double seconds;
+ debug_decl(iolog_adjust_delay, SUDO_DEBUG_UTIL);
+
+ if (scale_factor != 1.0) {
+ /* Order is important: we don't want to double the remainder. */
+ seconds = (double)delay->tv_sec / scale_factor;
+ delay->tv_sec = (time_t)seconds;
+ delay->tv_nsec /= scale_factor;
+ delay->tv_nsec += (seconds - delay->tv_sec) * 1000000000;
+ while (delay->tv_nsec >= 1000000000) {
+ delay->tv_sec++;
+ delay->tv_nsec -= 1000000000;
+ }
+ }
+
+ /* Clamp to max delay. */
+ if (max_delay != NULL) {
+ if (sudo_timespeccmp(delay, max_delay, >)) {
+ delay->tv_sec = max_delay->tv_sec;
+ delay->tv_nsec = max_delay->tv_nsec;
+ }
+ }
+
+ debug_return;
+}
+
+/*
+ * Parse the delay as seconds and nanoseconds: %lld.%09ld
+ * Sudo used to write this as a double, but since timing data is logged
+ * in the C locale this may not match the current locale.
+ */
+char *
+iolog_parse_delay(const char *cp, struct timespec *delay,
+ const char *decimal_point)
+{
+ char numbuf[(((sizeof(long long) * 8) + 2) / 3) + 2];
+ const char *errstr, *ep;
+ long long llval;
+ size_t len;
+ debug_decl(iolog_parse_delay, SUDO_DEBUG_UTIL);
+
+ /* Parse seconds (whole number portion). */
+ for (ep = cp; isdigit((unsigned char)*ep); ep++)
+ continue;
+ len = (size_t)(ep - cp);
+ if (len >= sizeof(numbuf)) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: number of seconds is too large", cp);
+ debug_return_ptr(NULL);
+ }
+ memcpy(numbuf, cp, len);
+ numbuf[len] = '\0';
+ delay->tv_sec = sudo_strtonum(numbuf, 0, TIME_T_MAX, &errstr);
+ if (errstr != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: number of seconds is %s", numbuf, errstr);
+ debug_return_ptr(NULL);
+ }
+
+ /* Radix may be in user's locale for sudo < 1.7.4 so accept that too. */
+ if (*ep != '.' && *ep != *decimal_point) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "invalid characters after seconds: %s", ep);
+ debug_return_ptr(NULL);
+ }
+ cp = ep + 1;
+
+ /* Parse fractional part, we may read more precision than we can store. */
+ for (ep = cp; isdigit((unsigned char)*ep); ep++)
+ continue;
+ len = (size_t)(ep - cp);
+ if (len >= sizeof(numbuf)) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: number of nanoseconds is too large", cp);
+ debug_return_ptr(NULL);
+ }
+ memcpy(numbuf, cp, len);
+ numbuf[len] = '\0';
+ llval = sudo_strtonum(numbuf, 0, LLONG_MAX, &errstr);
+ if (errstr != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "%s: number of nanoseconds is %s", numbuf, errstr);
+ debug_return_ptr(NULL);
+ }
+
+ /* Adjust fractional part to nanosecond precision. */
+ if (len < 9) {
+ /* Convert to nanosecond precision. */
+ do {
+ llval *= 10;
+ } while (++len < 9);
+ } else if (len > 9) {
+ /* Clamp to nanoseconds. */
+ do {
+ llval /= 10;
+ } while (--len > 9);
+ }
+ delay->tv_nsec = (long)llval;
+
+ /* Advance to the next field. */
+ while (isspace((unsigned char)*ep))
+ ep++;
+
+ debug_return_str((char *)ep);
+}
+
+/*
+ * Parse a timing line, which is formatted as:
+ * IO_EVENT_TTYOUT sleep_time num_bytes
+ * IO_EVENT_WINSIZE sleep_time lines cols
+ * IO_EVENT_SUSPEND sleep_time signo
+ * Where type is IO_EVENT_*, sleep_time is the number of seconds to sleep
+ * before writing the data and num_bytes is the number of bytes to output.
+ * Returns true on success and false on failure.
+ */
+bool
+iolog_parse_timing(const char *line, struct timing_closure *timing)
+{
+ unsigned long ulval;
+ char *cp, *ep;
+ debug_decl(iolog_parse_timing, SUDO_DEBUG_UTIL);
+
+ /* Clear iolog descriptor. */
+ timing->iol = NULL;
+
+ /* Parse event type. */
+ ulval = strtoul(line, &ep, 10);
+ if (ep == line || !isspace((unsigned char) *ep))
+ goto bad;
+ if (ulval >= IO_EVENT_COUNT)
+ goto bad;
+ if (ulval == IO_EVENT_TTYOUT_1_8_7) {
+ /* work around a bug in timing files generated by sudo 1.8.7 */
+ timing_event_adj = 2;
+ }
+ timing->event = (int)ulval - timing_event_adj;
+ for (cp = ep + 1; isspace((unsigned char) *cp); cp++)
+ continue;
+
+ /* Parse delay, returns the next field or NULL on error. */
+ if ((cp = iolog_parse_delay(cp, &timing->delay, timing->decimal)) == NULL)
+ goto bad;
+
+ switch (timing->event) {
+ case IO_EVENT_SUSPEND:
+ /* Signal name (no leading SIG prefix) or number. */
+ if (str2sig(cp, &timing->u.signo) == -1)
+ goto bad;
+ break;
+ case IO_EVENT_WINSIZE:
+ ulval = strtoul(cp, &ep, 10);
+ if (ep == cp || !isspace((unsigned char) *ep))
+ goto bad;
+ if (ulval > INT_MAX)
+ goto bad;
+ timing->u.winsize.lines = (int)ulval;
+ for (cp = ep + 1; isspace((unsigned char) *cp); cp++)
+ continue;
+
+ ulval = strtoul(cp, &ep, 10);
+ if (ep == cp || *ep != '\0')
+ goto bad;
+ if (ulval > INT_MAX)
+ goto bad;
+ timing->u.winsize.cols = (int)ulval;
+ break;
+ default:
+ errno = 0;
+ ulval = strtoul(cp, &ep, 10);
+ if (ep == cp || *ep != '\0')
+ goto bad;
+ /* Note: assumes SIZE_MAX == ULONG_MAX */
+ if (errno == ERANGE && ulval == ULONG_MAX)
+ goto bad;
+ timing->u.nbytes = (size_t)ulval;
+ break;
+ }
+
+ debug_return_bool(true);
+bad:
+ debug_return_bool(false);
+}
+
+/*
+ * Read the next record from the timing file.
+ * Return 0 on success, 1 on EOF and -1 on error.
+ */
+int
+iolog_read_timing_record(struct iolog_file *iol, struct timing_closure *timing)
+{
+ char line[LINE_MAX];
+ const char *errstr;
+ debug_decl(iolog_read_timing_record, SUDO_DEBUG_UTIL);
+
+ /* Read next record from timing file. */
+ if (iolog_gets(iol, line, sizeof(line), &errstr) == NULL) {
+ /* EOF or error reading timing file, we are done. */
+ if (iolog_eof(iol))
+ debug_return_int(1);
+ sudo_warnx(U_("error reading timing file: %s"), errstr);
+ debug_return_int(-1);
+ }
+
+ /* Parse timing file record. */
+ line[strcspn(line, "\n")] = '\0';
+ if (!iolog_parse_timing(line, timing)) {
+ sudo_warnx(U_("invalid timing file line: %s"), line);
+ debug_return_int(-1);
+ }
+
+ debug_return_int(0);
+}
diff --git a/lib/iolog/iolog_util.c b/lib/iolog/iolog_util.c
index 7af33d9e6..bb1dde8b0 100644
--- a/lib/iolog/iolog_util.c
+++ b/lib/iolog/iolog_util.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2009-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -29,403 +29,46 @@
# include <stdbool.h>
#else
# include "compat/stdbool.h"
-#endif /* HAVE_STDBOOL_H */
-#include <string.h>
-#include <signal.h>
-#include <unistd.h>
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <fcntl.h>
+#endif
#include <time.h>
#include "sudo_compat.h"
#include "sudo_debug.h"
-#include "sudo_eventlog.h"
-#include "sudo_fatal.h"
-#include "sudo_gettext.h"
#include "sudo_iolog.h"
-#include "sudo_util.h"
-
-static int timing_event_adj;
-
-static bool
-iolog_parse_loginfo_legacy(FILE *fp, const char *iolog_dir,
- struct eventlog *evlog)
-{
- char *buf = NULL, *cp, *ep;
- const char *errstr;
- size_t bufsize = 0, cwdsize = 0, cmdsize = 0;
- bool ret = false;
- debug_decl(iolog_parse_loginfo_legacy, SUDO_DEBUG_UTIL);
-
- /*
- * Info file has three lines:
- * 1) a log info line
- * 2) cwd
- * 3) command with args
- */
- if (getdelim(&buf, &bufsize, '\n', fp) == -1 ||
- getdelim(&evlog->cwd, &cwdsize, '\n', fp) == -1 ||
- getdelim(&evlog->command, &cmdsize, '\n', fp) == -1) {
- sudo_warn(U_("%s: invalid log file"), iolog_dir);
- goto done;
- }
-
- /* Strip the newline from the cwd and command. */
- evlog->cwd[strcspn(evlog->cwd, "\n")] = '\0';
- evlog->command[strcspn(evlog->command, "\n")] = '\0';
-
- /*
- * Crack the log line (lines and cols not present in old versions).
- * timestamp:user:runas_user:runas_group:tty:lines:cols
- * XXX - probably better to use strtok and switch on the state.
- */
- buf[strcspn(buf, "\n")] = '\0';
- cp = buf;
-
- /* timestamp */
- if ((ep = strchr(cp, ':')) == NULL) {
- sudo_warn(U_("%s: time stamp field is missing"), iolog_dir);
- goto done;
- }
- *ep = '\0';
- evlog->submit_time.tv_sec = sudo_strtonum(cp, 0, TIME_T_MAX, &errstr);
- if (errstr != NULL) {
- sudo_warn(U_("%s: time stamp %s: %s"), iolog_dir, cp, errstr);
- goto done;
- }
-
- /* submit user */
- cp = ep + 1;
- if ((ep = strchr(cp, ':')) == NULL) {
- sudo_warn(U_("%s: user field is missing"), iolog_dir);
- goto done;
- }
- if ((evlog->submituser = strndup(cp, (size_t)(ep - cp))) == NULL)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
-
- /* runas user */
- cp = ep + 1;
- if ((ep = strchr(cp, ':')) == NULL) {
- sudo_warn(U_("%s: runas user field is missing"), iolog_dir);
- goto done;
- }
- if ((evlog->runuser = strndup(cp, (size_t)(ep - cp))) == NULL)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
-
- /* runas group */
- cp = ep + 1;
- if ((ep = strchr(cp, ':')) == NULL) {
- sudo_warn(U_("%s: runas group field is missing"), iolog_dir);
- goto done;
- }
- if (cp != ep) {
- if ((evlog->rungroup = strndup(cp, (size_t)(ep - cp))) == NULL)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- }
-
- /* tty, followed by optional lines + cols */
- cp = ep + 1;
- if ((ep = strchr(cp, ':')) == NULL) {
- /* just the tty */
- if ((evlog->ttyname = strdup(cp)) == NULL)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- } else {
- /* tty followed by lines + cols */
- if ((evlog->ttyname = strndup(cp, (size_t)(ep - cp))) == NULL)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- cp = ep + 1;
- /* need to NULL out separator to use sudo_strtonum() */
- /* XXX - use sudo_strtonumx */
- if ((ep = strchr(cp, ':')) != NULL) {
- *ep = '\0';
- }
- evlog->lines = sudo_strtonum(cp, 1, INT_MAX, &errstr);
- if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "%s: tty lines %s: %s", iolog_dir, cp, errstr);
- }
- if (ep != NULL) {
- cp = ep + 1;
- evlog->columns = sudo_strtonum(cp, 1, INT_MAX, &errstr);
- if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "%s: tty cols %s: %s", iolog_dir, cp, errstr);
- }
- }
- }
-
- ret = true;
-
-done:
- free(buf);
- debug_return_bool(ret);
-}
-
-struct eventlog *
-iolog_parse_loginfo(int dfd, const char *iolog_dir)
-{
- struct eventlog *evlog = NULL;
- FILE *fp = NULL;
- int fd = -1;
- int tmpfd = -1;
- bool ok, legacy = false;
- debug_decl(iolog_parse_loginfo, SUDO_DEBUG_UTIL);
-
- if (dfd == -1) {
- if ((tmpfd = open(iolog_dir, O_RDONLY)) == -1) {
- sudo_warn("%s", iolog_dir);
- goto bad;
- }
- dfd = tmpfd;
- }
- if ((fd = openat(dfd, "log.json", O_RDONLY, 0)) == -1) {
- fd = openat(dfd, "log", O_RDONLY, 0);
- legacy = true;
- }
- if (tmpfd != -1)
- close(tmpfd);
- if (fd == -1 || (fp = fdopen(fd, "r")) == NULL) {
- sudo_warn("%s/log", iolog_dir);
- goto bad;
- }
- fd = -1;
-
- if ((evlog = calloc(1, sizeof(*evlog))) == NULL)
- sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- evlog->runuid = (uid_t)-1;
- evlog->rungid = (gid_t)-1;
-
- ok = legacy ? iolog_parse_loginfo_legacy(fp, iolog_dir, evlog) :
- iolog_parse_loginfo_json(fp, iolog_dir, evlog);
- if (ok) {
- fclose(fp);
- debug_return_ptr(evlog);
- }
-
-bad:
- if (fd != -1)
- close(fd);
- if (fp != NULL)
- fclose(fp);
- eventlog_free(evlog);
- debug_return_ptr(NULL);
-}
-
-void
-iolog_adjust_delay(struct timespec *delay, struct timespec *max_delay,
- double scale_factor)
-{
- double seconds;
- debug_decl(iolog_adjust_delay, SUDO_DEBUG_UTIL);
-
- if (scale_factor != 1.0) {
- /* Order is important: we don't want to double the remainder. */
- seconds = (double)delay->tv_sec / scale_factor;
- delay->tv_sec = (time_t)seconds;
- delay->tv_nsec /= scale_factor;
- delay->tv_nsec += (seconds - delay->tv_sec) * 1000000000;
- while (delay->tv_nsec >= 1000000000) {
- delay->tv_sec++;
- delay->tv_nsec -= 1000000000;
- }
- }
-
- /* Clamp to max delay. */
- if (max_delay != NULL) {
- if (sudo_timespeccmp(delay, max_delay, >)) {
- delay->tv_sec = max_delay->tv_sec;
- delay->tv_nsec = max_delay->tv_nsec;
- }
- }
-
- debug_return;
-}
-
-/*
- * Parse the delay as seconds and nanoseconds: %lld.%09ld
- * Sudo used to write this as a double, but since timing data is logged
- * in the C locale this may not match the current locale.
- */
-char *
-iolog_parse_delay(const char *cp, struct timespec *delay,
- const char *decimal_point)
-{
- char numbuf[(((sizeof(long long) * 8) + 2) / 3) + 2];
- const char *errstr, *ep;
- long long llval;
- size_t len;
- debug_decl(iolog_parse_delay, SUDO_DEBUG_UTIL);
-
- /* Parse seconds (whole number portion). */
- for (ep = cp; isdigit((unsigned char)*ep); ep++)
- continue;
- len = (size_t)(ep - cp);
- if (len >= sizeof(numbuf)) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "%s: number of seconds is too large", cp);
- debug_return_ptr(NULL);
- }
- memcpy(numbuf, cp, len);
- numbuf[len] = '\0';
- delay->tv_sec = sudo_strtonum(numbuf, 0, TIME_T_MAX, &errstr);
- if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "%s: number of seconds is %s", numbuf, errstr);
- debug_return_ptr(NULL);
- }
-
- /* Radix may be in user's locale for sudo < 1.7.4 so accept that too. */
- if (*ep != '.' && *ep != *decimal_point) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "invalid characters after seconds: %s", ep);
- debug_return_ptr(NULL);
- }
- cp = ep + 1;
-
- /* Parse fractional part, we may read more precision than we can store. */
- for (ep = cp; isdigit((unsigned char)*ep); ep++)
- continue;
- len = (size_t)(ep - cp);
- if (len >= sizeof(numbuf)) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "%s: number of nanoseconds is too large", cp);
- debug_return_ptr(NULL);
- }
- memcpy(numbuf, cp, len);
- numbuf[len] = '\0';
- llval = sudo_strtonum(numbuf, 0, LLONG_MAX, &errstr);
- if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
- "%s: number of nanoseconds is %s", numbuf, errstr);
- debug_return_ptr(NULL);
- }
-
- /* Adjust fractional part to nanosecond precision. */
- if (len < 9) {
- /* Convert to nanosecond precision. */
- do {
- llval *= 10;
- } while (++len < 9);
- } else if (len > 9) {
- /* Clamp to nanoseconds. */
- do {
- llval /= 10;
- } while (--len > 9);
- }
- delay->tv_nsec = (long)llval;
-
- /* Advance to the next field. */
- while (isspace((unsigned char)*ep))
- ep++;
-
- debug_return_str((char *)ep);
-}
/*
- * Parse a timing line, which is formatted as:
- * IO_EVENT_TTYOUT sleep_time num_bytes
- * IO_EVENT_WINSIZE sleep_time lines cols
- * IO_EVENT_SUSPEND sleep_time signo
- * Where type is IO_EVENT_*, sleep_time is the number of seconds to sleep
- * before writing the data and num_bytes is the number of bytes to output.
- * Returns true on success and false on failure.
+ * Map IOFD_* -> name.
*/
-bool
-iolog_parse_timing(const char *line, struct timing_closure *timing)
+const char *
+iolog_fd_to_name(int iofd)
{
- unsigned long ulval;
- char *cp, *ep;
- debug_decl(iolog_parse_timing, SUDO_DEBUG_UTIL);
-
- /* Clear iolog descriptor. */
- timing->iol = NULL;
+ const char *ret;
+ debug_decl(iolog_fd_to_name, SUDO_DEBUG_UTIL);
- /* Parse event type. */
- ulval = strtoul(line, &ep, 10);
- if (ep == line || !isspace((unsigned char) *ep))
- goto bad;
- if (ulval >= IO_EVENT_COUNT)
- goto bad;
- if (ulval == IO_EVENT_TTYOUT_1_8_7) {
- /* work around a bug in timing files generated by sudo 1.8.7 */
- timing_event_adj = 2;
- }
- timing->event = (int)ulval - timing_event_adj;
- for (cp = ep + 1; isspace((unsigned char) *cp); cp++)
- continue;
-
- /* Parse delay, returns the next field or NULL on error. */
- if ((cp = iolog_parse_delay(cp, &timing->delay, timing->decimal)) == NULL)
- goto bad;
-
- switch (timing->event) {
- case IO_EVENT_SUSPEND:
- /* Signal name (no leading SIG prefix) or number. */
- if (str2sig(cp, &timing->u.signo) == -1)
- goto bad;
+ switch (iofd) {
+ case IOFD_STDIN:
+ ret = "stdin";
break;
- case IO_EVENT_WINSIZE:
- ulval = strtoul(cp, &ep, 10);
- if (ep == cp || !isspace((unsigned char) *ep))
- goto bad;
- if (ulval > INT_MAX)
- goto bad;
- timing->u.winsize.lines = (int)ulval;
- for (cp = ep + 1; isspace((unsigned char) *cp); cp++)
- continue;
-
- ulval = strtoul(cp, &ep, 10);
- if (ep == cp || *ep != '\0')
- goto bad;
- if (ulval > INT_MAX)
- goto bad;
- timing->u.winsize.cols = (int)ulval;
+ case IOFD_STDOUT:
+ ret = "stdout";
+ break;
+ case IOFD_STDERR:
+ ret = "stderr";
+ break;
+ case IOFD_TTYIN:
+ ret = "ttyin";
+ break;
+ case IOFD_TTYOUT:
+ ret = "ttyout";
+ break;
+ case IOFD_TIMING:
+ ret = "timing";
break;
default:
- errno = 0;
- ulval = strtoul(cp, &ep, 10);
- if (ep == cp || *ep != '\0')
- goto bad;
- /* Note: assumes SIZE_MAX == ULONG_MAX */
- if (errno == ERANGE && ulval == ULONG_MAX)
- goto bad;
- timing->u.nbytes = (size_t)ulval;
+ ret = "unknown";
+ sudo_debug_printf(SUDO_DEBUG_ERROR, "%s: unexpected iofd %d",
+ __func__, iofd);
break;
}
-
- debug_return_bool(true);
-bad:
- debug_return_bool(false);
-}
-
-/*
- * Read the next record from the timing file.
- * Return 0 on success, 1 on EOF and -1 on error.
- */
-int
-iolog_read_timing_record(struct iolog_file *iol, struct timing_closure *timing)
-{
- char line[LINE_MAX];
- const char *errstr;
- debug_decl(iolog_read_timing_record, SUDO_DEBUG_UTIL);
-
- /* Read next record from timing file. */
- if (iolog_gets(iol, line, sizeof(line), &errstr) == NULL) {
- /* EOF or error reading timing file, we are done. */
- if (iolog_eof(iol))
- debug_return_int(1);
- sudo_warnx(U_("error reading timing file: %s"), errstr);
- debug_return_int(-1);
- }
-
- /* Parse timing file record. */
- line[strcspn(line, "\n")] = '\0';
- if (!iolog_parse_timing(line, timing)) {
- sudo_warnx(U_("invalid timing file line: %s"), line);
- debug_return_int(-1);
- }
-
- debug_return_int(0);
+ debug_return_const_str(ret);
}
diff --git a/lib/iolog/iolog_write.c b/lib/iolog/iolog_write.c
new file mode 100644
index 000000000..82a3f6dee
--- /dev/null
+++ b/lib/iolog/iolog_write.c
@@ -0,0 +1,105 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2009-2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif
+#include <string.h>
+#include <errno.h>
+#include <limits.h>
+#include <time.h>
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_iolog.h"
+
+/*
+ * Write to an I/O log, optionally compressing.
+ */
+ssize_t
+iolog_write(struct iolog_file *iol, const void *buf, size_t len,
+ const char **errstr)
+{
+ ssize_t ret;
+ debug_decl(iolog_write, SUDO_DEBUG_UTIL);
+
+ if (len > UINT_MAX) {
+ errno = EINVAL;
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ debug_return_ssize_t(-1);
+ }
+
+#ifdef HAVE_ZLIB_H
+ if (iol->compressed) {
+ int errnum;
+
+ ret = gzwrite(iol->fd.g, (const voidp)buf, len);
+ if (ret == 0) {
+ ret = -1;
+ if (errstr != NULL) {
+ *errstr = gzerror(iol->fd.g, &errnum);
+ if (errnum == Z_ERRNO)
+ *errstr = strerror(errno);
+ }
+ goto done;
+ }
+ if (iolog_get_flush()) {
+ if (gzflush(iol->fd.g, Z_SYNC_FLUSH) != Z_OK) {
+ ret = -1;
+ if (errstr != NULL) {
+ *errstr = gzerror(iol->fd.g, &errnum);
+ if (errnum == Z_ERRNO)
+ *errstr = strerror(errno);
+ }
+ goto done;
+ }
+ }
+ } else
+#endif
+ {
+ ret = fwrite(buf, 1, len, iol->fd.f);
+ if (ret == 0) {
+ ret = -1;
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ goto done;
+ }
+ if (iolog_get_flush()) {
+ if (fflush(iol->fd.f) != 0) {
+ ret = -1;
+ if (errstr != NULL)
+ *errstr = strerror(errno);
+ goto done;
+ }
+ }
+ }
+
+done:
+ debug_return_ssize_t(ret);
+}
diff --git a/lib/iolog/regress/corpus/log_json/id.json b/lib/iolog/regress/corpus/log_json/id.json
new file mode 100644
index 000000000..5655639a2
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_json/id.json
@@ -0,0 +1,36 @@
+{
+ "timestamp": {
+ "seconds": 1603746837,
+ "nanoseconds": 16450063
+ },
+ "columns": 80,
+ "command": "/usr/bin/id",
+ "lines": 24,
+ "runargv": [
+ "id"
+ ],
+ "runenv": [
+ "PATH=/home/millert/bin/OpenBSD.amd64:/home/millert/bin:/home/millert/bin/scripts:/home/millert/node_modules/.bin:/usr/local/gnu/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/rcs/bin:/usr/local/nmh/bin:/usr/local/news/bin:/usr/local/emacs/bin:/usr/local/netpbm/bin:/usr/local/mtools/bin:/usr/local/netscape/bin:/usr/local/ghostscript/bin:/usr/local/frame-5.5.6/bin:/usr/local/teTeX/bin:/usr/local/cvs-1.10.1/bin:/usr/local/games/bin:/usr/local/archivers/bin:/usr/local/skey/bin:/usr/local/audio/bin:/usr/local/rtty/bin:/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/X11R6/bin:/usr/local/bin:/usr/obj/bin:/usr/src/bin",
+ "TERM=xterm-color",
+ "LANG=en_US.UTF-8",
+ "MAIL=/var/mail/root",
+ "LOGNAME=root",
+ "USER=root",
+ "HOME=/root",
+ "SHELL=/bin/ksh",
+ "SUDO_COMMAND=/usr/bin/id",
+ "SUDO_USER=millert",
+ "SUDO_UID=8036",
+ "SUDO_GID=20",
+ "KRB5CCNAME=bogus"
+ ],
+ "runuid": 0,
+ "rungid": 0,
+ "runcwd": "/usr/src/local/millert/sudo/trunk/lib/eventlog/regress",
+ "runuser": "root",
+ "rungroup": "wheel",
+ "submitcwd": "/usr/src/local/millert/sudo/trunk/lib/eventlog/regress",
+ "submithost": "xerxes.sudo.ws",
+ "submituser": "millert",
+ "ttyname": "/dev/ttypb"
+}
diff --git a/lib/iolog/regress/corpus/log_json/ls.json b/lib/iolog/regress/corpus/log_json/ls.json
new file mode 100644
index 000000000..17c99d837
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_json/ls.json
@@ -0,0 +1,31 @@
+{
+ "timestamp": {
+ "seconds": 1584790549,
+ "nanoseconds": 782859154
+ },
+ "columns": 80,
+ "command": "/bin/ls",
+ "lines": 24,
+ "runargv": [ "ls" ],
+ "runenv": [
+ "LANG=en_US.UTF-8",
+ "TERM=tmux",
+ "PATH=/home/millert/bin/OpenBSD.amd64:/home/millert/bin:/home/millert/bin/scripts:/home/millert/node_modules/.bin:/usr/local/gnu/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/rcs/bin:/usr/local/nmh/bin:/usr/local/news/bin:/usr/local/emacs/bin:/usr/local/netpbm/bin:/usr/local/mtools/bin:/usr/local/netscape/bin:/usr/local/ghostscript/bin:/usr/local/frame-5.5.6/bin:/usr/local/teTeX/bin:/usr/local/cvs-1.10.1/bin:/usr/local/games/bin:/usr/local/archivers/bin:/usr/local/skey/bin:/usr/local/audio/bin:/usr/local/rtty/bin:/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/X11R6/bin:/usr/local/bin:/usr/obj/bin:/usr/src/bin",
+ "MAIL=/var/mail/root",
+ "LOGNAME=root",
+ "USER=root",
+ "HOME=/root",
+ "SHELL=/bin/ksh",
+ "SUDO_COMMAND=/bin/ls",
+ "SUDO_USER=millert",
+ "SUDO_UID=8036",
+ "SUDO_GID=20",
+ "KRB5CCNAME=bogus"
+ ],
+ "runuid": 0,
+ "runuser": "root",
+ "submitcwd": "/usr/src/local/millert/hg/sudo/1.7",
+ "submithost": "xerxes.sudo.ws",
+ "submituser": "millert",
+ "ttyname": "/dev/ttyp3"
+}
diff --git a/lib/iolog/regress/corpus/log_json/mailq.json b/lib/iolog/regress/corpus/log_json/mailq.json
new file mode 100644
index 000000000..669090dc2
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_json/mailq.json
@@ -0,0 +1,31 @@
+{
+ "timestamp": {
+ "seconds": 1584884264,
+ "nanoseconds": 499794755
+ },
+ "columns": 80,
+ "command": "/usr/bin/mailq",
+ "lines": 24,
+ "runargv": [ "mailq" ],
+ "runenv": [
+ "LANG=en_US.UTF-8",
+ "PATH=/home/millert/bin/OpenBSD.amd64:/home/millert/bin:/home/millert/bin/scripts:/home/millert/node_modules/.bin:/usr/local/gnu/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/rcs/bin:/usr/local/nmh/bin:/usr/local/news/bin:/usr/local/emacs/bin:/usr/local/netpbm/bin:/usr/local/mtools/bin:/usr/local/netscape/bin:/usr/local/ghostscript/bin:/usr/local/frame-5.5.6/bin:/usr/local/teTeX/bin:/usr/local/cvs-1.10.1/bin:/usr/local/games/bin:/usr/local/archivers/bin:/usr/local/skey/bin:/usr/local/audio/bin:/usr/local/rtty/bin:/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/X11R6/bin:/usr/local/bin:/usr/obj/bin:/usr/src/bin",
+ "TERM=tmux",
+ "MAIL=/var/mail/root",
+ "LOGNAME=root",
+ "USER=root",
+ "HOME=/root",
+ "SHELL=/bin/ksh",
+ "SUDO_COMMAND=/usr/bin/mailq",
+ "SUDO_USER=millert",
+ "SUDO_UID=8036",
+ "SUDO_GID=20",
+ "KRB5CCNAME=bogus"
+ ],
+ "runuid": 0,
+ "runuser": "root",
+ "submitcwd": "/home/millert",
+ "submithost": "xerxes.sudo.ws",
+ "submituser": "millert",
+ "ttyname": "/dev/ttyp3"
+}
diff --git a/lib/iolog/regress/corpus/log_json/make.json b/lib/iolog/regress/corpus/log_json/make.json
new file mode 100644
index 000000000..dcc473686
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_json/make.json
@@ -0,0 +1,36 @@
+{
+ "timestamp": {
+ "seconds": 1584977889,
+ "nanoseconds": 510217787
+ },
+ "columns": 80,
+ "command": "/usr/bin/make",
+ "lines": 24,
+ "runargv": [
+ "make",
+ "-C",
+ "/usr/src/usr.bin/sort",
+ "install"
+ ],
+ "runenv": [
+ "PATH=/home/millert/bin/OpenBSD.amd64:/home/millert/bin:/home/millert/bin/scripts:/home/millert/node_modules/.bin:/usr/local/gnu/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/rcs/bin:/usr/local/nmh/bin:/usr/local/news/bin:/usr/local/emacs/bin:/usr/local/netpbm/bin:/usr/local/mtools/bin:/usr/local/netscape/bin:/usr/local/ghostscript/bin:/usr/local/frame-5.5.6/bin:/usr/local/teTeX/bin:/usr/local/cvs-1.10.1/bin:/usr/local/games/bin:/usr/local/archivers/bin:/usr/local/skey/bin:/usr/local/audio/bin:/usr/local/rtty/bin:/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/X11R6/bin:/usr/local/bin:/usr/obj/bin:/usr/src/bin",
+ "TERM=xterm-color",
+ "LANG=en_US.UTF-8",
+ "MAIL=/var/mail/root",
+ "LOGNAME=root",
+ "USER=root",
+ "HOME=/root",
+ "SHELL=/bin/ksh",
+ "SUDO_COMMAND=/usr/bin/make -C /usr/src/usr.bin/sort install",
+ "SUDO_USER=millert",
+ "SUDO_UID=8036",
+ "SUDO_GID=20",
+ "KRB5CCNAME=bogus"
+ ],
+ "runuid": 0,
+ "runuser": "root",
+ "submitcwd": "/home/millert/tmp/src/usr.bin/sort",
+ "submithost": "xerxes.sudo.ws",
+ "submituser": "millert",
+ "ttyname": "/dev/ttypi"
+}
diff --git a/lib/iolog/regress/corpus/log_json/pkg_add.json b/lib/iolog/regress/corpus/log_json/pkg_add.json
new file mode 100644
index 000000000..bfebc7646
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_json/pkg_add.json
@@ -0,0 +1,34 @@
+{
+ "timestamp": {
+ "seconds": 1595281300,
+ "nanoseconds": 130458256
+ },
+ "columns": 80,
+ "command": "/usr/sbin/pkg_add",
+ "lines": 24,
+ "runargv": [
+ "pkg_add",
+ "p5-PDF-API2"
+ ],
+ "runenv": [
+ "PATH=/home/millert/bin/OpenBSD.amd64:/home/millert/bin:/home/millert/bin/scripts:/home/millert/node_modules/.bin:/usr/local/gnu/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/rcs/bin:/usr/local/nmh/bin:/usr/local/news/bin:/usr/local/emacs/bin:/usr/local/netpbm/bin:/usr/local/mtools/bin:/usr/local/netscape/bin:/usr/local/ghostscript/bin:/usr/local/frame-5.5.6/bin:/usr/local/teTeX/bin:/usr/local/cvs-1.10.1/bin:/usr/local/games/bin:/usr/local/archivers/bin:/usr/local/skey/bin:/usr/local/audio/bin:/usr/local/rtty/bin:/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/X11R6/bin:/usr/local/bin:/usr/obj/bin:/usr/src/bin",
+ "TERM=xterm-color",
+ "LANG=en_US.UTF-8",
+ "MAIL=/var/mail/root",
+ "LOGNAME=root",
+ "USER=root",
+ "HOME=/root",
+ "SHELL=/bin/ksh",
+ "SUDO_COMMAND=/usr/sbin/pkg_add p5-PDF-API2",
+ "SUDO_USER=millert",
+ "SUDO_UID=8036",
+ "SUDO_GID=20",
+ "KRB5CCNAME=bogus"
+ ],
+ "runuid": 0,
+ "runuser": "root",
+ "submitcwd": "/usr/src/local/Music/chordpro",
+ "submithost": "xerxes.sudo.ws",
+ "submituser": "millert",
+ "ttyname": "/dev/ttypd"
+}
diff --git a/lib/iolog/regress/corpus/log_json/pkg_delete.json b/lib/iolog/regress/corpus/log_json/pkg_delete.json
new file mode 100644
index 000000000..f0e4fba94
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_json/pkg_delete.json
@@ -0,0 +1,34 @@
+{
+ "timestamp": {
+ "seconds": 1595620314,
+ "nanoseconds": 965982512
+ },
+ "columns": 80,
+ "command": "/usr/sbin/pkg_delete",
+ "lines": 24,
+ "runargv": [
+ "pkg_delete",
+ "chordpro"
+ ],
+ "runenv": [
+ "PATH=/home/millert/bin/OpenBSD.amd64:/home/millert/bin:/home/millert/bin/scripts:/home/millert/node_modules/.bin:/usr/local/gnu/bin:/usr/local/bin:/usr/local/sbin:/usr/local/etc:/usr/local/rcs/bin:/usr/local/nmh/bin:/usr/local/news/bin:/usr/local/emacs/bin:/usr/local/netpbm/bin:/usr/local/mtools/bin:/usr/local/netscape/bin:/usr/local/ghostscript/bin:/usr/local/frame-5.5.6/bin:/usr/local/teTeX/bin:/usr/local/cvs-1.10.1/bin:/usr/local/games/bin:/usr/local/archivers/bin:/usr/local/skey/bin:/usr/local/audio/bin:/usr/local/rtty/bin:/bin:/sbin:/usr/games:/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/X11R6/bin:/usr/local/bin:/usr/obj/bin:/usr/src/bin",
+ "TERM=xterm-color",
+ "LANG=en_US.UTF-8",
+ "MAIL=/var/mail/root",
+ "LOGNAME=root",
+ "USER=root",
+ "HOME=/root",
+ "SHELL=/bin/ksh",
+ "SUDO_COMMAND=/usr/sbin/pkg_delete chordpro",
+ "SUDO_USER=millert",
+ "SUDO_UID=8036",
+ "SUDO_GID=20",
+ "KRB5CCNAME=bogus"
+ ],
+ "runuid": 0,
+ "runuser": "root",
+ "submitcwd": "/usr/ports/textproc/chordpro/pkg",
+ "submithost": "xerxes.sudo.ws",
+ "submituser": "millert",
+ "ttyname": "/dev/ttypd"
+}
diff --git a/lib/iolog/regress/corpus/log_json/printenv.json b/lib/iolog/regress/corpus/log_json/printenv.json
new file mode 100644
index 000000000..6e78719f6
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_json/printenv.json
@@ -0,0 +1,34 @@
+{
+ "timestamp": {
+ "seconds": 1601411718,
+ "nanoseconds": 269131020
+ },
+ "columns": 80,
+ "command": "/usr/bin/printenv",
+ "lines": 24,
+ "runargv": [
+ "/usr/bin/printenv"
+ ],
+ "runenv": [
+ "KRB5CCNAME=bogus",
+ "LANG=en_US.UTF-8",
+ "PATH=/tmp",
+ "TERM=xterm-color",
+ "MAIL=/var/mail/root",
+ "LOGNAME=root",
+ "USER=root",
+ "HOME=/root",
+ "SHELL=/bin/ksh",
+ "SUDO_COMMAND=/usr/bin/printenv",
+ "SUDO_USER=testdude",
+ "SUDO_UID=1000",
+ "SUDO_GID=1000"
+ ],
+ "runuid": 0,
+ "runcwd": "/usr/src/local/millert/sudo/trunk/plugins/sudoers",
+ "runuser": "root",
+ "submitcwd": "/usr/src/local/millert/sudo/trunk/plugins/sudoers",
+ "submithost": "xerxes.sudo.ws",
+ "submituser": "testdude",
+ "ttyname": "/dev/ttypb"
+}
diff --git a/lib/iolog/regress/corpus/log_legacy/id.log b/lib/iolog/regress/corpus/log_legacy/id.log
new file mode 100644
index 000000000..e59965e52
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_legacy/id.log
@@ -0,0 +1,3 @@
+1603746837:millert:root::/dev/ttypb:24:80
+/usr/src/local/millert/sudo/trunk/lib/eventlog/regress
+/usr/bin/id
diff --git a/lib/iolog/regress/corpus/log_legacy/ls.log b/lib/iolog/regress/corpus/log_legacy/ls.log
new file mode 100644
index 000000000..808605c27
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_legacy/ls.log
@@ -0,0 +1,3 @@
+1584790549:millert:root::/dev/ttyp3:24:80
+/usr/src/local/millert/hg/sudo/1.7
+/bin/ls
diff --git a/lib/iolog/regress/corpus/log_legacy/mailq.log b/lib/iolog/regress/corpus/log_legacy/mailq.log
new file mode 100644
index 000000000..9b1fdd65e
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_legacy/mailq.log
@@ -0,0 +1,3 @@
+1584884264:millert:root::/dev/ttyp3:24:80
+/home/millert
+/usr/bin/mailq
diff --git a/lib/iolog/regress/corpus/log_legacy/make.log b/lib/iolog/regress/corpus/log_legacy/make.log
new file mode 100644
index 000000000..c27798a8f
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_legacy/make.log
@@ -0,0 +1,3 @@
+1584977889:millert:root::/dev/ttypi:24:80
+/home/millert/tmp/src/usr.bin/sort
+/usr/bin/make -C /usr/src/usr.bin/sort install
diff --git a/lib/iolog/regress/corpus/log_legacy/pkg_add.log b/lib/iolog/regress/corpus/log_legacy/pkg_add.log
new file mode 100644
index 000000000..78358e7ed
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_legacy/pkg_add.log
@@ -0,0 +1,3 @@
+1595281300:millert:root::/dev/ttypd:24:80
+/usr/src/local/Music/chordpro
+/usr/sbin/pkg_add p5-PDF-API2
diff --git a/lib/iolog/regress/corpus/log_legacy/pkg_delete.log b/lib/iolog/regress/corpus/log_legacy/pkg_delete.log
new file mode 100644
index 000000000..ce0899ae1
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_legacy/pkg_delete.log
@@ -0,0 +1,3 @@
+1595620314:millert:root::/dev/ttypd:24:80
+/usr/ports/textproc/chordpro/pkg
+/usr/sbin/pkg_delete chordpro
diff --git a/lib/iolog/regress/corpus/log_legacy/printenv.log b/lib/iolog/regress/corpus/log_legacy/printenv.log
new file mode 100644
index 000000000..dbc739a66
--- /dev/null
+++ b/lib/iolog/regress/corpus/log_legacy/printenv.log
@@ -0,0 +1,3 @@
+1601411718:testdude:root::/dev/ttypb:24:80
+/usr/src/local/millert/sudo/trunk/plugins/sudoers
+/usr/bin/printenv
diff --git a/lib/iolog/regress/corpus/timing/timing.1 b/lib/iolog/regress/corpus/timing/timing.1
new file mode 100644
index 000000000..e954cdae7
--- /dev/null
+++ b/lib/iolog/regress/corpus/timing/timing.1
@@ -0,0 +1,51 @@
+4 0.032200538 32
+4 0.000461816 917
+4 0.000260488 41
+3 0.748747801 1
+4 0.002709345 1040
+3 0.605486330 1
+4 0.002136958 792
+3 0.981620620 1
+4 0.001898021 39
+7 0.002496718 TSTP
+7 11.781181911 CONT
+5 0.000331519 59 120
+4 0.002261240 7
+4 0.005713594 7
+4 0.001005416 974
+4 0.004255422 2064
+4 0.001929362 445
+3 0.632938830 1
+4 0.001316335 15
+3 0.989972022 1
+4 0.001419091 39
+7 0.002164759 TSTP
+7 1.195700989 CONT
+4 0.001525087 7
+7 0.002025577 TTOU
+7 0.908621867 CONT
+4 0.001755079 7
+4 0.001712634 2064
+4 0.001236879 467
+3 0.347054501 1
+4 0.003931829 2082
+3 0.236017124 1
+4 0.002960088 618
+3 0.285032645 1
+4 0.000951230 1
+3 0.470931231 1
+4 0.001103587 8
+3 0.142977268 1
+4 0.001048037 1
+3 0.126189543 1
+4 0.000255520 1
+4 0.000641997 2064
+4 0.000298772 176
+3 3.183861587 1
+4 0.001098032 9
+3 0.142511842 1
+4 0.000995141 1
+3 0.191337037 1
+4 0.001096192 1
+4 0.001180378 7
+4 0.000838979 28
diff --git a/lib/iolog/regress/corpus/timing/timing.2 b/lib/iolog/regress/corpus/timing/timing.2
new file mode 100644
index 000000000..d3e8da02b
--- /dev/null
+++ b/lib/iolog/regress/corpus/timing/timing.2
@@ -0,0 +1,196 @@
+4 0.017420446 378
+4 0.101673410 78
+4 0.020237132 106
+4 32.406835619 258
+4 0.071903094 51
+4 0.044405150 53
+4 0.002465527 153
+4 0.061104878 37
+4 0.037284253 3
+4 0.035933494 3
+4 0.035405047 3
+4 0.035096439 3
+4 0.035427343 3
+4 0.035278610 3
+4 0.035503923 3
+4 0.034726429 3
+4 0.035415822 3
+4 0.035642850 4
+4 0.035104123 3
+4 0.035177940 3
+4 0.035114787 3
+4 0.035398463 3
+4 0.035774228 3
+4 0.034687088 3
+4 0.035231607 3
+4 0.035235355 3
+4 0.035430098 3
+4 0.035238761 3
+4 0.035310472 3
+4 0.035678834 6
+4 0.035098980 3
+4 0.034974643 3
+4 0.034769832 3
+4 0.035066706 3
+4 0.034910781 3
+4 0.034939164 3
+4 0.035387880 3
+4 0.036229124 3
+4 0.035210123 6
+4 0.034996626 6
+4 0.034484929 2
+4 0.014762481 40
+4 0.034798156 3
+4 0.035382724 3
+4 0.035200992 3
+4 0.035793731 3
+4 0.036046635 3
+4 0.035232505 3
+4 0.035596184 3
+4 0.034359958 3
+4 0.034881742 3
+4 0.036581308 4
+4 0.035716612 3
+4 0.034981224 3
+4 0.034653311 3
+4 0.035700405 3
+4 0.035204600 3
+4 0.035080066 3
+4 0.035072298 3
+4 0.035950557 3
+4 0.034524949 3
+4 0.035231401 3
+4 0.035918148 6
+4 0.035009022 3
+4 0.034086126 3
+4 0.034031601 3
+4 0.035507794 3
+4 0.035359991 3
+4 0.035451670 3
+4 0.034207436 3
+4 0.036154464 3
+4 0.034687026 6
+4 0.034511000 6
+4 0.035712971 2
+4 0.001114632 280
+4 0.013357954 70
+4 0.009099934 250
+4 0.345595767 59
+4 0.014672692 168
+4 0.165009111 119
+4 0.037129573 168
+4 0.163729717 119
+4 0.046685595 70
+4 0.010058716 205
+4 0.335682997 62
+4 0.009757680 403
+4 0.764539162 234
+4 0.126274733 133
+4 0.035954324 133
+4 0.160744133 706
+4 0.012594228 389
+4 0.000600099 337
+4 0.008974842 70
+4 0.009992828 205
+4 0.333655416 62
+4 0.009799688 415
+4 0.768206552 251
+4 0.123329919 133
+4 0.036529633 133
+4 0.131658603 706
+4 0.009965871 452
+4 0.000352099 274
+4 0.006881291 70
+4 0.007616147 210
+4 0.258108895 67
+4 0.007582335 418
+4 0.592632286 244
+4 0.096206429 143
+4 0.028539423 143
+4 0.124772846 706
+4 0.009854967 389
+4 0.000365510 337
+4 0.038009729 245
+4 0.044260031 73
+4 0.013835442 72
+4 0.013734457 81
+4 0.013966252 260
+4 0.233058895 59
+4 0.007278138 869
+4 1.481039643 148
+4 0.089258162 158
+4 0.082642822 151
+4 0.051838211 2202
+4 0.164269353 45
+4 0.014776451 127
+4 0.033523033 127
+4 0.102601946 706
+4 0.009758392 475
+4 0.000371524 251
+4 0.006895216 149
+4 0.101515800 117
+4 0.049231011 149
+4 0.100724385 117
+4 0.028593605 142
+4 0.100398116 110
+4 0.033582408 74
+4 0.013919259 82
+4 0.020859788 63
+4 0.007864945 70
+4 0.007803279 207
+4 0.258587972 64
+4 0.007479117 409
+4 0.590341346 238
+4 0.095587884 137
+4 0.028246058 137
+4 0.125974303 706
+4 0.009846897 475
+4 0.000398383 251
+4 0.007711302 101
+4 0.013103236 208
+4 0.261674900 65
+4 0.007528283 730
+4 0.890361622 601
+4 0.126547307 139
+4 0.034250610 139
+4 0.126209288 706
+4 0.009859395 475
+4 0.000386854 251
+4 0.002122077 310
+4 0.153210769 179
+4 0.014128026 253
+4 0.007009755 152
+4 0.127577685 103
+4 0.029587241 31
+4 0.001733173 36
+4 0.001730350 187
+4 0.002311429 334
+4 0.002449265 165
+4 0.089927714 131
+4 0.028627022 132
+4 0.124746485 706
+4 0.009744954 452
+4 0.000377336 274
+4 0.006732444 62
+4 0.006519788 106
+4 0.024636847 130
+4 0.018143227 294
+4 0.177574909 150
+4 0.124543833 104
+4 0.021106187 92
+4 0.021020993 108
+4 0.019733705 106
+4 0.021929696 120
+4 0.021340851 108
+4 0.020144663 104
+4 0.019972905 96
+4 0.019911985 102
+4 0.020978336 118
+4 0.020270010 118
+4 0.020800394 98
+4 0.023331698 118
+4 0.020625734 108
+4 0.024362590 45
+4 0.006712794 74
+4 0.008052322 209
+4 0.088262080 95
diff --git a/lib/iolog/regress/corpus/timing/timing.3 b/lib/iolog/regress/corpus/timing/timing.3
new file mode 100644
index 000000000..4034898c4
--- /dev/null
+++ b/lib/iolog/regress/corpus/timing/timing.3
@@ -0,0 +1,988 @@
+4 0.004667517 65
+1 0.000204598 16384
+1 0.000232870 16384
+1 0.000182715 16384
+1 0.000233631 16384
+1 0.000180381 16384
+1 0.000175649 16384
+1 0.000175959 16384
+1 0.000214345 16384
+1 0.000184234 16384
+1 0.000227610 16384
+1 0.000185340 16384
+1 0.000176307 16384
+1 0.000175898 16384
+1 0.000268993 16384
+1 0.000183674 16384
+1 0.000215319 16384
+1 0.000175147 16384
+1 0.000175248 16384
+1 0.000175224 16384
+1 0.000215165 16384
+1 0.000186660 16384
+1 0.000175657 16384
+1 0.000212448 16384
+1 0.000176406 16384
+1 0.000176418 16384
+1 0.000175909 16384
+1 0.000233918 16384
+1 0.000175175 16384
+1 0.000210767 16384
+1 0.000176349 16384
+1 0.000175932 16384
+1 0.000223892 16384
+1 0.000204215 16384
+1 0.000182071 16384
+1 0.000174307 16384
+1 0.000212948 16384
+1 0.000174008 16384
+1 0.000183305 16384
+1 0.000210859 16384
+1 0.000173624 16384
+1 0.000174269 16384
+1 0.000173759 16384
+1 0.000211001 16384
+1 0.000188432 16384
+1 0.000208482 16384
+1 0.000173818 16384
+1 0.000173706 16384
+1 0.000172848 16384
+1 0.000219983 16384
+1 0.000173715 16384
+1 0.000173231 16384
+1 0.000207740 16384
+1 0.000172355 16384
+1 0.000173862 16384
+1 0.000218171 16384
+1 0.000172711 16384
+1 0.000171980 16384
+1 0.000173769 16384
+1 0.000209693 16384
+1 0.000182913 16384
+1 0.000213414 16384
+1 0.000174563 16384
+1 0.000176066 16384
+1 0.000178416 16384
+1 0.000211025 16384
+1 0.000184019 16384
+1 0.000172715 16384
+1 0.000211906 16384
+1 0.000172898 16384
+1 0.000172698 16384
+1 0.000172687 16384
+1 0.000219835 16384
+1 0.000175073 16384
+1 0.000172194 16384
+1 0.000210039 16384
+1 0.000172651 16384
+1 0.000180363 16384
+1 0.000207814 16384
+1 0.000181339 16384
+1 0.000172957 16384
+1 0.000210462 16384
+1 0.000173359 16384
+1 0.000183117 16384
+1 0.000211472 16384
+1 0.000172785 16384
+1 0.000173065 16384
+1 0.000172556 16384
+1 0.000219412 16384
+1 0.000175049 16384
+1 0.000172688 16384
+1 0.000212409 16384
+1 0.000173995 16384
+1 0.000173362 16384
+1 0.000217888 16384
+1 0.000174519 16384
+1 0.000179535 16384
+1 0.000210660 16384
+1 0.000173236 16384
+1 0.000172656 16384
+1 0.000218333 16384
+1 0.000175598 16384
+1 0.000173390 16384
+1 0.000174078 16384
+1 0.000210326 16384
+1 0.000182926 16384
+1 0.000173350 16384
+1 0.000211036 16384
+1 0.000174038 16384
+1 0.000173647 16384
+1 0.000173506 16384
+1 0.000219713 16384
+1 0.000173048 16384
+1 0.000216544 16384
+1 0.000173473 16384
+1 0.000173584 16384
+1 0.000217290 16384
+1 0.000221436 16384
+1 0.000181452 16384
+1 0.000175981 16384
+1 0.000216787 16384
+1 0.000176126 16384
+1 0.000192080 16384
+1 0.000218372 16384
+1 0.000176383 16384
+1 0.000175741 16384
+1 0.000176882 16384
+1 0.000211760 16384
+1 0.000180460 16384
+1 0.000171301 16384
+1 0.000217254 16384
+1 0.000171345 16384
+1 0.000171068 16384
+1 0.000217296 16384
+1 0.000171584 16384
+1 0.000171382 16384
+1 0.000211004 16384
+1 0.000171735 16384
+1 0.000171288 16384
+1 0.000217634 16384
+1 0.000171509 16384
+1 0.000171665 16384
+1 0.000171047 16384
+1 0.000232622 16384
+1 0.000200850 16384
+1 0.000186185 16384
+1 0.000236223 16384
+1 0.000189277 16384
+1 0.000184901 16384
+1 0.000218248 16384
+1 0.000186495 16384
+1 0.000197206 16384
+1 0.000211952 16384
+1 0.000175248 16384
+1 0.000173748 16384
+1 0.000174236 16384
+1 0.000222111 16384
+1 0.000174574 16384
+1 0.000174434 16384
+1 0.000212226 16384
+1 0.000174342 16384
+1 0.000184829 16384
+1 0.000213260 16384
+1 0.000173502 16384
+1 0.000173093 16384
+1 0.000221162 16384
+1 0.000174153 16384
+1 0.000182299 16384
+1 0.000210864 16384
+1 0.000203068 16384
+1 0.000219136 16384
+1 0.000174002 16384
+1 0.000213188 16384
+1 0.000183505 16384
+1 0.000172565 16384
+1 0.000209734 16384
+1 0.000174341 16384
+1 0.000172264 16384
+1 0.000221781 16384
+1 0.000174790 16384
+1 0.000172739 16384
+1 0.000174020 16384
+1 0.000221785 16384
+1 0.000172995 16384
+1 0.000222941 16384
+1 0.000173977 16384
+1 0.000172728 16384
+1 0.000173524 16384
+1 0.000214508 16384
+1 0.000180455 16384
+1 0.000173688 16384
+1 0.000218400 16384
+1 0.000173836 16384
+1 0.000173021 16384
+1 0.000174233 16384
+1 0.000211773 16384
+1 0.000173345 16384
+1 0.000172586 16384
+1 0.000209547 16384
+1 0.000173828 16384
+1 0.000177025 16384
+1 0.000219995 16384
+1 0.000172918 16384
+1 0.000173449 16384
+1 0.000209423 16384
+1 0.000181676 16384
+1 0.000183441 16384
+1 0.000209581 16384
+1 0.000173832 16384
+1 0.000173270 16384
+1 0.000172904 16384
+1 0.000210702 16384
+1 0.000182215 16384
+1 0.000189641 16384
+1 0.000284181 16384
+1 0.000175365 16384
+1 0.000172881 16384
+1 0.000228551 16384
+1 0.000183598 16384
+1 0.000212813 16384
+1 0.000171234 16384
+1 0.000171113 16384
+1 0.000265216 16384
+1 0.000256766 16384
+1 0.000177761 16384
+1 0.000176795 16384
+1 0.000216366 16384
+1 0.000176847 16384
+1 0.000176382 16384
+1 0.000196256 16384
+1 0.000185652 16384
+1 0.000191254 16384
+1 0.000184776 16384
+1 0.000217719 16384
+1 0.000196783 16384
+1 0.000214624 16384
+1 0.000176543 16384
+1 0.000176621 16384
+1 0.000176781 16384
+1 0.000214375 16384
+1 0.000187073 16384
+1 0.000175881 16384
+1 0.000214427 16384
+1 0.000176819 16384
+1 0.000186002 16384
+1 0.000223983 16384
+1 0.000173340 16384
+1 0.000180282 16384
+1 0.000175780 16384
+1 0.000216125 16384
+1 0.000176193 16384
+1 0.000234609 16384
+1 0.000175698 16384
+1 0.000174926 16384
+1 0.000175740 16384
+1 0.000213854 16384
+1 0.000176984 16384
+1 0.000186810 16384
+1 0.000210152 16384
+1 0.000174875 16384
+1 0.000174813 16384
+1 0.000175036 16384
+1 0.000226974 16384
+1 0.000174660 16384
+1 0.000174744 16384
+1 0.000204522 16384
+1 0.000174780 16384
+1 0.000174814 16384
+1 0.000221269 16384
+1 0.000188334 16384
+1 0.000175739 16384
+1 0.000209695 16384
+1 0.000193824 16384
+1 0.000188632 16384
+1 0.000210526 16384
+1 0.000174158 16384
+1 0.000174339 16384
+1 0.000174180 16384
+1 0.000206907 16384
+1 0.000182368 16384
+1 0.000173833 16384
+1 0.000209012 16384
+1 0.000173131 16384
+1 0.000172859 16384
+1 0.000172674 16384
+1 0.000219815 16384
+1 0.000182668 16384
+1 0.000212487 16384
+1 0.000173833 16384
+1 0.000173242 16384
+1 0.000221886 16384
+1 0.000174126 16384
+1 0.000173782 16384
+1 0.000173083 16384
+1 0.000212048 16384
+1 0.000173991 16384
+1 0.000183737 16384
+1 0.000212986 16384
+1 0.000175737 16384
+1 0.000171877 16384
+1 0.000173977 16384
+1 0.000212917 16384
+1 0.000183401 16384
+1 0.000220644 16384
+1 0.000174845 16384
+1 0.000173519 16384
+1 0.000173358 16384
+1 0.000221424 16384
+1 0.000174225 16384
+1 0.000174026 16384
+1 0.000181262 16384
+1 0.000181238 16384
+1 0.000179989 16384
+1 0.000234088 16384
+1 0.000174627 16384
+1 0.000174688 16384
+1 0.000175388 16384
+1 0.000214217 16384
+1 0.000182064 16384
+1 0.000175192 16384
+1 0.000221012 16384
+1 0.000175500 16384
+1 0.000173344 16384
+1 0.000212621 16384
+1 0.000182532 16384
+1 0.000174054 16384
+1 0.000213046 16384
+1 0.000178598 16384
+1 0.000172744 16384
+1 0.000174442 16384
+1 0.000224111 16384
+1 0.000174925 16384
+1 0.000173327 16384
+1 0.000212011 16384
+1 0.000174397 16384
+1 0.000183846 16384
+1 0.000211973 16384
+1 0.000174197 16384
+1 0.000181158 16384
+1 0.000211734 16384
+1 0.000174521 16384
+1 0.000185459 16384
+1 0.000210420 16384
+1 0.000173614 16384
+1 0.000174063 16384
+1 0.000173928 16384
+1 0.000221641 16384
+1 0.000174892 16384
+1 0.000173602 16384
+1 0.000213548 16384
+1 0.000173288 16384
+1 0.000174566 16384
+1 0.000221746 16384
+1 0.000173691 16384
+1 0.000172544 16384
+1 0.000221593 16384
+1 0.000174859 16384
+1 0.000174593 16384
+1 0.000221470 16384
+1 0.000174906 16384
+1 0.000174414 16384
+1 0.000174643 16384
+1 0.000180381 16384
+1 0.000228118 16384
+1 0.000174372 16384
+1 0.000172894 16384
+1 0.000174088 16384
+1 0.000210179 16384
+1 0.000173018 16384
+1 0.000183585 16384
+1 0.000212582 16384
+1 0.000174028 16384
+1 0.000180274 16384
+1 0.000210011 16384
+1 0.000181061 16384
+1 0.000171667 16384
+1 0.000212975 16384
+1 0.000173474 16384
+1 0.000174824 16384
+1 0.000174770 16384
+1 0.000259517 16384
+1 0.000175254 16384
+1 0.000174674 16384
+1 0.000211257 16384
+1 0.000173914 16384
+1 0.000173226 16384
+1 0.000218736 16384
+1 0.000174777 16384
+1 0.000174287 16384
+1 0.000173806 16384
+1 0.000223350 16384
+1 0.000182470 16384
+1 0.000173368 16384
+1 0.000210632 16384
+1 0.000173962 16384
+1 0.000174398 16384
+1 0.000173870 16384
+1 0.000219226 16384
+1 0.000174328 16384
+1 0.000173605 16384
+1 0.000207352 16384
+1 0.000175893 16384
+1 0.000181901 16384
+1 0.000210141 16384
+1 0.000174263 16384
+1 0.000174436 16384
+1 0.000173800 16384
+1 0.000218953 16384
+1 0.000182143 16384
+1 0.000209929 16384
+1 0.000181286 16384
+1 0.000175206 16384
+1 0.000175289 16384
+1 0.000211021 16384
+1 0.000184189 16384
+1 0.000173899 16384
+1 0.000208349 16384
+1 0.000173540 16384
+1 0.000173470 16384
+1 0.000218306 16384
+1 0.000174466 16384
+1 0.000173733 16384
+1 0.000174997 16384
+1 0.000208404 16384
+1 0.000183404 16384
+1 0.000216987 16384
+1 0.000174787 16384
+1 0.000172001 16384
+1 0.000174352 16384
+1 0.000210113 16384
+1 0.000174975 16384
+1 0.000181474 16384
+1 0.000208027 16384
+1 0.000220815 16384
+1 0.000182672 16384
+1 0.000177670 16384
+1 0.000226754 16384
+1 0.000176226 16384
+1 0.000176257 16384
+1 0.000213945 16384
+1 0.000177178 16384
+1 0.000184848 16384
+1 0.000227104 16384
+1 0.000176737 16384
+1 0.000176047 16384
+1 0.000213861 16384
+1 0.000176249 16384
+1 0.000192460 16384
+1 0.000213055 16384
+1 0.000176122 16384
+1 0.000175803 16384
+1 0.000176855 16384
+1 0.000213759 16384
+1 0.000183896 16384
+1 0.000176042 16384
+1 0.000215572 16384
+1 0.000177052 16384
+1 0.000176248 16384
+1 0.000176225 16384
+1 0.000232080 16384
+1 0.000175961 16384
+1 0.000214198 16384
+1 0.000176799 16384
+1 0.000175935 16384
+1 0.000223226 16384
+1 0.000176909 16384
+1 0.000176795 16384
+1 0.000176510 16384
+1 0.000214109 16384
+1 0.000176961 16384
+1 0.000186460 16384
+1 0.000211960 16384
+1 0.000176559 16384
+1 0.000175660 16384
+1 0.000176204 16384
+1 0.000219927 16384
+1 0.000189594 16384
+1 0.000214824 16384
+1 0.000176935 16384
+1 0.000176513 16384
+1 0.000176800 16384
+1 0.000224628 16384
+1 0.000176509 16384
+1 0.000175911 16384
+1 0.000214526 16384
+1 0.000185996 16384
+1 0.000177260 16384
+1 0.000222187 16384
+1 0.000176306 16384
+1 0.000175852 16384
+1 0.000176047 16384
+1 0.000213267 16384
+1 0.000187775 16384
+1 0.000223034 16384
+1 0.000178203 16384
+1 0.000176681 16384
+1 0.000176577 16384
+1 0.000211623 16384
+1 0.000187933 16384
+1 0.000176091 16384
+1 0.000213563 16384
+1 0.000176665 16384
+1 0.000175972 16384
+1 0.000221236 16384
+1 0.000177542 16384
+1 0.000176816 16384
+1 0.000176855 16384
+1 0.000214626 16384
+1 0.000176270 16384
+1 0.000187315 16384
+1 0.000213606 16384
+1 0.000185588 16384
+1 0.000175148 16384
+1 0.000211150 16384
+1 0.000175119 16384
+1 0.000186448 16384
+1 0.000212381 16384
+1 0.000177247 16384
+1 0.000175999 16384
+1 0.000176495 16384
+1 0.000222973 16384
+1 0.000175776 16384
+1 0.000176586 16384
+1 0.000212810 16384
+1 0.000176501 16384
+1 0.000176409 16384
+1 0.000223551 16384
+1 0.000177325 16384
+1 0.000185881 16384
+1 0.000212232 16384
+1 0.000176149 16384
+1 0.000182616 16384
+1 0.000216249 16384
+1 0.000183941 16384
+1 0.000179989 16384
+1 0.000176223 16384
+1 0.000212771 16384
+1 0.000187318 16384
+1 0.000336166 16384
+1 0.000219610 16384
+1 0.000176123 16384
+1 0.000176534 16384
+1 0.000176734 16384
+1 0.000224839 16384
+1 0.000176819 16384
+1 0.000222734 16384
+1 0.000177474 16384
+1 0.000176537 16384
+1 0.000225175 16384
+1 0.000177148 16384
+1 0.000176676 16384
+1 0.000176364 16384
+1 0.000211976 16384
+1 0.000176519 16384
+1 0.000186739 16384
+1 0.000213745 16384
+1 0.000176337 16384
+1 0.000175372 16384
+1 0.000175256 16384
+1 0.000191167 16384
+1 0.000227098 16384
+1 0.000203959 16384
+1 0.000194934 16384
+1 0.000214879 16384
+1 0.000174297 16384
+1 0.000184364 16384
+1 0.000215725 16384
+1 0.000173186 16384
+1 0.000174405 16384
+1 0.000173021 16384
+1 0.000212846 16384
+1 0.000181787 16384
+1 0.000173693 16384
+1 0.000211996 16384
+1 0.000174205 16384
+1 0.000175232 16384
+1 0.000222319 16384
+1 0.000174473 16384
+1 0.000173905 16384
+1 0.000174245 16384
+1 0.000222767 16384
+1 0.000174680 16384
+1 0.000217322 16384
+1 0.000175657 16384
+1 0.000172138 16384
+1 0.000173154 16384
+1 0.000181922 16384
+1 0.000211261 16384
+1 0.000184041 16384
+1 0.000173746 16384
+1 0.000243145 16384
+1 0.000179559 16384
+1 0.000176514 16384
+1 0.000228488 16384
+1 0.000177394 16384
+1 0.000177116 16384
+1 0.000176330 16384
+1 0.000223859 16384
+1 0.000182981 16384
+1 0.000227680 16384
+1 0.000177529 16384
+1 0.000177276 16384
+1 0.000176643 16384
+1 0.000213851 16384
+1 0.000184064 16384
+1 0.000178917 16384
+1 0.000183389 16384
+1 0.000213760 16384
+1 0.000176615 16384
+1 0.000177014 16384
+1 0.000222460 16384
+1 0.000177618 16384
+1 0.000177433 16384
+1 0.000176751 16384
+1 0.000220289 16384
+1 0.000183874 16384
+1 0.000223291 16384
+1 0.000176584 16384
+1 0.000175356 16384
+1 0.000176131 16384
+1 0.000238184 16384
+1 0.000193171 16384
+1 0.000174034 16384
+1 0.000215225 16384
+1 0.000174230 16384
+1 0.000174692 16384
+1 0.000175198 16384
+1 0.000220923 16384
+1 0.000174519 16384
+1 0.000173328 16384
+1 0.000210593 16384
+1 0.000175280 16384
+1 0.000223725 16384
+1 0.000174043 16384
+1 0.000172213 16384
+1 0.000174386 16384
+1 0.000210062 16384
+1 0.000172668 16384
+1 0.000182741 16384
+1 0.000209600 16384
+1 0.000173388 16384
+1 0.000174516 16384
+1 0.000204938 16384
+1 0.000219722 16384
+1 0.000186264 16384
+1 0.000175835 16384
+1 0.000216579 16384
+1 0.000176859 16384
+1 0.000185424 16384
+1 0.000256274 16384
+1 0.000177038 16384
+1 0.000177028 16384
+1 0.000177097 16384
+1 0.000218396 16384
+1 0.000176244 16384
+1 0.000186753 16384
+1 0.000216613 16384
+1 0.000177165 16384
+1 0.000175987 16384
+1 0.000176194 16384
+1 0.000224954 16384
+1 0.000176241 16384
+1 0.000179706 16384
+1 0.000215687 16384
+1 0.000176822 16384
+1 0.000176959 16384
+1 0.000238809 16384
+1 0.000176021 16384
+1 0.000176005 16384
+1 0.000215081 16384
+1 0.000176917 16384
+1 0.000176841 16384
+1 0.000226806 16384
+1 0.000176823 16384
+1 0.000176219 16384
+1 0.000176206 16384
+1 0.000215191 16384
+1 0.000187089 16384
+1 0.000175357 16384
+1 0.000215160 16384
+1 0.000175506 16384
+1 0.000176262 16384
+1 0.000176893 16384
+1 0.000234077 16384
+1 0.000179820 16384
+1 0.000216583 16384
+1 0.000179626 16384
+1 0.000177220 16384
+1 0.000176652 16384
+1 0.000227752 16384
+1 0.000176586 16384
+1 0.000176687 16384
+1 0.000214614 16384
+1 0.000177012 16384
+1 0.000195925 16384
+1 0.000217877 16384
+1 0.000176660 16384
+1 0.000176628 16384
+1 0.000176518 16384
+1 0.000215128 16384
+1 0.000187158 16384
+1 0.000225865 16384
+1 0.000176883 16384
+1 0.000176479 16384
+1 0.000176918 16384
+1 0.000224584 16384
+1 0.000180642 16384
+1 0.000176575 16384
+1 0.000244591 16384
+1 0.000178884 16384
+1 0.000174478 16384
+1 0.000226308 16384
+1 0.000174493 16384
+1 0.000174253 16384
+1 0.000176100 16384
+1 0.000215833 16384
+1 0.000176009 16384
+1 0.000183651 16384
+1 0.000223742 16384
+1 0.000174847 16384
+1 0.000174555 16384
+1 0.000213911 16384
+1 0.000182787 16384
+1 0.000174312 16384
+1 0.000213740 16384
+1 0.000175147 16384
+1 0.000174444 16384
+1 0.000174608 16384
+1 0.000222736 16384
+1 0.000174226 16384
+1 0.000174346 16384
+1 0.000216076 16384
+1 0.000174753 16384
+1 0.000182164 16384
+1 0.000217255 16384
+1 0.000182199 16384
+1 0.000176654 16384
+1 0.000184926 16384
+1 0.000214193 16384
+1 0.000184332 16384
+1 0.000175061 16384
+1 0.000214842 16384
+1 0.000174290 16384
+1 0.000175230 16384
+1 0.000174584 16384
+1 0.000222141 16384
+1 0.000175004 16384
+1 0.000221859 16384
+1 0.000215405 16384
+1 0.000174805 16384
+1 0.000184484 16384
+1 0.000212251 16384
+1 0.000173998 16384
+1 0.000179855 16384
+1 0.000214218 16384
+1 0.000173891 16384
+1 0.000183743 16384
+1 0.000213744 16384
+1 0.000173599 16384
+1 0.000173705 16384
+1 0.000172790 16384
+1 0.000220443 16384
+1 0.000176454 16384
+1 0.000174052 16384
+1 0.000182942 16384
+1 0.000182499 16384
+1 0.000182752 16384
+1 0.000218520 16384
+1 0.000174344 16384
+1 0.000174067 16384
+1 0.000221027 16384
+1 0.000174479 16384
+1 0.000173231 16384
+1 0.000219055 16384
+1 0.000173519 16384
+1 0.000173592 16384
+1 0.000187641 16384
+1 0.000180615 16384
+1 0.000221532 16384
+1 0.000173358 16384
+1 0.000173716 16384
+1 0.000212930 16384
+1 0.000173799 16384
+1 0.000173265 16384
+1 0.000220938 16384
+1 0.000174478 16384
+1 0.000174193 16384
+1 0.000218225 16384
+1 0.000175334 16384
+1 0.000174731 16384
+1 0.000221306 16384
+1 0.000173339 16384
+1 0.000172534 16384
+1 0.000174621 16384
+1 0.000211371 16384
+1 0.000184274 16384
+1 0.000173693 16384
+1 0.000210738 16384
+1 0.000172870 16384
+1 0.000173658 16384
+1 0.000174610 16384
+1 0.000227013 16384
+1 0.000174377 16384
+1 0.000173774 16384
+1 0.000216715 16384
+1 0.000174562 16384
+1 0.000184457 16384
+1 0.000212227 16384
+1 0.000174285 16384
+1 0.000172947 16384
+1 0.000172874 16384
+1 0.000209950 16384
+1 0.000183721 16384
+1 0.000173842 16384
+1 0.000181812 16384
+1 0.000209234 16384
+1 0.000173865 16384
+1 0.000174440 16384
+1 0.000219158 16384
+1 0.000173688 16384
+1 0.000186204 16384
+1 0.000187117 16384
+1 0.000224835 16384
+1 0.000186466 16384
+1 0.000215016 16384
+1 0.000173500 16384
+1 0.000172877 16384
+1 0.000173607 16384
+1 0.000212322 16384
+1 0.000183453 16384
+1 0.000173058 16384
+1 0.000212908 16384
+1 0.000174174 16384
+1 0.000173832 16384
+1 0.000220095 16384
+1 0.000174213 16384
+1 0.000173628 16384
+1 0.000173636 16384
+1 0.000214330 16384
+1 0.000181537 16384
+1 0.000218378 16384
+1 0.000176719 16384
+1 0.000173799 16384
+1 0.000175342 16384
+1 0.000180003 16384
+1 0.000180824 16384
+1 0.000206418 16384
+1 0.000180934 16384
+1 0.000213981 16384
+1 0.000173692 16384
+1 0.000174841 16384
+1 0.000219890 16384
+1 0.000174085 16384
+1 0.000178707 16384
+1 0.000173240 16384
+1 0.000212296 16384
+1 0.000183092 16384
+1 0.000223713 16384
+1 0.000174196 16384
+1 0.000174774 16384
+1 0.000176585 16384
+1 0.000213063 16384
+1 0.000181023 16384
+1 0.000174437 16384
+1 0.000212119 16384
+1 0.000174637 16384
+1 0.000174680 16384
+1 0.000172043 16384
+1 0.000225831 16384
+1 0.000174957 16384
+1 0.000173717 16384
+1 0.000204836 16384
+1 0.000174480 16384
+1 0.000174503 16384
+1 0.000227562 16384
+1 0.000174648 16384
+1 0.000173883 16384
+1 0.000210909 16384
+1 0.000175163 16384
+1 0.000185280 16384
+1 0.000188143 16384
+1 0.000213442 16384
+1 0.000175698 16384
+1 0.000174523 16384
+1 0.000173744 16384
+1 0.000222276 16384
+1 0.000173932 16384
+1 0.000174101 16384
+1 0.000228212 16384
+1 0.000179652 16384
+1 0.000182744 16384
+1 0.000219840 16384
+1 0.000171827 16384
+1 0.000172109 16384
+1 0.000213111 16384
+1 0.000175428 16384
+1 0.000182643 16384
+1 0.000180712 16384
+1 0.000212075 16384
+1 0.000174431 16384
+1 0.000174165 16384
+1 0.000173958 16384
+1 0.000221502 16384
+1 0.000174430 16384
+1 0.000172987 16384
+1 0.000213347 16384
+1 0.000179394 16384
+1 0.000184413 16384
+1 0.000221817 16384
+1 0.000173676 16384
+1 0.000173467 16384
+1 0.000211345 16384
+1 0.000173427 16384
+1 0.000183070 16384
+1 0.000214273 16384
+1 0.000173861 16384
+1 0.000172542 16384
+1 0.000172972 16384
+1 0.000212044 16384
+1 0.000179707 16384
+1 0.000173853 16384
+1 0.000214614 16384
+1 0.000175333 16384
+1 0.000174546 16384
+1 0.000219227 16384
+1 0.000182069 16384
+1 0.000174346 16384
+1 0.000213209 16384
+1 0.000174893 16384
+1 0.000173416 16384
+1 0.000220164 16384
+1 0.000174433 16384
+1 0.000173567 16384
+1 0.000174038 16384
+1 0.000211480 16384
+1 0.000181584 16384
+1 0.000174524 16384
+1 0.000212783 16384
+1 0.000173224 16384
+1 0.000173899 16384
+1 0.000173311 16384
+1 0.000227583 16384
+1 0.000173853 16384
+1 0.000181100 16384
+1 0.000210033 16384
+1 0.000173540 16384
+1 0.000173247 16384
+1 0.000216875 16384
+1 0.000176372 16384
+1 0.000174152 16384
+1 0.000173313 16384
+1 0.000180973 16384
+1 0.000219101 16384
+1 0.000174160 16384
+1 0.000173459 16384
+1 0.000208939 16384
+1 0.000173989 16384
+1 0.000173410 16384
+1 0.000218716 16384
+1 0.000177116 16384
+1 0.000182663 16384
+1 0.000212028 16384
+1 0.000173705 16384
+1 0.000181046 16384
+1 0.000209238 16384
+1 0.000174394 16384
+1 0.000174024 16384
+1 0.000173850 16384
+1 0.000210442 16384
+1 0.000181175 16384
+1 0.000171863 16384
+1 0.000211097 16384
+1 0.000174362 16384
+1 0.000174110 16384
+1 0.000174258 16384
+1 0.000222086 16384
+1 0.000173989 16384
+1 0.000232996 16384
+1 0.000178935 16384
+1 0.000174268 16384
+1 0.000224038 16384
+1 0.000174040 16384
+1 0.000174231 16384
+1 0.000174277 16384
+1 0.000216674 16384
+1 0.000175634 16384
+4 0.000634865 54
+1 0.000552527 10240
diff --git a/lib/iolog/regress/corpus/timing/timing.4 b/lib/iolog/regress/corpus/timing/timing.4
new file mode 100644
index 000000000..20e0bb0e6
--- /dev/null
+++ b/lib/iolog/regress/corpus/timing/timing.4
@@ -0,0 +1,8 @@
+2 0.025750192 5
+0 0.670737828 2
+0 2.832110312 2
+0 0.903947334 2
+0 1.727798521 3
+0 2.040329883 2
+2 0.001192523 2
+1 0.001253839 77
diff --git a/lib/iolog/regress/fuzz/fuzz_iolog_json.c b/lib/iolog/regress/fuzz/fuzz_iolog_json.c
new file mode 100644
index 000000000..b31ade64b
--- /dev/null
+++ b/lib/iolog/regress/fuzz/fuzz_iolog_json.c
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+#include "iolog_json.h"
+
+static FILE *
+open_data(const uint8_t *data, size_t size)
+{
+#ifdef HAVE_FMEMOPEN
+ /* Operate in-memory. */
+ return fmemopen((void *)data, size, "r");
+#else
+ char tempfile[] = "/tmp/json.XXXXXX";
+ size_t nwritten;
+ int fd;
+
+ /* Use (unlinked) temporary file. */
+ fd = mkstemp(tempfile);
+ if (fd == -1)
+ return NULL;
+ unlink(tempfile);
+ nwritten = write(fd, data, size);
+ if (nwritten != size) {
+ close(fd);
+ return NULL;
+ }
+ lseek(fd, 0, SEEK_SET);
+ return fdopen(fd, "r");
+#endif
+}
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ struct eventlog *evlog = NULL;
+ FILE *fp;
+
+ setprogname("fuzz_iolog_json");
+
+ fp = open_data(data, size);
+ if (fp == NULL)
+ return 0;
+
+ /* Parsed contents of an log.json file are stored in evlog. */
+ evlog = calloc(1, sizeof(*evlog));
+ if (evlog != NULL) {
+ evlog->runuid = (uid_t)-1;
+ evlog->rungid = (gid_t)-1;
+
+ /* Try to parse buffer as a JSON-format I/O log info file. */
+ iolog_parse_loginfo_json(fp, "fuzz.json", evlog);
+ eventlog_free(evlog);
+ }
+ fclose(fp);
+
+ return 0;
+}
diff --git a/lib/iolog/regress/fuzz/fuzz_iolog_json.dict b/lib/iolog/regress/fuzz/fuzz_iolog_json.dict
new file mode 100644
index 000000000..e7d7b8863
--- /dev/null
+++ b/lib/iolog/regress/fuzz/fuzz_iolog_json.dict
@@ -0,0 +1,17 @@
+# I/O log JSON keywords
+"\"columns\""
+"\"command\""
+"\"lines\""
+"\"runargv\""
+"\"runenv\""
+"\"rungid\""
+"\"rungroup\""
+"\"runuid\""
+"\"runuser\""
+"\"runchroot\""
+"\"runcwd\""
+"\"submitcwd\""
+"\"submithost\""
+"\"submituser\""
+"\"timestamp\""
+"\"ttyname\"""
diff --git a/lib/iolog/regress/fuzz/fuzz_iolog_legacy.c b/lib/iolog/regress/fuzz/fuzz_iolog_legacy.c
new file mode 100644
index 000000000..97f4180eb
--- /dev/null
+++ b/lib/iolog/regress/fuzz/fuzz_iolog_legacy.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+static FILE *
+open_data(const uint8_t *data, size_t size)
+{
+#ifdef HAVE_FMEMOPEN
+ /* Operate in-memory. */
+ return fmemopen((void *)data, size, "r");
+#else
+ char tempfile[] = "/tmp/legacy.XXXXXX";
+ size_t nwritten;
+ int fd;
+
+ /* Use (unlinked) temporary file. */
+ fd = mkstemp(tempfile);
+ if (fd == -1)
+ return NULL;
+ unlink(tempfile);
+ nwritten = write(fd, data, size);
+ if (nwritten != size) {
+ close(fd);
+ return NULL;
+ }
+ lseek(fd, 0, SEEK_SET);
+ return fdopen(fd, "r");
+#endif
+}
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ struct eventlog *evlog = NULL;
+ FILE *fp;
+
+ setprogname("fuzz_iolog_legacy");
+
+ fp = open_data(data, size);
+ if (fp == NULL)
+ return 0;
+
+ /* Parsed contents of an I/O log info file are stored in evlog. */
+ evlog = calloc(1, sizeof(*evlog));
+ if (evlog != NULL) {
+ evlog->runuid = (uid_t)-1;
+ evlog->rungid = (gid_t)-1;
+
+ /* Try to parse buffer as a legacy-format I/O log info file. */
+ iolog_parse_loginfo_legacy(fp, "fuzz.legacy", evlog);
+ eventlog_free(evlog);
+ }
+ fclose(fp);
+
+ return 0;
+}
diff --git a/lib/iolog/regress/fuzz/fuzz_iolog_timing.c b/lib/iolog/regress/fuzz/fuzz_iolog_timing.c
new file mode 100644
index 000000000..d92845296
--- /dev/null
+++ b/lib/iolog/regress/fuzz/fuzz_iolog_timing.c
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <sys/stat.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+#ifdef HAVE_STDBOOL_H
+# include <stdbool.h>
+#else
+# include "compat/stdbool.h"
+#endif /* HAVE_STDBOOL_H */
+
+#include "sudo_compat.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_fatal.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ struct iolog_file iolog_file = { true };
+ struct timing_closure closure;
+ char logdir[] = "/tmp/timing.XXXXXX";
+ int dfd = -1, fd = -1;
+
+ setprogname("fuzz_iolog_timing");
+
+ /* I/O logs consist of multiple files in a directory. */
+ if (mkdtemp(logdir) == NULL)
+ return 0;
+
+ /* Create a timing file from the supplied data. */
+ dfd = open(logdir, O_RDONLY);
+ if (dfd == -1)
+ goto cleanup;
+
+ fd = openat(dfd, "timing", O_WRONLY|O_CREAT|O_EXCL, S_IRWXU);
+ if (fd == -1)
+ goto cleanup;
+
+ if (write(fd, data, size) != (ssize_t)size)
+ goto cleanup;
+ close(fd);
+ fd = -1;
+
+ /* Open the timing file we wrote and try to parse it. */
+ if (!iolog_open(&iolog_file, dfd, IOFD_TIMING, "r"))
+ goto cleanup;
+
+ memset(&closure, 0, sizeof(closure));
+ closure.decimal = ".";
+ for (;;) {
+ if (iolog_read_timing_record(&iolog_file, &closure) != 0)
+ break;
+ }
+ iolog_close(&iolog_file, NULL);
+
+cleanup:
+ if (dfd != -1) {
+ if (fd != -1)
+ close(fd);
+ unlinkat(dfd, "timing", 0);
+ close(dfd);
+ }
+ rmdir(logdir);
+
+ return 0;
+}
+
+/* STUB */
+bool
+iolog_swapids(bool restore)
+{
+ return false;
+}
diff --git a/lib/iolog/regress/iolog_json/check_iolog_json.c b/lib/iolog/regress/iolog_json/check_iolog_json.c
index a967ba641..5770faf82 100644
--- a/lib/iolog/regress/iolog_json/check_iolog_json.c
+++ b/lib/iolog/regress/iolog_json/check_iolog_json.c
@@ -209,9 +209,9 @@ main(int argc, char *argv[])
/* Parse input file. */
if ((infp = fopen(infile, "r")) == NULL) {
- sudo_warn("%s", argv[1]);
+ sudo_warn("%s", argv[i]);
errors++;
- goto next;
+ continue;
}
if (!iolog_parse_json(infp, infile, &root)) {
errors++;
diff --git a/lib/iolog/regress/iolog_util/check_iolog_util.c b/lib/iolog/regress/iolog_timing/check_iolog_timing.c
index de94ee17e..89fc45db3 100644
--- a/lib/iolog/regress/iolog_util/check_iolog_util.c
+++ b/lib/iolog/regress/iolog_timing/check_iolog_timing.c
@@ -132,14 +132,14 @@ main(int argc, char *argv[])
{
int tests = 0, errors = 0;
- initprogname(argc > 0 ? argv[0] : "check_iolog_util");
+ initprogname(argc > 0 ? argv[0] : "check_iolog_timing");
test_parse_delay(&tests, &errors);
test_adjust_delay(&tests, &errors);
if (tests != 0) {
- printf("iolog_util: %d test%s run, %d errors, %d%% success rate\n",
+ printf("iolog_timing: %d test%s run, %d errors, %d%% success rate\n",
tests, tests == 1 ? "" : "s", errors,
(tests - errors) * 100 / tests);
}
diff --git a/lib/logsrv/Makefile.in b/lib/logsrv/Makefile.in
index 76f7d4c26..b15b209e3 100644
--- a/lib/logsrv/Makefile.in
+++ b/lib/logsrv/Makefile.in
@@ -136,6 +136,8 @@ install-doc:
install-plugin:
+install-fuzzer:
+
uninstall:
splint:
@@ -146,6 +148,8 @@ cppcheck:
pvs-log-files: $(POBJS)
+fuzz:
+
check:
clean:
@@ -168,6 +172,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
log_server.pb-c.lo: $(srcdir)/log_server.pb-c.c $(incdir)/log_server.pb-c.h \
$(incdir)/protobuf-c/protobuf-c.h
diff --git a/lib/util/Makefile.in b/lib/util/Makefile.in
index 9b4ff8b1f..174c197b8 100644
--- a/lib/util/Makefile.in
+++ b/lib/util/Makefile.in
@@ -109,6 +109,14 @@ TEST_PROGS = conf_test hltq_test parseln_test progname_test strsplit_test \
TEST_LIBS = @LIBS@
TEST_LDFLAGS = @LDFLAGS@
+# Fuzzers
+LIBFUZZSTUB = $(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la
+LIB_FUZZING_ENGINE = @FUZZ_ENGINE@
+FUZZ_PROGS = fuzz_sudo_conf
+FUZZ_SEED_CORPUS = ${FUZZ_PROGS:=_seed_corpus.zip}
+FUZZ_LIBS = @LIBS@ $(LIB_FUZZING_ENGINE)
+FUZZ_LDFLAGS = @LDFLAGS@
+
# User and group ids the installed files should be "owned" by
install_uid = 0
install_gid = 0
@@ -120,8 +128,8 @@ DEVEL = @DEVEL@
SHELL = @SHELL@
-LTOBJS = @DIGEST@ event.lo fatal.lo key_val.lo gethostname.lo gettime.lo \
- getgrouplist.lo gidlist.lo json.lo lbuf.lo locking.lo \
+LTOBJS = basename.lo @DIGEST@ event.lo fatal.lo key_val.lo gethostname.lo \
+ gettime.lo getgrouplist.lo gidlist.lo json.lo lbuf.lo locking.lo \
logfac.lo logpri.lo mkdir_parents.lo parseln.lo progname.lo \
roundup.lo secure_path.lo setgroups.lo strsplit.lo strtobool.lo \
strtoid.lo strtomode.lo strtonum.lo sudo_conf.lo \
@@ -136,7 +144,7 @@ MKTEMP_TEST_OBJS = mktemp_test.lo mktemp.lo
PARSELN_TEST_OBJS = parseln_test.lo parseln.lo
-PROGNAME_TEST_OBJS = progname_test.lo progname.lo
+PROGNAME_TEST_OBJS = progname_test.lo progname.lo basename.lo
CONF_TEST_OBJS = conf_test.lo sudo_conf.lo
@@ -166,6 +174,10 @@ STRSIG_TEST_OBJS = strsig_test.lo sig2str.lo str2sig.lo @SIGNAME@
VSYSLOG_TEST_OBJS = vsyslog_test.lo vsyslog.lo
+FUZZ_SUDO_CONF_OBJS = fuzz_sudo_conf.lo
+
+FUZZ_SUDO_CONF_CORPUS = $(srcdir)/regress/corpus/sudo_conf/sudo.conf.*
+
all: libsudo_util.la
pvs-log-files: $(POBJS)
@@ -279,6 +291,18 @@ strtoid_test: $(STRTOID_TEST_OBJS) libsudo_util.la
vsyslog_test: $(VSYSLOG_TEST_OBJS) libsudo_util.la
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(VSYSLOG_TEST_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(TEST_LDFLAGS) $(TEST_LIBS)
+fuzz_sudo_conf: $(FUZZ_SUDO_CONF_OBJS) $(LIBFUZZSTUB) libsudo_util.la
+ $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(FUZZ_SUDO_CONF_OBJS) libsudo_util.la $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS)
+
+fuzz_sudo_conf_seed_corpus.zip:
+ tdir=fuzz_sudo_conf.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_SUDO_CONF_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
pre-install:
install: install-dirs
@@ -300,6 +324,14 @@ install-doc:
install-plugin:
+install-fuzzer: $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS)
+ @if test X"$(FUZZ_DESTDIR)" = X""; then \
+ echo "must set FUZZ_DESTDIR for install-fuzzer target"; \
+ else \
+ cp $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS) $(FUZZ_DESTDIR); \
+ cp $(srcdir)/regress/fuzz/*.dict $(FUZZ_DESTDIR); \
+ fi
+
uninstall:
$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_util.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -313,9 +345,29 @@ cppcheck:
pvs-log-files: $(POBJS)
+fuzz: $(FUZZ_PROGS)
+ @if test X"$(cross_compiling)" != X"yes"; then \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
+ unset LANG || LANG=; \
+ MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
+ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
+ echo "fuzz_sudo_conf: verifying corpus"; \
+ ./fuzz_sudo_conf $(FUZZ_SUDO_CONF_CORPUS); \
+ fi
+
# Note: some regress checks are run from srcdir for consistent error messages
-check: $(TEST_PROGS)
+check: $(TEST_PROGS) fuzz
@if test X"$(cross_compiling)" != X"yes"; then \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
+ unset LANG || LANG=; \
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
rval=0; \
@@ -409,7 +461,8 @@ check: $(TEST_PROGS)
fi
clean:
- -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f $(TEST_PROGS) *.lo *.o *.la
+ -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f $(TEST_PROGS) $(FUZZ_PROGS) \
+ *.lo *.o *.la
-rm -f *.i *.plog stamp-* core *.core core.* regress/*/*.out \
regress/*/*.err
@@ -426,6 +479,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean $(FUZZ_SEED_CORPUS)
+
# Autogenerated dependencies, do not modify
aix.lo: $(srcdir)/aix.c $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
$(incdir)/sudo_debug.h $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
@@ -457,6 +512,16 @@ arc4random_uniform.i: $(srcdir)/arc4random_uniform.c $(incdir)/sudo_compat.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
arc4random_uniform.plog: arc4random_uniform.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/arc4random_uniform.c --i-file $< --output-file $@
+basename.lo: $(srcdir)/basename.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/basename.c
+basename.i: $(srcdir)/basename.c $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+basename.plog: basename.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/basename.c --i-file $< --output-file $@
cfmakeraw.lo: $(srcdir)/cfmakeraw.c $(incdir)/sudo_compat.h \
$(top_builddir)/config.h
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/cfmakeraw.c
@@ -635,6 +700,20 @@ fstatat.i: $(srcdir)/fstatat.c $(incdir)/sudo_compat.h $(top_builddir)/config.h
$(CC) -E -o $@ $(CPPFLAGS) $<
fstatat.plog: fstatat.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/fstatat.c --i-file $< --output-file $@
+fuzz_sudo_conf.lo: $(srcdir)/regress/fuzz/fuzz_sudo_conf.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_sudo_conf.c
+fuzz_sudo_conf.i: $(srcdir)/regress/fuzz/fuzz_sudo_conf.c \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_sudo_conf.plog: fuzz_sudo_conf.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_sudo_conf.c --i-file $< --output-file $@
getaddrinfo.lo: $(srcdir)/getaddrinfo.c $(incdir)/compat/getaddrinfo.h \
$(incdir)/sudo_compat.h $(top_builddir)/config.h
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/getaddrinfo.c
diff --git a/lib/util/basename.c b/lib/util/basename.c
new file mode 100644
index 000000000..b757b36fe
--- /dev/null
+++ b/lib/util/basename.c
@@ -0,0 +1,52 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <errno.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <syslog.h>
+
+#include "sudo_compat.h"
+#include "sudo_util.h"
+
+/*
+ * GNU-compatible basename(3)
+ * Unlike the POSIX version, this version never modifies its argument
+ * and returns an empty string if filename ends in a slash.
+ */
+char *
+sudo_basename_v1(const char *filename)
+{
+ char *base;
+
+ if ((base = strrchr(filename, '/')) != NULL)
+ base++;
+ else
+ base = (char *)filename;
+
+ return base;
+}
diff --git a/lib/util/getdelim.c b/lib/util/getdelim.c
index 8daf620d5..3106f8c57 100644
--- a/lib/util/getdelim.c
+++ b/lib/util/getdelim.c
@@ -53,9 +53,10 @@ sudo_getdelim(char **buf, size_t *bufsize, int delim, FILE *fp)
char *tmp = reallocarray(*buf, *bufsize, 2);
if (tmp == NULL)
goto bad;
+ *bufsize *= 2;
cp = tmp + (cp - *buf);
+ ep = cp + *bufsize;
*buf = tmp;
- *bufsize *= 2;
}
if ((ch = getc(fp)) == EOF) {
if (feof(fp))
diff --git a/lib/util/lbuf.c b/lib/util/lbuf.c
index 5ff069eb4..f17ae0ca5 100644
--- a/lib/util/lbuf.c
+++ b/lib/util/lbuf.c
@@ -55,6 +55,9 @@ sudo_lbuf_destroy_v1(struct sudo_lbuf *lbuf)
debug_decl(sudo_lbuf_destroy, SUDO_DEBUG_UTIL);
free(lbuf->buf);
+ lbuf->error = 0;
+ lbuf->len = 0;
+ lbuf->size = 0;
lbuf->buf = NULL;
debug_return;
diff --git a/lib/util/progname.c b/lib/util/progname.c
index b23a7660a..a5f93b25f 100644
--- a/lib/util/progname.c
+++ b/lib/util/progname.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2013-2015 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2013-2015, 2020-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -29,19 +29,33 @@
#include "sudo_compat.h"
#include "sudo_util.h"
-#ifdef HAVE_GETPROGNAME
-
-# ifndef HAVE_SETPROGNAME
-/* Assume __progname if have getprogname(3) but not setprogname(3). */
+/*
+ * Declare/define __progname[] if necessary.
+ * Assumes __progname[] is present if we have getprogname(3).
+ */
+#ifndef HAVE_SETPROGNAME
+# if defined(HAVE_GETPROGNAME) || defined(HAVE___PROGNAME)
extern const char *__progname;
+# else
+static const char *__progname = "";
+# endif /* HAVE_GETPROGNAME || HAVE___PROGNAME */
+#endif /* HAVE_SETPROGNAME */
+#ifndef HAVE_GETPROGNAME
+const char *
+sudo_getprogname(void)
+{
+ return __progname;
+}
+#endif
+
+#ifndef HAVE_SETPROGNAME
void
sudo_setprogname(const char *name)
{
- const char *slash = strrchr(name, '/');
- __progname = slash ? slash + 1 : name;
+ __progname = sudo_basename(name);
}
-# endif
+#endif
void
initprogname2(const char *name, const char * const * allowed)
@@ -50,8 +64,12 @@ initprogname2(const char *name, const char * const * allowed)
int i;
/* Fall back on "name" if getprogname() returns an empty string. */
- if ((progname = getprogname()) != NULL && *progname != '\0')
+ if ((progname = getprogname()) != NULL && *progname != '\0') {
name = progname;
+ } else {
+ /* Make sure user-specified name is relative. */
+ name = sudo_basename(name);
+ }
/* Check for libtool prefix and strip it if present. */
if (name[0] == 'l' && name[1] == 't' && name[2] == '-' && name[3] != '\0')
@@ -75,59 +93,6 @@ initprogname2(const char *name, const char * const * allowed)
return;
}
-#else /* !HAVE_GETPROGNAME */
-
-static const char *progname = "";
-
-void
-initprogname2(const char *name, const char * const * allowed)
-{
- int i;
-# ifdef HAVE___PROGNAME
- extern const char *__progname;
-
- if (__progname != NULL && *__progname != '\0')
- progname = __progname;
- else
-# endif
- if ((progname = strrchr(name, '/')) != NULL) {
- progname++;
- } else {
- progname = name;
- }
-
- /* Check for libtool prefix and strip it if present. */
- if (progname[0] == 'l' && progname[1] == 't' && progname[2] == '-' &&
- progname[3] != '\0')
- progname += 3;
-
- /* Check allow list if present (first element is the default). */
- if (allowed != NULL) {
- for (i = 0; ; i++) {
- if (allowed[i] == NULL) {
- progname = allowed[0];
- break;
- }
- if (strcmp(allowed[i], progname) == 0)
- break;
- }
- }
-}
-
-const char *
-sudo_getprogname(void)
-{
- return progname;
-}
-
-void
-sudo_setprogname(const char *name)
-{
- const char *slash = strrchr(name, '/');
- progname = slash ? slash + 1 : name;
-}
-#endif /* !HAVE_GETPROGNAME */
-
void
initprogname(const char *name)
{
diff --git a/lib/util/regress/corpus/sudo_conf/sudo.conf.1 b/lib/util/regress/corpus/sudo_conf/sudo.conf.1
new file mode 100644
index 000000000..4d0787536
--- /dev/null
+++ b/lib/util/regress/corpus/sudo_conf/sudo.conf.1
@@ -0,0 +1,124 @@
+#
+# Default /etc/sudo.conf file
+#
+# Sudo plugins:
+# Plugin plugin_name plugin_path plugin_options ...
+#
+# The plugin_path is relative to /usr/local/libexec/sudo unless
+# fully qualified.
+# The plugin_name corresponds to a global symbol in the plugin
+# that contains the plugin interface structure.
+# The plugin_options are optional.
+#
+# The sudoers plugin is used by default if no Plugin lines are present.
+#Plugin sudoers_policy sudoers.so
+#Plugin sudoers_io sudoers.so
+#Plugin sudoers_audit sudoers.so
+
+#
+# Sudo askpass:
+# Path askpass /path/to/askpass
+#
+# An askpass helper program may be specified to provide a graphical
+# password prompt for "sudo -A" support. Sudo does not ship with its
+# own askpass program but can use the OpenSSH askpass.
+#
+# Use the OpenSSH askpass
+#Path askpass /usr/X11R6/bin/ssh-askpass
+#
+# Use the Gnome OpenSSH askpass
+#Path askpass /usr/libexec/openssh/gnome-ssh-askpass
+
+#
+# Sudo device search path:
+# Path devsearch /dev/path1:/dev/path2:/dev
+#
+# A colon-separated list of paths to check when searching for a user's
+# terminal device.
+#
+#Path devsearch /dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev
+
+#
+# Sudo noexec:
+# Path noexec /path/to/sudo_noexec.so
+#
+# Path to a shared library containing replacements for the execv(),
+# execve() and fexecve() library functions that just return an error.
+# This is used to implement the "noexec" functionality on systems that
+# support LD_PRELOAD or its equivalent.
+#
+# The compiled-in value is usually sufficient and should only be changed
+# if you rename or move the sudo_noexec.so file.
+#
+#Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+
+#
+# Sudo plugin directory:
+# Path plugin_dir /path/to/plugins
+#
+# The default directory to use when searching for plugins that are
+# specified without a fully qualified path name.
+#
+#Path plugin_dir /usr/local/libexec/sudo
+
+#
+# Sudo developer mode:
+# Set developer_mode true|false
+#
+# Allow loading of plugins that are owned by non-root or are writable
+# by "group" or "other". Should only be used during plugin development.
+#Set developer_mode true
+
+#
+# Core dumps:
+# Set disable_coredump true|false
+#
+# By default, sudo disables core dumps while it is executing (they
+# are re-enabled for the command that is run).
+# To aid in debugging sudo problems, you may wish to enable core
+# dumps by setting "disable_coredump" to false.
+#
+#Set disable_coredump false
+
+#
+# User groups:
+# Set group_source static|dynamic|adaptive
+#
+# Sudo passes the user's group list to the policy plugin.
+# If the user is a member of the maximum number of groups (usually 16),
+# sudo will query the group database directly to be sure to include
+# the full list of groups.
+#
+# On some systems, this can be expensive so the behavior is configurable.
+# The "group_source" setting has three possible values:
+# static - use the user's list of groups returned by the kernel.
+# dynamic - query the group database to find the list of groups.
+# adaptive - if user is in less than the maximum number of groups.
+# use the kernel list, else query the group database.
+#
+#Set group_source static
+
+#
+# Sudo interface probing:
+# Set probe_interfaces true|false
+#
+# By default, sudo will probe the system's network interfaces and
+# pass the IP address of each enabled interface to the policy plugin.
+# On systems with a large number of virtual interfaces this may take
+# a noticeable amount of time.
+#
+#Set probe_interfaces false
+
+#
+# Sudo debug files:
+# Debug program /path/to/debug_log subsystem@priority[,subsyste@priority]
+#
+# Sudo and related programs support logging debug information to a file.
+# The program is typically sudo, sudoers.so, sudoreplay or visudo.
+#
+# Subsystems vary based on the program; "all" matches all subsystems.
+# Priority may be crit, err, warn, notice, diag, info, trace or debug.
+# Multiple subsystem@priority may be specified, separated by a comma.
+#
+#Debug sudo /var/log/sudo_debug all@debug
+#Debug sudoers.so /var/log/sudoers_debug all@debug
diff --git a/lib/util/regress/corpus/sudo_conf/sudo.conf.2 b/lib/util/regress/corpus/sudo_conf/sudo.conf.2
new file mode 100644
index 000000000..c99e623a7
--- /dev/null
+++ b/lib/util/regress/corpus/sudo_conf/sudo.conf.2
@@ -0,0 +1,124 @@
+#
+# Default /etc/sudo.conf file
+#
+# Sudo plugins:
+# Plugin plugin_name plugin_path plugin_options ...
+#
+# The plugin_path is relative to /usr/local/libexec/sudo unless
+# fully qualified.
+# The plugin_name corresponds to a global symbol in the plugin
+# that contains the plugin interface structure.
+# The plugin_options are optional.
+#
+# The sudoers plugin is used by default if no Plugin lines are present.
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+Plugin sudoers_audit sudoers.so
+
+#
+# Sudo askpass:
+# Path askpass /path/to/askpass
+#
+# An askpass helper program may be specified to provide a graphical
+# password prompt for "sudo -A" support. Sudo does not ship with its
+# own askpass program but can use the OpenSSH askpass.
+#
+# Use the OpenSSH askpass
+Path askpass /usr/X11R6/bin/ssh-askpass
+#
+# Use the Gnome OpenSSH askpass
+Path askpass /usr/libexec/openssh/gnome-ssh-askpass
+
+#
+# Sudo device search path:
+# Path devsearch /dev/path1:/dev/path2:/dev
+#
+# A colon-separated list of paths to check when searching for a user's
+# terminal device.
+#
+Path devsearch /dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev
+
+#
+# Sudo noexec:
+# Path noexec /path/to/sudo_noexec.so
+#
+# Path to a shared library containing replacements for the execv(),
+# execve() and fexecve() library functions that just return an error.
+# This is used to implement the "noexec" functionality on systems that
+# support LD_PRELOAD or its equivalent.
+#
+# The compiled-in value is usually sufficient and should only be changed
+# if you rename or move the sudo_noexec.so file.
+#
+Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+
+#
+# Sudo plugin directory:
+# Path plugin_dir /path/to/plugins
+#
+# The default directory to use when searching for plugins that are
+# specified without a fully qualified path name.
+#
+Path plugin_dir /usr/local/libexec/sudo
+
+#
+# Sudo developer mode:
+# Set developer_mode true|false
+#
+# Allow loading of plugins that are owned by non-root or are writable
+# by "group" or "other". Should only be used during plugin development.
+Set developer_mode true
+
+#
+# Core dumps:
+# Set disable_coredump true|false
+#
+# By default, sudo disables core dumps while it is executing (they
+# are re-enabled for the command that is run).
+# To aid in debugging sudo problems, you may wish to enable core
+# dumps by setting "disable_coredump" to false.
+#
+Set disable_coredump false
+
+#
+# User groups:
+# Set group_source static|dynamic|adaptive
+#
+# Sudo passes the user's group list to the policy plugin.
+# If the user is a member of the maximum number of groups (usually 16),
+# sudo will query the group database directly to be sure to include
+# the full list of groups.
+#
+# On some systems, this can be expensive so the behavior is configurable.
+# The "group_source" setting has three possible values:
+# static - use the user's list of groups returned by the kernel.
+# dynamic - query the group database to find the list of groups.
+# adaptive - if user is in less than the maximum number of groups.
+# use the kernel list, else query the group database.
+#
+Set group_source static
+
+#
+# Sudo interface probing:
+# Set probe_interfaces true|false
+#
+# By default, sudo will probe the system's network interfaces and
+# pass the IP address of each enabled interface to the policy plugin.
+# On systems with a large number of virtual interfaces this may take
+# a noticeable amount of time.
+#
+Set probe_interfaces false
+
+#
+# Sudo debug files:
+# Debug program /path/to/debug_log subsystem@priority[,subsyste@priority]
+#
+# Sudo and related programs support logging debug information to a file.
+# The program is typically sudo, sudoers.so, sudoreplay or visudo.
+#
+# Subsystems vary based on the program; "all" matches all subsystems.
+# Priority may be crit, err, warn, notice, diag, info, trace or debug.
+# Multiple subsystem@priority may be specified, separated by a comma.
+#
+Debug sudo /var/log/sudo_debug all@debug
+Debug sudoers.so /var/log/sudoers_debug all@debug
diff --git a/lib/util/regress/corpus/sudo_conf/sudo.conf.3 b/lib/util/regress/corpus/sudo_conf/sudo.conf.3
new file mode 100644
index 000000000..52f9c8500
--- /dev/null
+++ b/lib/util/regress/corpus/sudo_conf/sudo.conf.3
@@ -0,0 +1,134 @@
+#
+# Default /etc/sudo.conf file
+#
+# Sudo plugins:
+# Plugin plugin_name plugin_path plugin_options ...
+#
+# The plugin_path is relative to /usr/local/libexec/sudo unless
+# fully qualified.
+# The plugin_name corresponds to a global symbol in the plugin
+# that contains the plugin interface structure.
+# The plugin_options are optional.
+#
+# The sudoers plugin is used by default if no Plugin lines are present.
+Plugin sudoers_policy sudoers.so
+Plugin sudoers_io sudoers.so
+Plugin sudoers_audit sudoers.so
+
+#
+# Sudo askpass:
+# Path askpass /path/to/askpass
+#
+# An askpass helper program may be specified to provide a graphical
+# password prompt for "sudo -A" support. Sudo does not ship with its
+# own askpass program but can use the OpenSSH askpass.
+#
+# Use the OpenSSH askpass
+Path askpass /usr/X11R6/bin/ssh-askpass
+#
+# Use the Gnome OpenSSH askpass
+Path askpass /usr/libexec/openssh/gnome-ssh-askpass
+
+#
+# Sudo device search path:
+# Path devsearch /dev/path1:/dev/path2:/dev
+#
+# A colon-separated list of paths to check when searching for a user's
+# terminal device.
+#
+Path devsearch /dev/pts:/dev/vt:/dev/term:/dev/zcons:/dev/pty:/dev
+
+#
+# Sudo noexec:
+# Path noexec /path/to/sudo_noexec.so
+#
+# Path to a shared library containing replacements for the execv(),
+# execve() and fexecve() library functions that just return an error.
+# This is used to implement the "noexec" functionality on systems that
+# support LD_PRELOAD or its equivalent.
+#
+# The compiled-in value is usually sufficient and should only be changed
+# if you rename or move the sudo_noexec.so file.
+#
+Path noexec /usr/local/libexec/sudo/sudo_noexec.so
+
+#
+# Sudo plugin directory:
+# Path plugin_dir /path/to/plugins
+#
+# The default directory to use when searching for plugins that are
+# specified without a fully qualified path name.
+#
+Path plugin_dir /usr/local/libexec/sudo
+
+#
+# Path to the sesh binary for SELinux support
+#
+Path sesh /usr/local/libexec/sudo/sesh
+
+#
+# Sudo developer mode:
+# Set developer_mode true|false
+#
+# Allow loading of plugins that are owned by non-root or are writable
+# by "group" or "other". Should only be used during plugin development.
+Set developer_mode true
+
+#
+# Core dumps:
+# Set disable_coredump true|false
+#
+# By default, sudo disables core dumps while it is executing (they
+# are re-enabled for the command that is run).
+# To aid in debugging sudo problems, you may wish to enable core
+# dumps by setting "disable_coredump" to false.
+#
+Set disable_coredump true
+
+#
+# User groups:
+# Set group_source static|dynamic|adaptive
+#
+# Sudo passes the user's group list to the policy plugin.
+# If the user is a member of the maximum number of groups (usually 16),
+# sudo will query the group database directly to be sure to include
+# the full list of groups.
+#
+# On some systems, this can be expensive so the behavior is configurable.
+# The "group_source" setting has three possible values:
+# static - use the user's list of groups returned by the kernel.
+# dynamic - query the group database to find the list of groups.
+# adaptive - if user is in less than the maximum number of groups.
+# use the kernel list, else query the group database.
+#
+Set group_source dynamic
+
+#
+# Maximum number of groups to use
+#
+Set max_groups 8
+
+#
+# Sudo interface probing:
+# Set probe_interfaces true|false
+#
+# By default, sudo will probe the system's network interfaces and
+# pass the IP address of each enabled interface to the policy plugin.
+# On systems with a large number of virtual interfaces this may take
+# a noticeable amount of time.
+#
+Set probe_interfaces true
+
+#
+# Sudo debug files:
+# Debug program /path/to/debug_log subsystem@priority[,subsyste@priority]
+#
+# Sudo and related programs support logging debug information to a file.
+# The program is typically sudo, sudoers.so, sudoreplay or visudo.
+#
+# Subsystems vary based on the program; "all" matches all subsystems.
+# Priority may be crit, err, warn, notice, diag, info, trace or debug.
+# Multiple subsystem@priority may be specified, separated by a comma.
+#
+Debug sudo /var/log/sudo_debug all@debug
+Debug sudoers.so /var/log/sudoers_debug all@debug
diff --git a/lib/util/regress/fuzz/fuzz_sudo_conf.c b/lib/util/regress/fuzz/fuzz_sudo_conf.c
new file mode 100644
index 000000000..611938867
--- /dev/null
+++ b/lib/util/regress/fuzz/fuzz_sudo_conf.c
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+
+#include "sudo_compat.h"
+#include "sudo_conf.h"
+#include "sudo_debug.h"
+#include "sudo_util.h"
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ char tempfile[] = "/tmp/sudo_conf.XXXXXX";
+ size_t nwritten;
+ int fd;
+
+ setprogname("fuzz_sudo_conf");
+
+ /* sudo_conf_read() uses a conf file path, not an open file. */
+ fd = mkstemp(tempfile);
+ if (fd == -1)
+ return 0;
+ nwritten = write(fd, data, size);
+ if (nwritten != size) {
+ close(fd);
+ return 0;
+ }
+ close(fd);
+
+ /* sudo_conf_read() will re-init and free old data each time it runs. */
+ sudo_conf_clear_paths();
+ sudo_conf_read(tempfile, SUDO_CONF_ALL);
+
+ unlink(tempfile);
+
+ return 0;
+}
diff --git a/lib/util/regress/fuzz/fuzz_sudo_conf.dict b/lib/util/regress/fuzz/fuzz_sudo_conf.dict
new file mode 100644
index 000000000..fbe5cb3f0
--- /dev/null
+++ b/lib/util/regress/fuzz/fuzz_sudo_conf.dict
@@ -0,0 +1,19 @@
+# sudo.conf keywords
+"Debug"
+"Path"
+"Plugin"
+"Set"
+
+# Paths
+"askpass"
+"sesh"
+"noexec"
+"plugin_dir"
+"devsearch"
+
+# Variables
+"developer_mode"
+"disable_coredump"
+"group_source"
+"max_groups"
+"probe_interfaces"
diff --git a/lib/util/regress/getdelim/getdelim_test.c b/lib/util/regress/getdelim/getdelim_test.c
index 6a550bc3e..affd704cd 100644
--- a/lib/util/regress/getdelim/getdelim_test.c
+++ b/lib/util/regress/getdelim/getdelim_test.c
@@ -29,6 +29,7 @@
#else
# include "compat/stdbool.h"
#endif
+#include <limits.h>
#include <unistd.h>
#include "sudo_compat.h"
@@ -47,15 +48,13 @@ struct getdelim_test {
int delim;
};
-/*
- * TODO: test error case.
- * test realloc case (buf > LINE_MAX)
- */
+static char longstr[LINE_MAX * 2];
static struct getdelim_test test_data[] = {
{ "a\nb\nc\n", { "a\n", "b\n", "c\n", NULL }, '\n' },
{ "a\nb\nc", { "a\n", "b\n", "c", NULL }, '\n' },
{ "a\tb\tc\t", { "a\t", "b\t", "c\t", NULL }, '\t' },
{ "a\tb\tc", { "a\t", "b\t", "c", NULL }, '\t' },
+ { longstr, { longstr, NULL }, '\n' },
{ NULL, { NULL }, '\0' }
};
@@ -68,6 +67,11 @@ runtests(char **buf, size_t *buflen)
pid_t pid;
FILE *fp;
+ /* Exercise realloc case by injecting an entry > LINE_MAX. */
+ memset(longstr, 'A', sizeof(longstr) - 2);
+ longstr[sizeof(longstr) - 2] = '\n';
+ longstr[sizeof(longstr) - 1] = '\0';
+
for (i = 0; test_data[i].input != NULL; i++) {
if (socketpair(PF_UNIX, SOCK_STREAM, 0, sv) == -1)
sudo_fatal_nodebug("socketpair");
@@ -105,6 +109,7 @@ runtests(char **buf, size_t *buflen)
errors++;
}
}
+
/* test EOF */
ntests++;
alarm(30);
@@ -119,6 +124,25 @@ runtests(char **buf, size_t *buflen)
errors++;
}
}
+
+ /* test error by closing the underlying fd. */
+ clearerr(fp);
+ close(fileno(fp));
+ ntests++;
+ alarm(30);
+ if (getdelim(buf, buflen, test_data[i].delim, fp) != -1) {
+ sudo_warnx_nodebug("failed test #%d: expected error, got %s",
+ ntests, *buf);
+ errors++;
+ } else {
+ /* Use feof(3), not ferror(3) so we can detect out of memory. */
+ if (feof(fp)) {
+ sudo_warn_nodebug("failed test #%d: expected error, got EOF",
+ ntests);
+ errors++;
+ }
+ }
+
fclose(fp);
waitpid(pid, NULL, 0);
alarm(0);
diff --git a/lib/util/regress/progname/progname_test.c b/lib/util/regress/progname/progname_test.c
index 0ac539868..f6a9d48e3 100644
--- a/lib/util/regress/progname/progname_test.c
+++ b/lib/util/regress/progname/progname_test.c
@@ -37,12 +37,8 @@ main(int argc, char *argv[])
{
char *progbase = "progname_test";
- if (argc > 0) {
- if ((progbase = strrchr(argv[0], '/')) != NULL)
- progbase++;
- else
- progbase = argv[0];
- }
+ if (argc > 0)
+ progbase = sudo_basename(argv[0]);
initprogname(progbase);
/* Make sure getprogname() matches basename of argv[0]. */
diff --git a/lib/util/secure_path.c b/lib/util/secure_path.c
index 1d2c97d17..639425fbe 100644
--- a/lib/util/secure_path.c
+++ b/lib/util/secure_path.c
@@ -41,7 +41,7 @@ sudo_secure_path(const char *path, unsigned int type, uid_t uid, gid_t gid, stru
debug_decl(sudo_secure_path, SUDO_DEBUG_UTIL);
if (path != NULL && stat(path, &sb) == 0) {
- if ((sb.st_mode & _S_IFMT) != type) {
+ if ((sb.st_mode & S_IFMT) != type) {
ret = SUDO_PATH_BAD_TYPE;
} else if (uid != (uid_t)-1 && sb.st_uid != uid) {
ret = SUDO_PATH_WRONG_OWNER;
@@ -66,7 +66,7 @@ sudo_secure_path(const char *path, unsigned int type, uid_t uid, gid_t gid, stru
int
sudo_secure_file_v1(const char *path, uid_t uid, gid_t gid, struct stat *sbp)
{
- return sudo_secure_path(path, _S_IFREG, uid, gid, sbp);
+ return sudo_secure_path(path, S_IFREG, uid, gid, sbp);
}
/*
@@ -75,5 +75,5 @@ sudo_secure_file_v1(const char *path, uid_t uid, gid_t gid, struct stat *sbp)
int
sudo_secure_dir_v1(const char *path, uid_t uid, gid_t gid, struct stat *sbp)
{
- return sudo_secure_path(path, _S_IFDIR, uid, gid, sbp);
+ return sudo_secure_path(path, S_IFDIR, uid, gid, sbp);
}
diff --git a/lib/util/sudo_conf.c b/lib/util/sudo_conf.c
index 388042362..a459f0346 100644
--- a/lib/util/sudo_conf.c
+++ b/lib/util/sudo_conf.c
@@ -117,12 +117,23 @@ static struct sudo_conf_table sudo_conf_var_table[] = {
{ NULL } \
}
+/*
+ * getgroups(2) on macOS is flakey with respect to non-local groups.
+ * Even with _DARWIN_UNLIMITED_GETGROUPS set we may not get all groups./
+ * See bug #946 for details.
+ */
+#ifdef __APPLE__
+# define GROUP_SOURCE_DEFAULT GROUP_SOURCE_DYNAMIC
+#else
+# define GROUP_SOURCE_DEFAULT GROUP_SOURCE_ADAPTIVE
+#endif
+
#define SUDO_CONF_SETTINGS_INITIALIZER { \
false, /* updated */ \
false, /* developer_mode */ \
true, /* disable_coredump */ \
true, /* probe_interfaces */ \
- GROUP_SOURCE_ADAPTIVE, /* group_source */ \
+ GROUP_SOURCE_DEFAULT, /* group_source */ \
-1 /* max_groups */ \
}
@@ -431,7 +442,7 @@ set_var_max_groups(const char *strval, const char *conf_file,
int max_groups;
debug_decl(set_var_max_groups, SUDO_DEBUG_UTIL);
- max_groups = sudo_strtonum(strval, 1, INT_MAX, NULL);
+ max_groups = sudo_strtonum(strval, 1, 1024, NULL);
if (max_groups <= 0) {
sudo_warnx(U_("invalid max groups \"%s\" in %s, line %u"), strval,
conf_file, lineno);
@@ -516,33 +527,25 @@ struct sudo_conf_debug_file_list *
sudo_conf_debug_files_v1(const char *progname)
{
struct sudo_conf_debug *debug_spec;
- size_t prognamelen, progbaselen;
- const char *progbase = progname;
+ const char *progbase;
debug_decl(sudo_conf_debug_files, SUDO_DEBUG_UTIL);
/* Determine basename if program is fully qualified (like for plugins). */
- prognamelen = progbaselen = strlen(progname);
- if (*progname == '/') {
- progbase = strrchr(progname, '/');
- progbaselen = strlen(++progbase);
- }
+ progbase = progname[0] == '/' ? sudo_basename(progname) : progname;
+
/* Convert sudoedit -> sudo. */
- if (progbaselen > 4 && strcmp(progbase + 4, "edit") == 0) {
- progbaselen -= 4;
- }
+ if (strcmp(progbase, "sudoedit") == 0)
+ progbase = "sudo";
+
TAILQ_FOREACH(debug_spec, &sudo_conf_data.debugging, entries) {
const char *prog = progbase;
- size_t len = progbaselen;
if (debug_spec->progname[0] == '/') {
/* Match fully-qualified name, if possible. */
prog = progname;
- len = prognamelen;
}
- if (strncmp(debug_spec->progname, prog, len) == 0 &&
- debug_spec->progname[len] == '\0') {
+ if (strcmp(debug_spec->progname, prog) == 0)
debug_return_ptr(&debug_spec->debug_files);
- }
}
debug_return_ptr(NULL);
}
diff --git a/lib/util/sudo_debug.c b/lib/util/sudo_debug.c
index 50c18450f..703fbea3b 100644
--- a/lib/util/sudo_debug.c
+++ b/lib/util/sudo_debug.c
@@ -45,6 +45,7 @@
#include "sudo_plugin.h"
#include "sudo_util.h"
+#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
/*
* The debug priorities and subsystems are currently hard-coded.
* In the future we might consider allowing plugins to register their
@@ -960,3 +961,167 @@ sudo_debug_get_fds_v1(unsigned char **fds)
*fds = sudo_debug_fds;
return sudo_debug_max_fd;
}
+#else /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */
+int
+sudo_debug_register_v1(const char *program, const char *const subsystems[],
+ unsigned int ids[], struct sudo_conf_debug_file_list *debug_files)
+{
+ return SUDO_DEBUG_INSTANCE_INITIALIZER;
+}
+
+int
+sudo_debug_deregister_v1(int idx)
+{
+ return -1;
+}
+
+int
+sudo_debug_parse_flags_v1(struct sudo_conf_debug_file_list *debug_files,
+ const char *entry)
+{
+ return 0;
+}
+
+int
+sudo_debug_get_instance_v1(const char *program)
+{
+ return SUDO_DEBUG_INSTANCE_INITIALIZER;
+}
+
+pid_t
+sudo_debug_fork_v1(void)
+{
+ return fork();
+}
+
+void
+sudo_debug_enter_v1(const char *func, const char *file, int line,
+ int subsys)
+{
+}
+
+void
+sudo_debug_exit_v1(const char *func, const char *file, int line,
+ int subsys)
+{
+}
+
+void
+sudo_debug_exit_int_v1(const char *func, const char *file, int line,
+ int subsys, int ret)
+{
+}
+
+void
+sudo_debug_exit_long_v1(const char *func, const char *file, int line,
+ int subsys, long ret)
+{
+}
+
+void
+sudo_debug_exit_id_t_v1(const char *func, const char *file, int line,
+ int subsys, id_t ret)
+{
+}
+
+void
+sudo_debug_exit_size_t_v1(const char *func, const char *file, int line,
+ int subsys, size_t ret)
+{
+}
+
+void
+sudo_debug_exit_ssize_t_v1(const char *func, const char *file, int line,
+ int subsys, ssize_t ret)
+{
+}
+
+void
+sudo_debug_exit_time_t_v1(const char *func, const char *file, int line,
+ int subsys, time_t ret)
+{
+}
+
+void
+sudo_debug_exit_bool_v1(const char *func, const char *file, int line,
+ int subsys, bool ret)
+{
+}
+
+void
+sudo_debug_exit_str_v1(const char *func, const char *file, int line,
+ int subsys, const char *ret)
+{
+}
+
+void
+sudo_debug_exit_str_masked_v1(const char *func, const char *file, int line,
+ int subsys, const char *ret)
+{
+}
+
+void
+sudo_debug_exit_ptr_v1(const char *func, const char *file, int line,
+ int subsys, const void *ret)
+{
+}
+
+void
+sudo_debug_write2_v1(int fd, const char *func, const char *file, int lineno,
+ const char *str, int len, int errnum)
+{
+}
+
+bool
+sudo_debug_needed_v1(int level)
+{
+ return false;
+}
+
+void
+sudo_debug_vprintf2_v1(const char *func, const char *file, int lineno, int level,
+ const char *fmt, va_list ap)
+{
+}
+
+#ifdef NO_VARIADIC_MACROS
+void
+sudo_debug_printf_nvm_v1(int pri, const char *fmt, ...)
+{
+}
+#endif /* NO_VARIADIC_MACROS */
+
+void
+sudo_debug_printf2_v1(const char *func, const char *file, int lineno, int level,
+ const char *fmt, ...)
+{
+}
+
+void
+sudo_debug_execve2_v1(int level, const char *path, char *const argv[], char *const envp[])
+{
+}
+
+int
+sudo_debug_get_active_instance_v1(void)
+{
+ return SUDO_DEBUG_INSTANCE_INITIALIZER;
+}
+
+int
+sudo_debug_set_active_instance_v1(int idx)
+{
+ return SUDO_DEBUG_INSTANCE_INITIALIZER;
+}
+
+void
+sudo_debug_update_fd_v1(int ofd, int nfd)
+{
+}
+
+int
+sudo_debug_get_fds_v1(unsigned char **fds)
+{
+ return -1;
+}
+#endif /* FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */
diff --git a/lib/util/sudo_dso.c b/lib/util/sudo_dso.c
index 6068e366e..0c8a08ef2 100644
--- a/lib/util/sudo_dso.c
+++ b/lib/util/sudo_dso.c
@@ -160,11 +160,24 @@ sudo_dso_strerror_v1(void)
# define RTLD_GLOBAL 0
# endif
+/* Default member names for AIX when dlopen()ing an ar (.a) file. */
+# ifdef RTLD_MEMBER
+# ifdef __LP64__
+# define SUDO_DSO_MEMBER "shr_64.o"
+# else
+# define SUDO_DSO_MEMBER "shr.o"
+# endif
+# endif
+
void *
sudo_dso_load_v1(const char *path, int mode)
{
struct sudo_preload_table *pt;
int flags = 0;
+ void *ret;
+#ifdef RTLD_MEMBER
+ char *cp;
+#endif
/* Check prelinked symbols first. */
if (preload_table != NULL) {
@@ -176,15 +189,38 @@ sudo_dso_load_v1(const char *path, int mode)
/* Map SUDO_DSO_* -> RTLD_* */
if (ISSET(mode, SUDO_DSO_LAZY))
- flags |= RTLD_LAZY;
+ SET(flags, RTLD_LAZY);
if (ISSET(mode, SUDO_DSO_NOW))
- flags |= RTLD_NOW;
+ SET(flags, RTLD_NOW);
if (ISSET(mode, SUDO_DSO_GLOBAL))
- flags |= RTLD_GLOBAL;
+ SET(flags, RTLD_GLOBAL);
if (ISSET(mode, SUDO_DSO_LOCAL))
- flags |= RTLD_LOCAL;
+ SET(flags, RTLD_LOCAL);
+
+#ifdef RTLD_MEMBER
+ /* Check for AIX path(module) syntax and add RTLD_MEMBER for a module. */
+ cp = strrchr(path, '(');
+ if (cp != NULL) {
+ size_t len = strlen(cp);
+ if (len > 2 && cp[len - 1] == '\0')
+ SET(flags, RTLD_MEMBER);
+ }
+#endif /* RTLD_MEMBER */
+ ret = dlopen(path, flags);
+#ifdef RTLD_MEMBER
+ /*
+ * If we try to dlopen() an AIX .a file without an explicit member
+ * it will fail with ENOEXEC. Try again using the default member.
+ */
+ if (ret == NULL && !ISSET(flags, RTLD_MEMBER) && errno == ENOEXEC) {
+ if (asprintf(&cp, "%s(%s)", path, SUDO_DSO_MEMBER) != -1) {
+ ret = dlopen(cp, flags|RTLD_MEMBER);
+ free(cp);
+ }
+ }
+#endif /* RTLD_MEMBER */
- return dlopen(path, flags);
+ return ret;
}
int
diff --git a/lib/util/util.exp.in b/lib/util/util.exp.in
index b0b56f09b..583e6dfae 100644
--- a/lib/util/util.exp.in
+++ b/lib/util/util.exp.in
@@ -1,5 +1,6 @@
@COMPAT_EXP@initprogname
initprogname2
+sudo_basename_v1
sudo_conf_askpass_path_v1
sudo_conf_clear_paths_v1
sudo_conf_debug_files_v1
diff --git a/lib/zlib/Makefile.in b/lib/zlib/Makefile.in
index 558ba947c..d697c0751 100644
--- a/lib/zlib/Makefile.in
+++ b/lib/zlib/Makefile.in
@@ -146,6 +146,8 @@ install-doc:
install-plugin:
+install-fuzzer:
+
uninstall:
$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(libexecdir)/sudo/libsudo_z.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -159,6 +161,8 @@ pvs-log-files:
pvs-studio:
+fuzz:
+
check:
clean:
@@ -177,6 +181,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
adler32.lo: $(srcdir)/adler32.c $(srcdir)/zlib.h $(srcdir)/zutil.h ./zconf.h
$(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/adler32.c
diff --git a/logsrvd/Makefile.in b/logsrvd/Makefile.in
index 2dcde18fb..f0ab016ab 100644
--- a/logsrvd/Makefile.in
+++ b/logsrvd/Makefile.in
@@ -44,7 +44,6 @@ INSTALL_BACKUP = @INSTALL_BACKUP@
# Libraries
LT_LIBS = $(top_builddir)/lib/iolog/libsudo_iolog.la \
- $(top_builddir)/lib/eventlog/libsudo_eventlog.la \
$(top_builddir)/lib/logsrv/liblogsrv.la
LIBS = $(LT_LIBS) @LIBTLS@
@@ -100,6 +99,14 @@ datarootdir = @datarootdir@
localedir = @localedir@
localstatedir = @localstatedir@
+# Fuzzers
+LIBFUZZSTUB = $(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la
+LIB_FUZZING_ENGINE = @FUZZ_ENGINE@
+FUZZ_PROGS = fuzz_logsrvd_conf
+FUZZ_SEED_CORPUS = ${FUZZ_PROGS:=_seed_corpus.zip}
+FUZZ_LIBS = $(LIBS) $(LIB_FUZZING_ENGINE)
+FUZZ_LDFLAGS = $(LDFLAGS)
+
# User and group IDs the installed files should be "owned" by
install_uid = 0
install_gid = 0
@@ -122,6 +129,10 @@ LIBOBJDIR = $(top_builddir)/@ac_config_libobj_dir@/
VERSION = @PACKAGE_VERSION@
+FUZZ_LOGSRVD_CONF_OBJS = fuzz_logsrvd_conf.o logsrvd_conf.o
+
+FUZZ_LOGSRVD_CONF_CORPUS = $(srcdir)/regress/corpus/logsrvd_conf/logsrvd.conf.*
+
all: $(PROGS)
depend:
@@ -152,6 +163,18 @@ sudo_logsrvd: $(LOGSRVD_OBJS) $(LT_LIBS)
sudo_sendlog: $(SENDLOG_OBJS) $(LT_LIBS)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(SENDLOG_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
+fuzz_logsrvd_conf: $(FUZZ_LOGSRVD_CONF_OBJS) $(LIBFUZZSTUB) $(LT_LIBS)
+ $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(FUZZ_LOGSRVD_CONF_OBJS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS)
+
+fuzz_logsrvd_conf_seed_corpus.zip:
+ tdir=fuzz_logsrvd_conf.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_LOGSRVD_CONF_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
pre-install:
install: install-binaries
@@ -169,6 +192,13 @@ install-includes:
install-plugin:
+install-fuzzer: $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS)
+ @if test X"$(FUZZ_DESTDIR)" = X""; then \
+ echo "must set FUZZ_DESTDIR for install-fuzzer target"; \
+ else \
+ cp $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS) $(FUZZ_DESTDIR); \
+ fi
+
uninstall:
-rm -f $(DESTDIR)$(sbindir)/sudo_logsrvd \
$(DESTDIR)$(sbindir)/sudo_sendlog
@@ -187,10 +217,25 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
+fuzz: $(FUZZ_PROGS)
+ @if test X"$(cross_compiling)" != X"yes"; then \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
+ unset LANG || LANG=; \
+ MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
+ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
+ echo "fuzz_logsrvd_conf: verifying corpus (expect 3 errors)"; \
+ ./fuzz_logsrvd_conf $(FUZZ_LOGSRVD_CONF_CORPUS); \
+ fi
+
check:
clean:
- -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f $(PROGS) *.lo *.o *.la
+ -$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f $(PROGS) $(FUZZ_PROGS) \
+ *.lo *.o *.la
-rm -f *.i *.plog stamp-* core *.core core.*
mostlyclean: clean
@@ -205,7 +250,29 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean $(FUZZ_SEED_CORPUS)
+
# Autogenerated dependencies, do not modify
+fuzz_logsrvd_conf.o: $(srcdir)/regress/fuzz/fuzz_logsrvd_conf.c \
+ $(incdir)/compat/stdbool.h $(incdir)/log_server.pb-c.h \
+ $(incdir)/protobuf-c/protobuf-c.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/logsrv_util.h $(srcdir)/logsrvd.h \
+ $(top_builddir)/config.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_logsrvd_conf.c
+fuzz_logsrvd_conf.i: $(srcdir)/regress/fuzz/fuzz_logsrvd_conf.c \
+ $(incdir)/compat/stdbool.h $(incdir)/log_server.pb-c.h \
+ $(incdir)/protobuf-c/protobuf-c.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_iolog.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/logsrv_util.h $(srcdir)/logsrvd.h \
+ $(top_builddir)/config.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_logsrvd_conf.plog: fuzz_logsrvd_conf.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_logsrvd_conf.c --i-file $< --output-file $@
iolog_writer.o: $(srcdir)/iolog_writer.c $(incdir)/compat/stdbool.h \
$(incdir)/log_server.pb-c.h $(incdir)/protobuf-c/protobuf-c.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
diff --git a/logsrvd/iolog_writer.c b/logsrvd/iolog_writer.c
index 6f620b4ca..beaf7e976 100644
--- a/logsrvd/iolog_writer.c
+++ b/logsrvd/iolog_writer.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2019-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2019-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -110,7 +110,8 @@ bad:
* Returns true on success and false on failure.
*/
struct eventlog *
-evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen)
+evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen,
+ struct connection_closure *closure)
{
struct eventlog *evlog;
size_t idx;
@@ -124,6 +125,9 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen)
}
memset(evlog, 0, sizeof(*evlog));
+ /* Client/peer IP address. */
+ evlog->peeraddr = closure->ipaddr;
+
/* Submit time. */
if (submit_time != NULL) {
evlog->submit_time.tv_sec = submit_time->tv_sec;
@@ -727,6 +731,29 @@ iolog_copy(struct iolog_file *src, struct iolog_file *dst, off_t remainder,
debug_return_bool(true);
}
+/*
+ * Like rename(2) but changes UID as needed.
+ */
+static bool
+iolog_rename(const char *from, const char *to)
+{
+ bool ok, uid_changed = false;
+ debug_decl(iolog_rename, SUDO_DEBUG_UTIL);
+
+ ok = rename(from, to) == 0;
+ if (!ok && errno == EACCES) {
+ uid_changed = iolog_swapids(false);
+ if (uid_changed)
+ ok = rename(from, to) == 0;
+ }
+
+ if (uid_changed) {
+ if (!iolog_swapids(true))
+ ok = false;
+ }
+ debug_return_bool(ok);
+}
+
/* Compressed logs don't support random access, need to rewrite them. */
static bool
iolog_rewrite(const struct timespec *target, struct connection_closure *closure)
diff --git a/logsrvd/logsrvd.c b/logsrvd/logsrvd.c
index 66b84c296..d5bd03e1d 100644
--- a/logsrvd/logsrvd.c
+++ b/logsrvd/logsrvd.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2019-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2019-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -111,7 +111,7 @@ connection_closure_free(struct connection_closure *closure)
TAILQ_REMOVE(&connections, closure, entries);
#if defined(HAVE_OPENSSL)
- if (closure->tls) {
+ if (closure->ssl != NULL) {
SSL_shutdown(closure->ssl);
SSL_free(closure->ssl);
}
@@ -185,7 +185,7 @@ done:
}
static bool
-fmt_hello_message(struct connection_buffer *buf, bool tls)
+fmt_hello_message(struct connection_buffer *buf)
{
ServerMessage msg = SERVER_MESSAGE__INIT;
ServerHello hello = SERVER_HELLO__INIT;
@@ -306,7 +306,7 @@ handle_accept(AcceptMessage *msg, struct connection_closure *closure)
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: received AcceptMessage", __func__);
closure->evlog = evlog_new(msg->submit_time, msg->info_msgs,
- msg->n_info_msgs);
+ msg->n_info_msgs, closure);
if (closure->evlog == NULL) {
closure->errstr = _("error parsing AcceptMessage");
debug_return_bool(false);
@@ -369,7 +369,7 @@ handle_reject(RejectMessage *msg, struct connection_closure *closure)
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: received RejectMessage", __func__);
closure->evlog = evlog_new(msg->submit_time, msg->info_msgs,
- msg->n_info_msgs);
+ msg->n_info_msgs, closure);
if (closure->evlog == NULL) {
closure->errstr = _("error parsing RejectMessage");
debug_return_bool(false);
@@ -493,7 +493,8 @@ handle_alert(AlertMessage *msg, struct connection_closure *closure)
sudo_debug_printf(SUDO_DEBUG_INFO, "%s: received AlertMessage", __func__);
if (msg->info_msgs != NULL && msg->n_info_msgs != 0) {
- closure->evlog = evlog_new(NULL, msg->info_msgs, msg->n_info_msgs);
+ closure->evlog = evlog_new(NULL, msg->info_msgs,
+ msg->n_info_msgs, closure);
if (closure->evlog == NULL) {
closure->errstr = _("error parsing AlertMessage");
debug_return_bool(false);
@@ -809,7 +810,7 @@ server_msg_cb(int fd, int what, void *v)
__func__, buf->len - buf->off);
#if defined(HAVE_OPENSSL)
- if (closure->tls) {
+ if (closure->ssl != NULL) {
nwritten = SSL_write(closure->ssl, buf->data + buf->off,
buf->len - buf->off);
if (nwritten <= 0) {
@@ -896,7 +897,7 @@ client_msg_cb(int fd, int what, void *v)
}
#if defined(HAVE_OPENSSL)
- if (closure->tls) {
+ if (closure->ssl != NULL) {
nread = SSL_read(closure->ssl, buf->data + buf->len, buf->size);
if (nread <= 0) {
int err = SSL_get_error(closure->ssl, nread);
@@ -1073,7 +1074,7 @@ start_protocol(struct connection_closure *closure)
const struct timespec *timeout = logsrvd_conf_get_sock_timeout();
debug_decl(start_protocol, SUDO_DEBUG_UTIL);
- if (!fmt_hello_message(&closure->write_buf, closure->tls))
+ if (!fmt_hello_message(&closure->write_buf))
debug_return_bool(false);
if (sudo_ev_add(closure->evbase, closure->write_ev, timeout, false) == -1)
@@ -1504,7 +1505,6 @@ connection_closure_alloc(int sock, bool tls, struct sudo_event_base *base)
closure->iolog_dir_fd = -1;
closure->sock = sock;
- closure->tls = tls;
closure->evbase = base;
TAILQ_INSERT_TAIL(&connections, closure, entries);
@@ -1930,15 +1930,20 @@ usage(bool fatal)
static void
help(void)
{
- (void)printf(_("%s - send sudo I/O log to remote server\n\n"),
- getprogname());
+ printf("%s - %s\n\n", getprogname(), _("sudo log server"));
usage(false);
- (void)puts(_("\nOptions:\n"
- " -f, --file path to configuration file\n"
- " -h --help display help message and exit\n"
- " -n, --no-fork do not fork, run in the foreground\n"
- " -R, --random-drop percent chance connections will drop\n"
- " -V, --version display version information and exit\n"));
+ printf("\n%s\n", _("Options:"));
+ printf(" -f, --file %s\n",
+ _("path to configuration file"));
+ printf(" -h, --help %s\n",
+ _("display help message and exit"));
+ printf(" -n, --no-fork %s\n",
+ _("do not fork, run in the foreground"));
+ printf(" -R, --random-drop %s\n",
+ _("percent chance connections will drop"));
+ printf(" -V, --version %s\n",
+ _("display version information and exit"));
+ putchar('\n');
exit(EXIT_SUCCESS);
}
diff --git a/logsrvd/logsrvd.h b/logsrvd/logsrvd.h
index 5c8a8b173..d2b29b447 100644
--- a/logsrvd/logsrvd.h
+++ b/logsrvd/logsrvd.h
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2019-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2019-2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -137,7 +137,7 @@ struct logsrvd_tls_runtime {
#endif
/* iolog_writer.c */
-struct eventlog *evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen);
+struct eventlog *evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, struct connection_closure *closure);
bool iolog_init(AcceptMessage *msg, struct connection_closure *closure);
bool iolog_restart(RestartMessage *msg, struct connection_closure *closure);
int store_iobuf(int iofd, IoBuffer *msg, struct connection_closure *closure);
diff --git a/logsrvd/logsrvd_conf.c b/logsrvd/logsrvd_conf.c
index d686ea631..e66189cc1 100644
--- a/logsrvd/logsrvd_conf.c
+++ b/logsrvd/logsrvd_conf.c
@@ -37,6 +37,7 @@
#include <stdlib.h>
#include <string.h>
#include <syslog.h>
+#include <time.h>
#include <unistd.h>
#include <grp.h>
#include <pwd.h>
@@ -82,7 +83,6 @@ static struct logsrvd_config {
bool tcp_keepalive;
char *pid_file;
#if defined(HAVE_OPENSSL)
- bool tls;
struct logsrvd_tls_config tls_config;
struct logsrvd_tls_runtime tls_runtime;
#endif
diff --git a/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.1 b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.1
new file mode 100644
index 000000000..2bcf4424a
--- /dev/null
+++ b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.1
@@ -0,0 +1,159 @@
+#
+# sudo logsrv configuration
+#
+
+[server]
+# The host name or IP address and port to listen on with an optional TLS
+# flag. If no port is specified, port 30343 will be used for plaintext
+# connections and port 30344 will be used to TLS connections.
+# The following forms are accepted:
+# listen_address = hostname(tls)
+# listen_address = hostname:port(tls)
+# listen_address = IPv4_address(tls)
+# listen_address = IPv4_address:port(tls)
+# listen_address = [IPv6_address](tls)
+# listen_address = [IPv6_address]:port(tls)
+#
+# The (tls) suffix should be omitted for plaintext connections.
+#
+# Multiple listen_address settings may be specified.
+# The default is to listen on all addresses.
+#listen_address = *:30343
+#listen_address = *:30344(tls)
+
+# The file containing the ID of the running sudo_logsrvd process.
+#pid_file = /var/run/sudo/sudo_logsrvd.pid
+
+# If set, enable the SO_KEEPALIVE socket option on the connected socket.
+#tcp_keepalive = true
+
+# The amount of time, in seconds, the server will wait for the client to
+# respond. A value of 0 will disable the timeout. The default value is 30.
+#timeout = 30
+
+# If set, server certificate will be verified at server startup and
+# also connecting clients will perform server authentication by
+# verifying the server's certificate and identity.
+#tls_verify = true
+
+# Whether to verify client certificates for TLS connections.
+# By default client certs are not checked.
+#tls_checkpeer = false
+
+# Path to the certificate authority bundle file in PEM format.
+# Required if 'tls_verify' or 'tls_checkpeer' is set.
+#tls_cacert = /etc/ssl/sudo/cacert.pem
+
+# Path to the server's certificate file in PEM format.
+# Required for TLS connections.
+#tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem
+
+# Path to the server's private key file in PEM format.
+# Required for TLS connections.
+#tls_key = /etc/ssl/sudo/private/logsrvd_key.pem
+
+# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
+# NOTE that this setting is only effective if the negotiated protocol
+# is TLS version 1.2.
+# The default cipher list is HIGH:!aNULL.
+#tls_ciphers_v12 = HIGH:!aNULL
+
+# TLS cipher list if the negotiated protocol is TLS version 1.3.
+# The default cipher list is TLS_AES_256_GCM_SHA384.
+#tls_ciphers_v13 = TLS_AES_256_GCM_SHA384
+
+# Path to the Diffie-Hellman parameter file in PEM format.
+# If not set, the server will use the OpenSSL defaults.
+#tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem
+
+[iolog]
+# The top-level directory to use when constructing the path name for the
+# I/O log directory. The session sequence number, if any, is stored here.
+#iolog_dir = /var/log/sudo-io
+
+# The path name, relative to iolog_dir, in which to store I/O logs.
+# Note that iolog_file may contain directory components.
+#iolog_file = %{seq}
+
+# If set, I/O logs will be compressed using zlib. Enabling compression can
+# make it harder to view the logs in real-time as the program is executing.
+#iolog_compress = false
+
+# If set, I/O log data is flushed to disk after each write instead of
+# buffering it. This makes it possible to view the logs in real-time
+# as the program is executing but reduces the effectiveness of compression.
+#iolog_flush = true
+
+# The group to use when creating new I/O log files and directories.
+# If iolog_group is not set, the primary group-ID of the user specified
+# by iolog_user is used. If neither iolog_group nor iolog_user
+# are set, I/O log files and directories are created with group-ID 0.
+#iolog_group = wheel
+
+# The user to use when setting the user-ID and group-ID of new I/O
+# log files and directories. If iolog_group is set, it will be used
+# instead of the user's primary group-ID. By default, I/O log files
+# and directories are created with user and group-ID 0.
+#iolog_user = root
+
+# The file mode to use when creating I/O log files. The file permissions
+# will always include the owner read and write bits, even if they are
+# not present in the specified mode. When creating I/O log directories,
+# search (execute) bits are added to match the read and write bits
+# specified by iolog_mode.
+#iolog_mode = 0600
+
+# The maximum sequence number that will be substituted for the "%{seq}"
+# escape in the I/O log file. While the value substituted for "%{seq}"
+# is in base 36, maxseq itself should be expressed in decimal. Values
+# larger than 2176782336 (which corresponds to the base 36 sequence
+# number "ZZZZZZ") will be silently truncated to 2176782336.
+#maxseq = 2176782336
+
+[eventlog]
+# Where to log accept, reject and alert events.
+# Accepted values are syslog, logfile, or none.
+# Defaults to syslog
+#log_type = syslog
+
+# Event log format.
+# Supported log formats are "sudo" and "json"
+# Defaults to sudo
+#log_format = sudo
+
+[syslog]
+# The maximum length of a syslog payload.
+# On many systems, syslog(3) has a relatively small log buffer.
+# IETF RFC 5424 states that syslog servers must support messages
+# of at least 480 bytes and should support messages up to 2048 bytes.
+# Messages larger than this value will be split into multiple messages.
+#maxlen = 960
+
+# The syslog facility to use for event log messages.
+# The following syslog facilities are supported: authpriv (if your OS
+# supports it), auth, daemon, user, local0, local1, local2, local3,
+# local4, local5, local6, and local7.
+#facility = authpriv
+
+# Syslog priority to use for event log accept messages, when the command
+# is allowed by the security policy. The following syslog priorities are
+# supported: alert, crit, debug, emerg, err, info, notice, warning, none.
+#accept_priority = notice
+
+# Syslog priority to use for event log reject messages, when the command
+# is not allowed by the security policy.
+#reject_priority = alert
+
+# Syslog priority to use for event log alert messages reported by the
+# client.
+#alert_priority = alert
+
+[logfile]
+# The path to the file-based event log.
+# This path must be fully-qualified and start with a '/' character.
+#path = /var/log/sudo
+
+# The format string used when formatting the date and time for
+# file-based event logs. Formatting is performed via strftime(3) so
+# any format string supported by that function is allowed.
+#time_format = %h %e %T
diff --git a/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.2 b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.2
new file mode 100644
index 000000000..4342ccc05
--- /dev/null
+++ b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.2
@@ -0,0 +1,159 @@
+#
+# sudo logsrv configuration
+#
+
+[server]
+# The host name or IP address and port to listen on with an optional TLS
+# flag. If no port is specified, port 30343 will be used for plaintext
+# connections and port 30344 will be used to TLS connections.
+# The following forms are accepted:
+# listen_address = hostname(tls)
+# listen_address = hostname:port(tls)
+# listen_address = IPv4_address(tls)
+# listen_address = IPv4_address:port(tls)
+# listen_address = [IPv6_address](tls)
+# listen_address = [IPv6_address]:port(tls)
+#
+# The (tls) suffix should be omitted for plaintext connections.
+#
+# Multiple listen_address settings may be specified.
+# The default is to listen on all addresses.
+#listen_address = *:30343
+listen_address = *:30344(tls)
+
+# The file containing the ID of the running sudo_logsrvd process.
+pid_file = /var/run/sudo/sudo_logsrvd.pid
+
+# If set, enable the SO_KEEPALIVE socket option on the connected socket.
+tcp_keepalive = true
+
+# The amount of time, in seconds, the server will wait for the client to
+# respond. A value of 0 will disable the timeout. The default value is 30.
+timeout = 30
+
+# If set, server certificate will be verified at server startup and
+# also connecting clients will perform server authentication by
+# verifying the server's certificate and identity.
+tls_verify = true
+
+# Whether to verify client certificates for TLS connections.
+# By default client certs are not checked.
+tls_checkpeer = false
+
+# Path to the certificate authority bundle file in PEM format.
+# Required if 'tls_verify' or 'tls_checkpeer' is set.
+tls_cacert = /etc/ssl/sudo/cacert.pem
+
+# Path to the server's certificate file in PEM format.
+# Required for TLS connections.
+tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem
+
+# Path to the server's private key file in PEM format.
+# Required for TLS connections.
+tls_key = /etc/ssl/sudo/private/logsrvd_key.pem
+
+# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
+# NOTE that this setting is only effective if the negotiated protocol
+# is TLS version 1.2.
+# The default cipher list is HIGH:!aNULL.
+tls_ciphers_v12 = HIGH:!aNULL
+
+# TLS cipher list if the negotiated protocol is TLS version 1.3.
+# The default cipher list is TLS_AES_256_GCM_SHA384.
+tls_ciphers_v13 = TLS_AES_256_GCM_SHA384
+
+# Path to the Diffie-Hellman parameter file in PEM format.
+# If not set, the server will use the OpenSSL defaults.
+tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem
+
+[iolog]
+# The top-level directory to use when constructing the path name for the
+# I/O log directory. The session sequence number, if any, is stored here.
+iolog_dir = /var/log/sudo-io
+
+# The path name, relative to iolog_dir, in which to store I/O logs.
+# Note that iolog_file may contain directory components.
+iolog_file = %{seq}
+
+# If set, I/O logs will be compressed using zlib. Enabling compression can
+# make it harder to view the logs in real-time as the program is executing.
+iolog_compress = false
+
+# If set, I/O log data is flushed to disk after each write instead of
+# buffering it. This makes it possible to view the logs in real-time
+# as the program is executing but reduces the effectiveness of compression.
+iolog_flush = true
+
+# The group to use when creating new I/O log files and directories.
+# If iolog_group is not set, the primary group-ID of the user specified
+# by iolog_user is used. If neither iolog_group nor iolog_user
+# are set, I/O log files and directories are created with group-ID 0.
+#iolog_group = wheel
+
+# The user to use when setting the user-ID and group-ID of new I/O
+# log files and directories. If iolog_group is set, it will be used
+# instead of the user's primary group-ID. By default, I/O log files
+# and directories are created with user and group-ID 0.
+iolog_user = root
+
+# The file mode to use when creating I/O log files. The file permissions
+# will always include the owner read and write bits, even if they are
+# not present in the specified mode. When creating I/O log directories,
+# search (execute) bits are added to match the read and write bits
+# specified by iolog_mode.
+iolog_mode = 0600
+
+# The maximum sequence number that will be substituted for the "%{seq}"
+# escape in the I/O log file. While the value substituted for "%{seq}"
+# is in base 36, maxseq itself should be expressed in decimal. Values
+# larger than 2176782336 (which corresponds to the base 36 sequence
+# number "ZZZZZZ") will be silently truncated to 2176782336.
+maxseq = 2176782336
+
+[eventlog]
+# Where to log accept, reject and alert events.
+# Accepted values are syslog, logfile, or none.
+# Defaults to syslog
+log_type = syslog
+
+# Event log format.
+# Supported log formats are "sudo" and "json"
+# Defaults to sudo
+log_format = sudo
+
+[syslog]
+# The maximum length of a syslog payload.
+# On many systems, syslog(3) has a relatively small log buffer.
+# IETF RFC 5424 states that syslog servers must support messages
+# of at least 480 bytes and should support messages up to 2048 bytes.
+# Messages larger than this value will be split into multiple messages.
+maxlen = 960
+
+# The syslog facility to use for event log messages.
+# The following syslog facilities are supported: authpriv (if your OS
+# supports it), auth, daemon, user, local0, local1, local2, local3,
+# local4, local5, local6, and local7.
+facility = authpriv
+
+# Syslog priority to use for event log accept messages, when the command
+# is allowed by the security policy. The following syslog priorities are
+# supported: alert, crit, debug, emerg, err, info, notice, warning, none.
+accept_priority = notice
+
+# Syslog priority to use for event log reject messages, when the command
+# is not allowed by the security policy.
+reject_priority = alert
+
+# Syslog priority to use for event log alert messages reported by the
+# client.
+alert_priority = alert
+
+[logfile]
+# The path to the file-based event log.
+# This path must be fully-qualified and start with a '/' character.
+path = /var/log/sudo
+
+# The format string used when formatting the date and time for
+# file-based event logs. Formatting is performed via strftime(3) so
+# any format string supported by that function is allowed.
+time_format = %h %e %T
diff --git a/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.3 b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.3
new file mode 100644
index 000000000..ba87d1211
--- /dev/null
+++ b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.3
@@ -0,0 +1,159 @@
+#
+# sudo logsrv configuration
+#
+
+[server]
+# The host name or IP address and port to listen on with an optional TLS
+# flag. If no port is specified, port 30343 will be used for plaintext
+# connections and port 30344 will be used to TLS connections.
+# The following forms are accepted:
+# listen_address = hostname(tls)
+# listen_address = hostname:port(tls)
+# listen_address = IPv4_address(tls)
+# listen_address = IPv4_address:port(tls)
+# listen_address = [IPv6_address](tls)
+# listen_address = [IPv6_address]:port(tls)
+#
+# The (tls) suffix should be omitted for plaintext connections.
+#
+# Multiple listen_address settings may be specified.
+# The default is to listen on all addresses.
+listen_address = *:30343
+#listen_address = *:30344(tls)
+
+# The file containing the ID of the running sudo_logsrvd process.
+pid_file = /var/run/sudo/sudo_logsrvd.pid
+
+# If set, enable the SO_KEEPALIVE socket option on the connected socket.
+tcp_keepalive = true
+
+# The amount of time, in seconds, the server will wait for the client to
+# respond. A value of 0 will disable the timeout. The default value is 30.
+timeout = 0
+
+# If set, server certificate will be verified at server startup and
+# also connecting clients will perform server authentication by
+# verifying the server's certificate and identity.
+#tls_verify = true
+
+# Whether to verify client certificates for TLS connections.
+# By default client certs are not checked.
+#tls_checkpeer = false
+
+# Path to the certificate authority bundle file in PEM format.
+# Required if 'tls_verify' or 'tls_checkpeer' is set.
+#tls_cacert = /etc/ssl/sudo/cacert.pem
+
+# Path to the server's certificate file in PEM format.
+# Required for TLS connections.
+#tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem
+
+# Path to the server's private key file in PEM format.
+# Required for TLS connections.
+#tls_key = /etc/ssl/sudo/private/logsrvd_key.pem
+
+# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
+# NOTE that this setting is only effective if the negotiated protocol
+# is TLS version 1.2.
+# The default cipher list is HIGH:!aNULL.
+#tls_ciphers_v12 = HIGH:!aNULL
+
+# TLS cipher list if the negotiated protocol is TLS version 1.3.
+# The default cipher list is TLS_AES_256_GCM_SHA384.
+#tls_ciphers_v13 = TLS_AES_256_GCM_SHA384
+
+# Path to the Diffie-Hellman parameter file in PEM format.
+# If not set, the server will use the OpenSSL defaults.
+#tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem
+
+[iolog]
+# The top-level directory to use when constructing the path name for the
+# I/O log directory. The session sequence number, if any, is stored here.
+iolog_dir = /var/log/sudo-io/%{hostname}/%{user}
+
+# The path name, relative to iolog_dir, in which to store I/O logs.
+# Note that iolog_file may contain directory components.
+iolog_file = %{seq}
+
+# If set, I/O logs will be compressed using zlib. Enabling compression can
+# make it harder to view the logs in real-time as the program is executing.
+iolog_compress = true
+
+# If set, I/O log data is flushed to disk after each write instead of
+# buffering it. This makes it possible to view the logs in real-time
+# as the program is executing but reduces the effectiveness of compression.
+iolog_flush = false
+
+# The group to use when creating new I/O log files and directories.
+# If iolog_group is not set, the primary group-ID of the user specified
+# by iolog_user is used. If neither iolog_group nor iolog_user
+# are set, I/O log files and directories are created with group-ID 0.
+#iolog_group = sudo
+
+# The user to use when setting the user-ID and group-ID of new I/O
+# log files and directories. If iolog_group is set, it will be used
+# instead of the user's primary group-ID. By default, I/O log files
+# and directories are created with user and group-ID 0.
+#iolog_user = sudo
+
+# The file mode to use when creating I/O log files. The file permissions
+# will always include the owner read and write bits, even if they are
+# not present in the specified mode. When creating I/O log directories,
+# search (execute) bits are added to match the read and write bits
+# specified by iolog_mode.
+iolog_mode = 0640
+
+# The maximum sequence number that will be substituted for the "%{seq}"
+# escape in the I/O log file. While the value substituted for "%{seq}"
+# is in base 36, maxseq itself should be expressed in decimal. Values
+# larger than 2176782336 (which corresponds to the base 36 sequence
+# number "ZZZZZZ") will be silently truncated to 2176782336.
+maxseq = 999999999
+
+[eventlog]
+# Where to log accept, reject and alert events.
+# Accepted values are syslog, logfile, or none.
+# Defaults to syslog
+log_type = logfile
+
+# Event log format.
+# Supported log formats are "sudo" and "json"
+# Defaults to sudo
+log_format = json
+
+[syslog]
+# The maximum length of a syslog payload.
+# On many systems, syslog(3) has a relatively small log buffer.
+# IETF RFC 5424 states that syslog servers must support messages
+# of at least 480 bytes and should support messages up to 2048 bytes.
+# Messages larger than this value will be split into multiple messages.
+#maxlen = 960
+
+# The syslog facility to use for event log messages.
+# The following syslog facilities are supported: authpriv (if your OS
+# supports it), auth, daemon, user, local0, local1, local2, local3,
+# local4, local5, local6, and local7.
+#facility = authpriv
+
+# Syslog priority to use for event log accept messages, when the command
+# is allowed by the security policy. The following syslog priorities are
+# supported: alert, crit, debug, emerg, err, info, notice, warning, none.
+#accept_priority = notice
+
+# Syslog priority to use for event log reject messages, when the command
+# is not allowed by the security policy.
+#reject_priority = alert
+
+# Syslog priority to use for event log alert messages reported by the
+# client.
+#alert_priority = alert
+
+[logfile]
+# The path to the file-based event log.
+# This path must be fully-qualified and start with a '/' character.
+path = /var/log/sudo.log
+
+# The format string used when formatting the date and time for
+# file-based event logs. Formatting is performed via strftime(3) so
+# any format string supported by that function is allowed.
+time_format = %a %b %e %H:%M:%S %Z
diff --git a/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.4 b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.4
new file mode 100644
index 000000000..f1798c13e
--- /dev/null
+++ b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.4
@@ -0,0 +1,159 @@
+#
+# sudo logsrv configuration
+#
+
+[server]
+# The host name or IP address and port to listen on with an optional TLS
+# flag. If no port is specified, port 30343 will be used for plaintext
+# connections and port 30344 will be used to TLS connections.
+# The following forms are accepted:
+# listen_address = hostname(tls)
+# listen_address = hostname:port(tls)
+# listen_address = IPv4_address(tls)
+# listen_address = IPv4_address:port(tls)
+# listen_address = [IPv6_address](tls)
+# listen_address = [IPv6_address]:port(tls)
+#
+# The (tls) suffix should be omitted for plaintext connections.
+#
+# Multiple listen_address settings may be specified.
+# The default is to listen on all addresses.
+#listen_address = *:30343
+listen_address = *:30344(tls)
+
+# The file containing the ID of the running sudo_logsrvd process.
+pid_file = /var/run/sudo/sudo_logsrvd.pid
+
+# If set, enable the SO_KEEPALIVE socket option on the connected socket.
+tcp_keepalive = true
+
+# The amount of time, in seconds, the server will wait for the client to
+# respond. A value of 0 will disable the timeout. The default value is 30.
+timeout = 30
+
+# If set, server certificate will be verified at server startup and
+# also connecting clients will perform server authentication by
+# verifying the server's certificate and identity.
+tls_verify = true
+
+# Whether to verify client certificates for TLS connections.
+# By default client certs are not checked.
+tls_checkpeer = false
+
+# Path to the certificate authority bundle file in PEM format.
+# Required if 'tls_verify' or 'tls_checkpeer' is set.
+tls_cacert = /etc/ssl/sudo/cacert.pem
+
+# Path to the server's certificate file in PEM format.
+# Required for TLS connections.
+tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem
+
+# Path to the server's private key file in PEM format.
+# Required for TLS connections.
+tls_key = /etc/ssl/sudo/private/logsrvd_key.pem
+
+# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
+# NOTE that this setting is only effective if the negotiated protocol
+# is TLS version 1.2.
+# The default cipher list is HIGH:!aNULL.
+tls_ciphers_v12 = HIGH:!aNULL
+
+# TLS cipher list if the negotiated protocol is TLS version 1.3.
+# The default cipher list is TLS_AES_256_GCM_SHA384.
+tls_ciphers_v13 = TLS_AES_256_GCM_SHA384
+
+# Path to the Diffie-Hellman parameter file in PEM format.
+# If not set, the server will use the OpenSSL defaults.
+tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem
+
+[iolog]
+# The top-level directory to use when constructing the path name for the
+# I/O log directory. The session sequence number, if any, is stored here.
+iolog_dir = /var/log/sudo-io
+
+# The path name, relative to iolog_dir, in which to store I/O logs.
+# Note that iolog_file may contain directory components.
+iolog_file = %{seq}
+
+# If set, I/O logs will be compressed using zlib. Enabling compression can
+# make it harder to view the logs in real-time as the program is executing.
+iolog_compress = false
+
+# If set, I/O log data is flushed to disk after each write instead of
+# buffering it. This makes it possible to view the logs in real-time
+# as the program is executing but reduces the effectiveness of compression.
+iolog_flush = true
+
+# The group to use when creating new I/O log files and directories.
+# If iolog_group is not set, the primary group-ID of the user specified
+# by iolog_user is used. If neither iolog_group nor iolog_user
+# are set, I/O log files and directories are created with group-ID 0.
+#iolog_group = wheel
+
+# The user to use when setting the user-ID and group-ID of new I/O
+# log files and directories. If iolog_group is set, it will be used
+# instead of the user's primary group-ID. By default, I/O log files
+# and directories are created with user and group-ID 0.
+iolog_user = root
+
+# The file mode to use when creating I/O log files. The file permissions
+# will always include the owner read and write bits, even if they are
+# not present in the specified mode. When creating I/O log directories,
+# search (execute) bits are added to match the read and write bits
+# specified by iolog_mode.
+iolog_mode = 0600
+
+# The maximum sequence number that will be substituted for the "%{seq}"
+# escape in the I/O log file. While the value substituted for "%{seq}"
+# is in base 36, maxseq itself should be expressed in decimal. Values
+# larger than 2176782336 (which corresponds to the base 36 sequence
+# number "ZZZZZZ") will be silently truncated to 2176782336.
+maxseq = 2176782336
+
+[eventlog]
+# Where to log accept, reject and alert events.
+# Accepted values are syslog, logfile, or none.
+# Defaults to syslog
+log_type = syslog
+
+# Event log format.
+# Supported log formats are "sudo" and "json"
+# Defaults to sudo
+log_format = sudo
+
+[syslog]
+# The maximum length of a syslog payload.
+# On many systems, syslog(3) has a relatively small log buffer.
+# IETF RFC 5424 states that syslog servers must support messages
+# of at least 480 bytes and should support messages up to 2048 bytes.
+# Messages larger than this value will be split into multiple messages.
+maxlen = 960
+
+# The syslog facility to use for event log messages.
+# The following syslog facilities are supported: authpriv (if your OS
+# supports it), auth, daemon, user, local0, local1, local2, local3,
+# local4, local5, local6, and local7.
+facility = unknown
+
+# Syslog priority to use for event log accept messages, when the command
+# is allowed by the security policy. The following syslog priorities are
+# supported: alert, crit, debug, emerg, err, info, notice, warning, none.
+accept_priority = notice
+
+# Syslog priority to use for event log reject messages, when the command
+# is not allowed by the security policy.
+reject_priority = alert
+
+# Syslog priority to use for event log alert messages reported by the
+# client.
+alert_priority = alert
+
+[logfile]
+# The path to the file-based event log.
+# This path must be fully-qualified and start with a '/' character.
+path = /var/log/sudo
+
+# The format string used when formatting the date and time for
+# file-based event logs. Formatting is performed via strftime(3) so
+# any format string supported by that function is allowed.
+time_format = %h %e %T
diff --git a/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.5 b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.5
new file mode 100644
index 000000000..7ff59c08e
--- /dev/null
+++ b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.5
@@ -0,0 +1,159 @@
+#
+# sudo logsrv configuration
+#
+
+[server]
+# The host name or IP address and port to listen on with an optional TLS
+# flag. If no port is specified, port 30343 will be used for plaintext
+# connections and port 30344 will be used to TLS connections.
+# The following forms are accepted:
+# listen_address = hostname(tls)
+# listen_address = hostname:port(tls)
+# listen_address = IPv4_address(tls)
+# listen_address = IPv4_address:port(tls)
+# listen_address = [IPv6_address](tls)
+# listen_address = [IPv6_address]:port(tls)
+#
+# The (tls) suffix should be omitted for plaintext connections.
+#
+# Multiple listen_address settings may be specified.
+# The default is to listen on all addresses.
+#listen_address = *:30343
+listen_address = *:30344(tls)
+
+# The file containing the ID of the running sudo_logsrvd process.
+pid_file = /var/run/sudo/sudo_logsrvd.pid
+
+# If set, enable the SO_KEEPALIVE socket option on the connected socket.
+tcp_keepalive = true
+
+# The amount of time, in seconds, the server will wait for the client to
+# respond. A value of 0 will disable the timeout. The default value is 30.
+timeout = 30
+
+# If set, server certificate will be verified at server startup and
+# also connecting clients will perform server authentication by
+# verifying the server's certificate and identity.
+tls_verify = true
+
+# Whether to verify client certificates for TLS connections.
+# By default client certs are not checked.
+tls_checkpeer = false
+
+# Path to the certificate authority bundle file in PEM format.
+# Required if 'tls_verify' or 'tls_checkpeer' is set.
+tls_cacert = /etc/ssl/sudo/cacert.pem
+
+# Path to the server's certificate file in PEM format.
+# Required for TLS connections.
+tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem
+
+# Path to the server's private key file in PEM format.
+# Required for TLS connections.
+tls_key = /etc/ssl/sudo/private/logsrvd_key.pem
+
+# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
+# NOTE that this setting is only effective if the negotiated protocol
+# is TLS version 1.2.
+# The default cipher list is HIGH:!aNULL.
+tls_ciphers_v12 = HIGH:!aNULL
+
+# TLS cipher list if the negotiated protocol is TLS version 1.3.
+# The default cipher list is TLS_AES_256_GCM_SHA384.
+tls_ciphers_v13 = TLS_AES_256_GCM_SHA384
+
+# Path to the Diffie-Hellman parameter file in PEM format.
+# If not set, the server will use the OpenSSL defaults.
+tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem
+
+[iolog]
+# The top-level directory to use when constructing the path name for the
+# I/O log directory. The session sequence number, if any, is stored here.
+iolog_dir = /var/log/sudo-io
+
+# The path name, relative to iolog_dir, in which to store I/O logs.
+# Note that iolog_file may contain directory components.
+iolog_file = %{seq}
+
+# If set, I/O logs will be compressed using zlib. Enabling compression can
+# make it harder to view the logs in real-time as the program is executing.
+iolog_compress = false
+
+# If set, I/O log data is flushed to disk after each write instead of
+# buffering it. This makes it possible to view the logs in real-time
+# as the program is executing but reduces the effectiveness of compression.
+iolog_flush = true
+
+# The group to use when creating new I/O log files and directories.
+# If iolog_group is not set, the primary group-ID of the user specified
+# by iolog_user is used. If neither iolog_group nor iolog_user
+# are set, I/O log files and directories are created with group-ID 0.
+#iolog_group = wheel
+
+# The user to use when setting the user-ID and group-ID of new I/O
+# log files and directories. If iolog_group is set, it will be used
+# instead of the user's primary group-ID. By default, I/O log files
+# and directories are created with user and group-ID 0.
+iolog_user = root
+
+# The file mode to use when creating I/O log files. The file permissions
+# will always include the owner read and write bits, even if they are
+# not present in the specified mode. When creating I/O log directories,
+# search (execute) bits are added to match the read and write bits
+# specified by iolog_mode.
+iolog_mode = 0600
+
+# The maximum sequence number that will be substituted for the "%{seq}"
+# escape in the I/O log file. While the value substituted for "%{seq}"
+# is in base 36, maxseq itself should be expressed in decimal. Values
+# larger than 2176782336 (which corresponds to the base 36 sequence
+# number "ZZZZZZ") will be silently truncated to 2176782336.
+maxseq = 2176782336
+
+[eventlog]
+# Where to log accept, reject and alert events.
+# Accepted values are syslog, logfile, or none.
+# Defaults to syslog
+log_type = syslog
+
+# Event log format.
+# Supported log formats are "sudo" and "json"
+# Defaults to sudo
+log_format = sudo
+
+[syslog]
+# The maximum length of a syslog payload.
+# On many systems, syslog(3) has a relatively small log buffer.
+# IETF RFC 5424 states that syslog servers must support messages
+# of at least 480 bytes and should support messages up to 2048 bytes.
+# Messages larger than this value will be split into multiple messages.
+maxlen = 960
+
+# The syslog facility to use for event log messages.
+# The following syslog facilities are supported: authpriv (if your OS
+# supports it), auth, daemon, user, local0, local1, local2, local3,
+# local4, local5, local6, and local7.
+facility = authpriv
+
+# Syslog priority to use for event log accept messages, when the command
+# is allowed by the security policy. The following syslog priorities are
+# supported: alert, crit, debug, emerg, err, info, notice, warning, none.
+accept_priority = low
+
+# Syslog priority to use for event log reject messages, when the command
+# is not allowed by the security policy.
+reject_priority = alert
+
+# Syslog priority to use for event log alert messages reported by the
+# client.
+alert_priority = alert
+
+[logfile]
+# The path to the file-based event log.
+# This path must be fully-qualified and start with a '/' character.
+path = /var/log/sudo
+
+# The format string used when formatting the date and time for
+# file-based event logs. Formatting is performed via strftime(3) so
+# any format string supported by that function is allowed.
+time_format = %h %e %T
diff --git a/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.6 b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.6
new file mode 100644
index 000000000..b52185c21
--- /dev/null
+++ b/logsrvd/regress/corpus/logsrvd_conf/logsrvd.conf.6
@@ -0,0 +1,159 @@
+#
+# sudo logsrv configuration
+#
+
+[server]
+# The host name or IP address and port to listen on with an optional TLS
+# flag. If no port is specified, port 30343 will be used for plaintext
+# connections and port 30344 will be used to TLS connections.
+# The following forms are accepted:
+# listen_address = hostname(tls)
+# listen_address = hostname:port(tls)
+# listen_address = IPv4_address(tls)
+# listen_address = IPv4_address:port(tls)
+# listen_address = [IPv6_address](tls)
+# listen_address = [IPv6_address]:port(tls)
+#
+# The (tls) suffix should be omitted for plaintext connections.
+#
+# Multiple listen_address settings may be specified.
+# The default is to listen on all addresses.
+#listen_address = *:30343
+listen_address = *:30344(tls)
+
+# The file containing the ID of the running sudo_logsrvd process.
+pid_file = /var/run/sudo/sudo_logsrvd.pid
+
+# If set, enable the SO_KEEPALIVE socket option on the connected socket.
+tcp_keepalive = true
+
+# The amount of time, in seconds, the server will wait for the client to
+# respond. A value of 0 will disable the timeout. The default value is 30.
+timeout = 30
+
+# If set, server certificate will be verified at server startup and
+# also connecting clients will perform server authentication by
+# verifying the server's certificate and identity.
+tls_verify = true
+
+# Whether to verify client certificates for TLS connections.
+# By default client certs are not checked.
+tls_checkpeer = false
+
+# Path to the certificate authority bundle file in PEM format.
+# Required if 'tls_verify' or 'tls_checkpeer' is set.
+tls_cacert = /etc/ssl/sudo/cacert.pem
+
+# Path to the server's certificate file in PEM format.
+# Required for TLS connections.
+tls_cert = /etc/ssl/sudo/certs/logsrvd_cert.pem
+
+# Path to the server's private key file in PEM format.
+# Required for TLS connections.
+tls_key = /etc/ssl/sudo/private/logsrvd_key.pem
+
+# TLS cipher list (see "CIPHER LIST FORMAT" in the openssl-ciphers manual).
+# NOTE that this setting is only effective if the negotiated protocol
+# is TLS version 1.2.
+# The default cipher list is HIGH:!aNULL.
+tls_ciphers_v12 = HIGH:!aNULL
+
+# TLS cipher list if the negotiated protocol is TLS version 1.3.
+# The default cipher list is TLS_AES_256_GCM_SHA384.
+tls_ciphers_v13 = TLS_AES_256_GCM_SHA384
+
+# Path to the Diffie-Hellman parameter file in PEM format.
+# If not set, the server will use the OpenSSL defaults.
+tls_dhparams = /etc/ssl/sudo/logsrvd_dhparams.pem
+
+[iolog]
+# The top-level directory to use when constructing the path name for the
+# I/O log directory. The session sequence number, if any, is stored here.
+iolog_dir = /var/log/sudo-io
+
+# The path name, relative to iolog_dir, in which to store I/O logs.
+# Note that iolog_file may contain directory components.
+iolog_file = %{seq}
+
+# If set, I/O logs will be compressed using zlib. Enabling compression can
+# make it harder to view the logs in real-time as the program is executing.
+iolog_compress = false
+
+# If set, I/O log data is flushed to disk after each write instead of
+# buffering it. This makes it possible to view the logs in real-time
+# as the program is executing but reduces the effectiveness of compression.
+iolog_flush = true
+
+# The group to use when creating new I/O log files and directories.
+# If iolog_group is not set, the primary group-ID of the user specified
+# by iolog_user is used. If neither iolog_group nor iolog_user
+# are set, I/O log files and directories are created with group-ID 0.
+#iolog_group = wheel
+
+# The user to use when setting the user-ID and group-ID of new I/O
+# log files and directories. If iolog_group is set, it will be used
+# instead of the user's primary group-ID. By default, I/O log files
+# and directories are created with user and group-ID 0.
+iolog_user = root
+
+# The file mode to use when creating I/O log files. The file permissions
+# will always include the owner read and write bits, even if they are
+# not present in the specified mode. When creating I/O log directories,
+# search (execute) bits are added to match the read and write bits
+# specified by iolog_mode.
+iolog_mode = 0600
+
+# The maximum sequence number that will be substituted for the "%{seq}"
+# escape in the I/O log file. While the value substituted for "%{seq}"
+# is in base 36, maxseq itself should be expressed in decimal. Values
+# larger than 2176782336 (which corresponds to the base 36 sequence
+# number "ZZZZZZ") will be silently truncated to 2176782336.
+maxseq = 2176782336
+
+[eventlog]
+# Where to log accept, reject and alert events.
+# Accepted values are syslog, logfile, or none.
+# Defaults to syslog
+log_type = syslog
+
+# Event log format.
+# Supported log formats are "sudo" and "json"
+# Defaults to sudo
+log_format = sudo
+
+[syslog]
+# The maximum length of a syslog payload.
+# On many systems, syslog(3) has a relatively small log buffer.
+# IETF RFC 5424 states that syslog servers must support messages
+# of at least 480 bytes and should support messages up to 2048 bytes.
+# Messages larger than this value will be split into multiple messages.
+maxlen = 960
+
+# The syslog facility to use for event log messages.
+# The following syslog facilities are supported: authpriv (if your OS
+# supports it), auth, daemon, user, local0, local1, local2, local3,
+# local4, local5, local6, and local7.
+facility = authpriv
+
+# Syslog priority to use for event log accept messages, when the command
+# is allowed by the security policy. The following syslog priorities are
+# supported: alert, crit, debug, emerg, err, info, notice, warning, none.
+accept_priority = notice
+
+# Syslog priority to use for event log reject messages, when the command
+# is not allowed by the security policy.
+reject_priority = alert
+
+# Syslog priority to use for event log alert messages reported by the
+# client.
+alert_priority = high
+
+[logfile]
+# The path to the file-based event log.
+# This path must be fully-qualified and start with a '/' character.
+path = /var/log/sudo
+
+# The format string used when formatting the date and time for
+# file-based event logs. Formatting is performed via strftime(3) so
+# any format string supported by that function is allowed.
+time_format = %h %e %T
diff --git a/logsrvd/regress/fuzz/fuzz_logsrvd_conf.c b/logsrvd/regress/fuzz/fuzz_logsrvd_conf.c
new file mode 100644
index 000000000..b1a36b11c
--- /dev/null
+++ b/logsrvd/regress/fuzz/fuzz_logsrvd_conf.c
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <time.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+
+#include "sudo_compat.h"
+#include "sudo_conf.h"
+#include "sudo_debug.h"
+#include "sudo_eventlog.h"
+#include "sudo_iolog.h"
+#include "sudo_util.h"
+
+#include "log_server.pb-c.h"
+#include "logsrvd.h"
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ char tempfile[] = "/tmp/logsrvd_conf.XXXXXX";
+ size_t nwritten;
+ int fd;
+
+ /* logsrvd_conf_read() uses a conf file path, not an open file. */
+ fd = mkstemp(tempfile);
+ if (fd == -1)
+ return 0;
+ nwritten = write(fd, data, size);
+ if (nwritten != size) {
+ close(fd);
+ return 0;
+ }
+ close(fd);
+
+ if (logsrvd_conf_read(tempfile)) {
+ /* public config getters */
+ logsrvd_conf_iolog_mode();
+ logsrvd_conf_iolog_dir();
+ logsrvd_conf_iolog_file();
+ logsrvd_conf_listen_address();
+ logsrvd_conf_tcp_keepalive();
+ logsrvd_conf_pid_file();
+ logsrvd_conf_get_sock_timeout();
+ }
+
+ unlink(tempfile);
+
+ return 0;
+}
diff --git a/logsrvd/sendlog.c b/logsrvd/sendlog.c
index 2912d9e51..8864374b1 100644
--- a/logsrvd/sendlog.c
+++ b/logsrvd/sendlog.c
@@ -121,25 +121,41 @@ usage(bool fatal)
static void
help(void)
{
- (void)printf(_("%s - send sudo I/O log to remote server\n\n"),
- getprogname());
+ printf("%s - %s\n\n", getprogname(),
+ _("send sudo I/O log to remote server"));
usage(false);
- (void)puts(_("\nOptions:\n"
- " --help display help message and exit\n"
- " -A, --accept only send an accept event (no I/O)\n"
- " -h, --host host to send logs to\n"
- " -i, --iolog_id remote ID of I/O log to be resumed\n"
- " -p, --port port to use when connecting to host\n"
- " -r, --restart restart previous I/O log transfer\n"
- " -R, --reject reject the command with the given reason\n"
+ printf("\n%s\n", _("Options:"));
+ printf(" --help %s\n",
+ _("display help message and exit"));
+ printf(" -A, --accept %s\n",
+ _("only send an accept event (no I/O)"));
#if defined(HAVE_OPENSSL)
- " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
- " -c, --cert certificate file for TLS handshake\n"
- " -k, --key private key file\n"
- " -n, --no-verify do not verify server certificate\n"
+ printf(" -b, --ca-bundle %s\n",
+ _("certificate bundle file to verify server's cert against"));
+ printf(" -c, --cert %s\n",
+ _("certificate file for TLS handshake"));
#endif
- " -t, --test test audit server by sending selected I/O log n times in parallel\n"
- " -V, --version display version information and exit\n"));
+ printf(" -h, --host %s\n",
+ _("host to send logs to"));
+ printf(" -i, --iolog_id %s\n",
+ _("remote ID of I/O log to be resumed"));
+#if defined(HAVE_OPENSSL)
+ printf(" -k, --key %s\n",
+ _("private key file"));
+ printf(" -n, --no-verify %s\n",
+ _("do not verify server certificate"));
+#endif
+ printf(" -p, --port %s\n",
+ _("port to use when connecting to host"));
+ printf(" -r, --restart %s\n",
+ _("restart previous I/O log transfer"));
+ printf(" -R, --reject %s\n",
+ _("reject the command with the given reason"));
+ printf(" -t, --test %s\n",
+ _("test audit server by sending selected I/O log n times in parallel"));
+ printf(" -V, --version %s\n",
+ _("display version information and exit"));
+ putchar('\n');
exit(EXIT_SUCCESS);
}
diff --git a/pathnames.h.in b/pathnames.h.in
index a39f9198d..003a80b26 100644
--- a/pathnames.h.in
+++ b/pathnames.h.in
@@ -141,6 +141,14 @@
# undef _PATH_SUDO_LOGFILE
#endif /* _PATH_SUDO_LOGFILE */
+/*
+ * The path to an Ubuntu-style admin flag file that is created the
+ * first time a user runs sudo.
+ */
+#ifndef _PATH_SUDO_ADMIN_FLAG
+# undef _PATH_SUDO_ADMIN_FLAG
+#endif /* _PATH_SUDO_ADMIN_FLAG */
+
#ifndef _PATH_SUDO_SENDMAIL
# undef _PATH_SUDO_SENDMAIL
#endif /* _PATH_SUDO_SENDMAIL */
diff --git a/plugins/audit_json/Makefile.in b/plugins/audit_json/Makefile.in
index 1172e8e87..fb8bfe9bc 100644
--- a/plugins/audit_json/Makefile.in
+++ b/plugins/audit_json/Makefile.in
@@ -163,6 +163,8 @@ install-plugin: install-dirs audit_json.la
INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) audit_json.la $(DESTDIR)$(plugindir); \
fi
+install-fuzzer:
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(plugindir)/audit_json.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -179,6 +181,8 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
+fuzz:
+
check:
clean:
@@ -197,6 +201,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
getgrent.lo: $(srcdir)/getgrent.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
diff --git a/plugins/group_file/Makefile.in b/plugins/group_file/Makefile.in
index ab49bec29..82e5b22d9 100644
--- a/plugins/group_file/Makefile.in
+++ b/plugins/group_file/Makefile.in
@@ -166,6 +166,8 @@ install-plugin: install-dirs group_file.la
INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) group_file.la $(DESTDIR)$(plugindir); \
fi
+install-fuzzer:
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(plugindir)/group_file.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -182,6 +184,8 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
+fuzz:
+
check:
clean:
@@ -200,6 +204,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
getgrent.lo: $(srcdir)/getgrent.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
diff --git a/plugins/python/Makefile.in b/plugins/python/Makefile.in
index 5315ff000..983861552 100644
--- a/plugins/python/Makefile.in
+++ b/plugins/python/Makefile.in
@@ -186,6 +186,8 @@ install-plugin: install-dirs python_plugin.la
INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) python_plugin.la $(DESTDIR)$(plugindir); \
fi
+install-fuzzer:
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(plugindir)/python_plugin.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -218,8 +220,18 @@ realclean: distclean
cleandir: realclean
+fuzz:
+
check: $(TEST_PROGS)
@if test X"$(cross_compiling)" != X"yes"; then \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
+ unset LANG || LANG=; \
+ MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
+ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
./check_python_examples ".libs/python_plugin.so"; \
fi
@@ -231,6 +243,8 @@ update_test_data: $(TEST_PROGS)
check_python_examples: $(CHECK_PYTHON_EXAMPLES_OBJS) $(LIBPYTHONPLUGIN)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_PYTHON_EXAMPLES_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
check_python_examples.o: $(srcdir)/regress/check_python_examples.c \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
diff --git a/plugins/python/pyhelpers.c b/plugins/python/pyhelpers.c
index 6b235f3df..8fbf0f80a 100644
--- a/plugins/python/pyhelpers.c
+++ b/plugins/python/pyhelpers.c
@@ -212,7 +212,7 @@ py_str_array_from_tuple(PyObject *py_tuple)
Py_ssize_t tuple_size = PyTuple_Size(py_tuple);
// we need an extra 0 at the end
- char **result = calloc(Py_SSIZE2SIZE(tuple_size) + 1, sizeof(char*));
+ char **result = calloc(tuple_size + 1, sizeof(char *));
if (result == NULL) {
debug_return_ptr(NULL);
}
diff --git a/plugins/python/pyhelpers.h b/plugins/python/pyhelpers.h
index 01843d7dc..524b14e3b 100644
--- a/plugins/python/pyhelpers.h
+++ b/plugins/python/pyhelpers.h
@@ -52,7 +52,6 @@ struct PythonContext
extern struct PythonContext py_ctx;
#define Py_TYPENAME(object) (object ? Py_TYPE(object)->tp_name : "NULL")
-#define Py_SSIZE2SIZE(value) ((value) < 0 ? 0 : (size_t)(value))
#define py_sudo_log(...) py_ctx.sudo_log(__VA_ARGS__)
diff --git a/plugins/python/python_convmessage.c b/plugins/python/python_convmessage.c
index 67e6d96bc..14283dcd7 100644
--- a/plugins/python/python_convmessage.c
+++ b/plugins/python/python_convmessage.c
@@ -137,7 +137,7 @@ sudo_module_ConvMessages_to_c(PyObject *py_tuple, Py_ssize_t *num_msgs, struct s
debug_return_int(SUDO_RC_ERROR);
}
- *msgs = calloc(Py_SSIZE2SIZE(*num_msgs), sizeof(struct sudo_conv_message));
+ *msgs = calloc(*num_msgs, sizeof(struct sudo_conv_message));
if (*msgs == NULL) {
debug_return_int(SUDO_RC_ERROR);
}
diff --git a/plugins/python/python_plugin_approval_multi.inc b/plugins/python/python_plugin_approval_multi.inc
index 6ee16bebf..941c14d32 100644
--- a/plugins/python/python_plugin_approval_multi.inc
+++ b/plugins/python/python_plugin_approval_multi.inc
@@ -8,7 +8,7 @@
#define CALLBACK_CFUNC(func_name) APPROVAL_SYMBOL_NAME(_python_plugin_approval_ ## func_name)
extern struct approval_plugin APPROVAL_SYMBOL_NAME(python_approval);
-static struct ApprovalPluginContext PLUGIN_CTX = { {}, &APPROVAL_SYMBOL_NAME(python_approval) };
+static struct ApprovalPluginContext PLUGIN_CTX = { { NULL }, &APPROVAL_SYMBOL_NAME(python_approval) };
int
diff --git a/plugins/python/python_plugin_audit_multi.inc b/plugins/python/python_plugin_audit_multi.inc
index bb65f9ee8..3dc8c1768 100644
--- a/plugins/python/python_plugin_audit_multi.inc
+++ b/plugins/python/python_plugin_audit_multi.inc
@@ -8,7 +8,7 @@
#define CALLBACK_CFUNC(func_name) AUDIT_SYMBOL_NAME(_python_plugin_audit_ ## func_name)
extern struct audit_plugin AUDIT_SYMBOL_NAME(python_audit);
-static struct AuditPluginContext PLUGIN_CTX = { {}, &AUDIT_SYMBOL_NAME(python_audit) };
+static struct AuditPluginContext PLUGIN_CTX = { { NULL }, &AUDIT_SYMBOL_NAME(python_audit) };
static int
diff --git a/plugins/python/python_plugin_io_multi.inc b/plugins/python/python_plugin_io_multi.inc
index bf776f3e8..2ccdb5e68 100644
--- a/plugins/python/python_plugin_io_multi.inc
+++ b/plugins/python/python_plugin_io_multi.inc
@@ -8,7 +8,7 @@
#define CALLBACK_CFUNC(func_name) IO_SYMBOL_NAME(_python_plugin_io_ ## func_name)
extern struct io_plugin IO_SYMBOL_NAME(python_io);
-static struct IOPluginContext PLUGIN_CTX = { {}, &IO_SYMBOL_NAME(python_io) };
+static struct IOPluginContext PLUGIN_CTX = { { NULL }, &IO_SYMBOL_NAME(python_io) };
int
CALLBACK_CFUNC(open)(
diff --git a/plugins/python/sudo_python_module.c b/plugins/python/sudo_python_module.c
index bd189df9a..897d471fc 100644
--- a/plugins/python/sudo_python_module.c
+++ b/plugins/python/sudo_python_module.c
@@ -346,11 +346,12 @@ python_sudo_conversation(PyObject *Py_UNUSED(self), PyObject *py_args, PyObject
goto cleanup;
}
+ /* sudo_module_ConvMessages_to_c() returns error if no messages. */
if (sudo_module_ConvMessages_to_c(py_args, &num_msgs, &msgs) < 0) {
goto cleanup;
}
- replies = calloc(Py_SSIZE2SIZE(num_msgs), sizeof(struct sudo_conv_reply));
+ replies = calloc(num_msgs, sizeof(struct sudo_conv_reply));
if (replies == NULL)
goto cleanup;
py_result = PyTuple_New(num_msgs);
diff --git a/plugins/sample/Makefile.in b/plugins/sample/Makefile.in
index 82bcfd7a7..41ccb4688 100644
--- a/plugins/sample/Makefile.in
+++ b/plugins/sample/Makefile.in
@@ -161,6 +161,8 @@ install-plugin: install-dirs sample_plugin.la
INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) sample_plugin.la $(DESTDIR)$(plugindir); \
fi
+install-fuzzer:
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(plugindir)/sample_plugin.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -177,6 +179,8 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
+fuzz:
+
check:
clean:
@@ -195,6 +199,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
sample_plugin.lo: $(srcdir)/sample_plugin.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_plugin.h \
diff --git a/plugins/sample_approval/Makefile.in b/plugins/sample_approval/Makefile.in
index 3e876b1d6..a8dd23bca 100644
--- a/plugins/sample_approval/Makefile.in
+++ b/plugins/sample_approval/Makefile.in
@@ -163,6 +163,8 @@ install-plugin: install-dirs sample_approval.la
INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) sample_approval.la $(DESTDIR)$(plugindir); \
fi
+install-fuzzer:
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(plugindir)/sample_approval.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -179,6 +181,8 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
+fuzz:
+
check:
clean:
@@ -197,6 +201,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
getgrent.lo: $(srcdir)/getgrent.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_util.h \
diff --git a/plugins/sudoers/Makefile.in b/plugins/sudoers/Makefile.in
index 5aeeae633..f2bb38ea9 100644
--- a/plugins/sudoers/Makefile.in
+++ b/plugins/sudoers/Makefile.in
@@ -1,7 +1,7 @@
#
# SPDX-License-Identifier: ISC
#
-# Copyright (c) 1996, 1998-2005, 2007-2020
+# Copyright (c) 1996, 1998-2005, 2007-2021
# Todd C. Miller <Todd.Miller@sudo.ws>
#
# Permission to use, copy, modify, and distribute this software for any
@@ -55,14 +55,15 @@ INSTALL_OWNER = -o $(install_uid) -g $(install_gid)
INSTALL_BACKUP = @INSTALL_BACKUP@
# Libraries
+LIBFUZZSTUB = $(top_builddir)/lib/fuzzstub/libsudo_fuzzstub.la
LIBEVENTLOG = $(top_builddir)/lib/eventlog/libsudo_eventlog.la
LIBIOLOG = $(top_builddir)/lib/iolog/libsudo_iolog.la
LIBLOGSRV = @LIBLOGSRV@
LIBUTIL = $(top_builddir)/lib/util/libsudo_util.la
LIBS = $(LIBUTIL)
NET_LIBS = @NET_LIBS@
-SUDOERS_LIBS = @SUDOERS_LIBS@ @AFS_LIBS@ @GETGROUPS_LIB@ @LIBTLS@ $(NET_LIBS) $(LIBIOLOG) $(LIBEVENTLOG) $(LIBLOGSRV)
-REPLAY_LIBS = @REPLAY_LIBS@ $(LIBEVENTLOG) $(LIBIOLOG)
+SUDOERS_LIBS = @SUDOERS_LIBS@ @AFS_LIBS@ @GETGROUPS_LIB@ @LIBTLS@ $(NET_LIBS) $(LIBIOLOG) $(LIBLOGSRV)
+REPLAY_LIBS = @REPLAY_LIBS@ $(LIBIOLOG)
VISUDO_LIBS = $(NET_LIBS)
CVTSUDOERS_LIBS = $(NET_LIBS)
TESTSUDOERS_LIBS = $(NET_LIBS)
@@ -153,13 +154,21 @@ SHELL = @SHELL@
PROGS = sudoers.la visudo sudoreplay cvtsudoers testsudoers
+# Regression tests
TEST_PROGS = check_addr check_base64 check_digest check_env_pattern \
check_exptilde check_fill check_gentime check_hexchar \
- check_iolog_plugin check_starttime @SUDOERS_TEST_PROGS@
+ check_iolog_plugin check_starttime check_unesc @SUDOERS_TEST_PROGS@
+
+# Fuzzers
+LIB_FUZZING_ENGINE = @FUZZ_ENGINE@
+FUZZ_PROGS = fuzz_policy fuzz_sudoers fuzz_sudoers_ldif
+FUZZ_SEED_CORPUS = ${FUZZ_PROGS:=_seed_corpus.zip}
+FUZZ_LIBS = libparsesudoers.la @SUDOERS_LIBS@ $(LIB_FUZZING_ENGINE)
+FUZZ_LDFLAGS = @LDFLAGS@
AUTH_OBJS = sudo_auth.lo @AUTH_OBJS@
-LIBPARSESUDOERS_OBJS = alias.lo audit.lo base64.lo defaults.lo digestname.lo \
+LIBPARSESUDOERS_OBJS = alias.lo b64_decode.lo defaults.lo digestname.lo \
exptilde.lo filedigest.lo gentime.lo gmtoff.lo gram.lo \
hexchar.lo match.lo match_addr.lo match_command.lo \
match_digest.lo pwutil.lo pwutil_impl.lo rcstr.lo \
@@ -168,23 +177,25 @@ LIBPARSESUDOERS_OBJS = alias.lo audit.lo base64.lo defaults.lo digestname.lo \
LIBPARSESUDOERS_IOBJS = $(LIBPARSESUDOERS_OBJS:.lo=.i) passwd.i
-SUDOERS_OBJS = $(AUTH_OBJS) boottime.lo check.lo editor.lo env.lo \
- env_pattern.lo file.lo find_path.lo fmtsudoers.lo gc.lo \
- goodpath.lo group_plugin.lo interfaces.lo iolog.lo \
- iolog_path_escapes.lo locale.lo log_client.lo logging.lo \
- parse.lo policy.lo prompt.lo set_perms.lo starttime.lo \
- sudo_nss.lo sudoers.lo timestamp.lo @SUDOERS_OBJS@
+SUDOERS_OBJS = $(AUTH_OBJS) audit.lo boottime.lo check.lo editor.lo env.lo \
+ sudoers_hooks.lo env_pattern.lo file.lo find_path.lo \
+ fmtsudoers.lo gc.lo goodpath.lo group_plugin.lo interfaces.lo \
+ iolog.lo iolog_path_escapes.lo locale.lo log_client.lo \
+ logging.lo parse.lo policy.lo prompt.lo set_perms.lo \
+ starttime.lo strlcpy_unesc.lo strvec_join.lo sudo_nss.lo \
+ sudoers.lo timestamp.lo @SUDOERS_OBJS@
SUDOERS_IOBJS = $(SUDOERS_OBJS:.lo=.i)
-VISUDO_OBJS = editor.lo find_path.lo goodpath.lo locale.lo stubs.o \
- sudo_printf.o visudo.o
+VISUDO_OBJS = check_aliases.o editor.lo find_path.lo goodpath.lo locale.lo \
+ stubs.o sudo_printf.o visudo.o
VISUDO_IOBJS = sudo_printf.i visudo.i
-CVTSUDOERS_OBJS = cvtsudoers.o cvtsudoers_json.o cvtsudoers_ldif.o \
- cvtsudoers_pwutil.o fmtsudoers.lo locale.lo parse_ldif.o \
- stubs.o sudo_printf.o ldap_util.lo
+CVTSUDOERS_OBJS = b64_encode.o cvtsudoers.o cvtsudoers_json.o \
+ cvtsudoers_ldif.o cvtsudoers_pwutil.o fmtsudoers.lo \
+ fmtsudoers_cvt.lo locale.lo parse_ldif.o stubs.o \
+ sudo_printf.o ldap_util.lo
CVTSUDOERS_IOBJS = cvtsudoers.i cvtsudoers_json.i cvtsudoers_ldif.i \
cvtsudoers_pwutil.i
@@ -193,8 +204,8 @@ REPLAY_OBJS = getdate.o sudoreplay.o
REPLAY_IOBJS = $(REPLAY_OBJS:.o=.i)
-TEST_OBJS = fmtsudoers.lo group_plugin.lo interfaces.lo ldap_util.lo \
- locale.lo net_ifs.o parse_ldif.o sudo_printf.o \
+TEST_OBJS = fmtsudoers.lo fmtsudoers_cvt.lo group_plugin.lo interfaces.lo \
+ ldap_util.lo locale.lo net_ifs.o parse_ldif.o sudo_printf.o \
testsudoers.o tsgetgrpw.o
IOBJS = $(LIBPARSESUDOERS_IOBJS) $(SUDOERS_IOBJS) $(VISUDO_IOBJS) \
@@ -207,7 +218,7 @@ TSDUMP_OBJS = tsdump.o sudoers_debug.lo locale.lo
CHECK_ADDR_OBJS = check_addr.o interfaces.lo match_addr.lo sudoers_debug.lo \
sudo_printf.o
-CHECK_BASE64_OBJS = check_base64.o base64.lo sudoers_debug.lo
+CHECK_BASE64_OBJS = check_base64.o b64_decode.lo b64_encode.o sudoers_debug.lo
CHECK_DIGEST_OBJS = check_digest.o filedigest.lo digestname.lo sudoers_debug.lo
@@ -229,6 +240,49 @@ CHECK_SYMBOLS_OBJS = check_symbols.o
CHECK_STARTTIME_OBJS = check_starttime.o starttime.lo sudoers_debug.lo
+CHECK_UNESC_OBJS = check_unesc.o strlcpy_unesc.lo strvec_join.lo sudoers_debug.lo
+
+FUZZ_POLICY_OBJS = editor.lo env.lo env_pattern.lo fuzz_policy.o fuzz_stubs.o \
+ gc.lo iolog_path_escapes.lo locale.lo policy.lo \
+ strlcpy_unesc.lo strvec_join.lo sudoers.lo sudoers_hooks.lo
+
+FUZZ_POLICY_CORPUS = $(srcdir)/regress/corpus/policy/policy.*
+
+FUZZ_SUDOERS_OBJS = check_aliases.o fuzz_stubs.o fuzz_sudoers.o fmtsudoers.lo \
+ parse.lo locale.lo sudo_printf.o
+
+FUZZ_SUDOERS_CORPUS = $(top_srcdir)/examples/sudoers \
+ $(srcdir)/regress/sudoers/test1.in \
+ $(srcdir)/regress/sudoers/test2.in \
+ $(srcdir)/regress/sudoers/test3.in \
+ $(srcdir)/regress/sudoers/test4.in \
+ $(srcdir)/regress/sudoers/test5.in \
+ $(srcdir)/regress/sudoers/test6.in \
+ $(srcdir)/regress/sudoers/test7.in \
+ $(srcdir)/regress/sudoers/test8.in \
+ $(srcdir)/regress/sudoers/test9.in \
+ $(srcdir)/regress/sudoers/test10.in \
+ $(srcdir)/regress/sudoers/test11.in \
+ $(srcdir)/regress/sudoers/test12.in \
+ $(srcdir)/regress/sudoers/test13.in \
+ $(srcdir)/regress/sudoers/test14.in \
+ $(srcdir)/regress/sudoers/test15.in \
+ $(srcdir)/regress/sudoers/test16.in \
+ $(srcdir)/regress/sudoers/test17.in \
+ $(srcdir)/regress/sudoers/test18.in \
+ $(srcdir)/regress/sudoers/test19.in \
+ $(srcdir)/regress/sudoers/test20.in \
+ $(srcdir)/regress/sudoers/test21.in \
+ $(srcdir)/regress/sudoers/test22.in \
+ $(srcdir)/regress/sudoers/test23.in \
+ $(srcdir)/regress/sudoers/test24.in \
+ $(srcdir)/regress/sudoers/test25.in
+
+FUZZ_SUDOERS_LDIF_OBJS = fuzz_stubs.o fuzz_sudoers_ldif.o parse_ldif.o \
+ ldap_util.lo fmtsudoers.lo locale.lo sudo_printf.o
+
+FUZZ_SUDOERS_LDIF_CORPUS = $(srcdir)/regress/sudoers/*.ldif.ok
+
VERSION = @PACKAGE_VERSION@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
@@ -272,7 +326,7 @@ Makefile: $(srcdir)/Makefile.in
libparsesudoers.la: $(LIBPARSESUDOERS_OBJS)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(LIBPARSESUDOERS_OBJS) -no-install
-sudoers.la: $(SUDOERS_OBJS) $(LIBUTIL) $(LIBIOLOG) $(LIBLOGSRV) libparsesudoers.la @LT_LDDEP@
+sudoers.la: $(SUDOERS_OBJS) $(LIBIOLOG) $(LIBLOGSRV) libparsesudoers.la @LT_LDDEP@
case "$(LT_LDFLAGS)" in \
*-no-install*) \
$(LIBTOOL) $(LTFLAGS) @LT_STATIC@ --mode=link $(CC) $(LDFLAGS) $(LT_LDFLAGS) -o $@ $(SUDOERS_OBJS) libparsesudoers.la $(SUDOERS_LIBS) -module;; \
@@ -286,7 +340,7 @@ visudo: libparsesudoers.la $(VISUDO_OBJS) $(LIBUTIL)
cvtsudoers: libparsesudoers.la $(CVTSUDOERS_OBJS) $(LIBUTIL)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CVTSUDOERS_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) libparsesudoers.la $(LIBS) $(CVTSUDOERS_LIBS)
-sudoreplay: timestr.lo $(REPLAY_OBJS) $(LIBUTIL) $(LIBIOLOG)
+sudoreplay: timestr.lo $(REPLAY_OBJS) $(LIBIOLOG)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(REPLAY_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) timestr.lo $(REPLAY_LIBS)
testsudoers: libparsesudoers.la $(TEST_OBJS) $(LIBUTIL)
@@ -320,15 +374,54 @@ check_hexchar: $(CHECK_HEXCHAR_OBJS) $(LIBUTIL)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_HEXCHAR_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
check_iolog_plugin: $(CHECK_IOLOG_PLUGIN_OBJS) $(LIBUTIL) $(LIBIOLOG) $(LIBLOGSRV)
- $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_PLUGIN_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBIOLOG) $(LIBEVENTLOG) $(LIBLOGSRV) @LIBTLS@
+ $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_IOLOG_PLUGIN_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBIOLOG) $(LIBLOGSRV) @LIBTLS@
check_starttime: $(CHECK_STARTTIME_OBJS) $(LIBUTIL)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_STARTTIME_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
+check_unesc: $(CHECK_UNESC_OBJS) $(LIBUTIL)
+ $(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_UNESC_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS)
+
# We need to link check_symbols with -lpthread on HP-UX since LDAP uses threads
check_symbols: $(CHECK_SYMBOLS_OBJS) $(LIBUTIL)
$(LIBTOOL) $(LTFLAGS) --mode=link $(CC) -o $@ $(CHECK_SYMBOLS_OBJS) $(CHECK_SYMBOLS_LDFLAGS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(LIBS) @SUDO_LIBS@
+fuzz_policy: $(FUZZ_POLICY_OBJS) libparsesudoers.la $(LIBEVENTLOG) $(LIBUTIL) $(LIBFUZZSTUB)
+ $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_POLICY_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) $(LIBEVENTLOG)
+
+fuzz_sudoers: $(FUZZ_SUDOERS_OBJS) libparsesudoers.la $(LIBUTIL) $(LIBFUZZSTUB)
+ $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_SUDOERS_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) $(LIBUTIL)
+
+fuzz_sudoers_ldif: $(FUZZ_SUDOERS_LDIF_OBJS) libparsesudoers.la $(LIBUTIL) $(LIBFUZZSTUB)
+ $(LIBTOOL) $(LTFLAGS) --mode=link @FUZZ_LD@ -o $@ $(FUZZ_SUDOERS_LDIF_OBJS) $(LDFLAGS) $(ASAN_LDFLAGS) $(PIE_LDFLAGS) $(SSP_LDFLAGS) $(FUZZ_LDFLAGS) $(FUZZ_LIBS) $(LIBUTIL)
+
+fuzz_policy_seed_corpus.zip:
+ tdir=fuzz_policy.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_POLICY_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
+fuzz_sudoers_seed_corpus.zip:
+ tdir=fuzz_sudoers.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_SUDOERS_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
+fuzz_sudoers_ldif_seed_corpus.zip:
+ tdir=fuzz_sudoers_ldif.$$$$; \
+ mkdir $$tdir; \
+ for f in $(FUZZ_SUDOERS_LDIF_CORPUS); do \
+ cp $$f $$tdir/`sha1sum $$f | cut -d' ' -f1`; \
+ done; \
+ zip -j $@ $$tdir/*; \
+ rm -rf $$tdir
+
GENERATED = gram.h gram.c toke.c def_data.c def_data.h getdate.c
prologue:
@@ -346,7 +439,7 @@ $(devdir)/gram.c $(devdir)/gram.h: $(srcdir)/gram.y prologue
else \
gram_y="$(srcdir)/gram.y"; \
fi; \
- cmd='$(YACC) -d -p sudoers '"$$gram_y"'; cp prologue $(devdir)/gram.c; $(SED) "s/^\\(#line .*\\) \"y\\.tab\\.c\"/\1 \"gram.c\"/" y.tab.c >> $(devdir)/gram.c; rm -f y.tab.c; mv -f y.tab.h $(devdir)/gram.h'; \
+ cmd='$(YACC) -d -p sudoers '"$$gram_y"'; cp prologue $(devdir)/gram.c; $(SED) -e "s/^\\(#line .*\\) \"y\\.tab\\.c\"/\1 \"gram.c\"/" -e "/^# *include <limits.h>/{N;s/__STDC_VERSION__ && 199901 <= __STDC_VERSION__/HAVE_STDINT_H/;}" y.tab.c >> $(devdir)/gram.c; rm -f y.tab.c; mv -f y.tab.h $(devdir)/gram.h'; \
echo "$$cmd"; eval $$cmd; \
fi
@@ -369,7 +462,7 @@ $(devdir)/getdate.c: $(srcdir)/getdate.y prologue
else \
getdate_y="$(srcdir)/getdate.y"; \
fi; \
- cmd='$(YACC) '"$$getdate_y"'; cp prologue $(devdir)/getdate.c; $(SED) "s/^\\(#line .*\\) \"y\\.tab\\.c\"/\1 \"getdate.c\"/" y.tab.c >> $(devdir)/getdate.c; rm -f y.tab.c'; \
+ cmd='$(YACC) '"$$getdate_y"'; cp prologue $(devdir)/getdate.c; $(SED) -e "s/^\\(#line .*\\) \"y\\.tab\\.c\"/\1 \"getdate.c\"/" -e "/^# *include <limits.h>/{N;s/__STDC_VERSION__ && 199901 <= __STDC_VERSION__/HAVE_STDINT_H/;}" y.tab.c >> $(devdir)/getdate.c; rm -f y.tab.c'; \
echo "$$cmd"; eval $$cmd; \
fi
@@ -425,10 +518,18 @@ install-sudoers: install-dirs
test -r $(DESTDIR)$(sudoersdir)/sudoers || \
cp -p $(DESTDIR)$(sudoersdir)/sudoers.dist $(DESTDIR)$(sudoersdir)/sudoers
+install-fuzzer: $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS)
+ @if test X"$(FUZZ_DESTDIR)" = X""; then \
+ echo "must set FUZZ_DESTDIR for install-fuzzer target"; \
+ else \
+ cp $(FUZZ_PROGS) $(FUZZ_SEED_CORPUS) $(FUZZ_DESTDIR); \
+ cp $(srcdir)/regress/fuzz/*.dict $(FUZZ_DESTDIR); \
+ fi
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(plugindir)/sudoers.la
-rm -f $(DESTDIR)$(bindir)/cvtsudoers \
- $(DESTDIR)$(bindir)/sudoreplay
+ $(DESTDIR)$(bindir)/sudoreplay \
$(DESTDIR)$(sbindir)/visudo
-test -z "$(INSTALL_BACKUP)" || \
$(DESTDIR)$(bindir)/cvtsudoers$(INSTALL_BACKUP) \
@@ -450,9 +551,39 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
-check: $(TEST_PROGS) visudo testsudoers cvtsudoers
+fuzz: $(FUZZ_PROGS)
@if test X"$(cross_compiling)" != X"yes"; then \
- LC_ALL=C; export LC_ALL; \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
+ unset LANG || LANG=; \
+ MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
+ MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
+ echo "fuzz_sudoers: verifying corpus"; \
+ mkdir -p regress/fuzz; \
+ ./fuzz_sudoers $(FUZZ_SUDOERS_CORPUS) 2>&1 | sed -e 's/^\(Running: \).*\(examples\)/\1\2/' -e 's/^\(Executed \).*\(examples.*\) in [0-9]* ms$$/\1\2/' -e 's/^\(Running: \).*\(regress\)/\1\2/' -e 's/^\(Executed \).*\(regress.*\) in [0-9]* ms$$/\1\2/' > regress/fuzz/fuzz_sudoers.out; \
+ diff $(srcdir)/regress/fuzz/fuzz_sudoers.out.ok regress/fuzz/fuzz_sudoers.out; \
+ echo "fuzz_sudoers: output in fuzz_sudoers.out"; \
+ echo "fuzz_sudoers-ldif: verifying corpus"; \
+ ./fuzz_sudoers_ldif $(FUZZ_SUDOERS_LDIF_CORPUS); \
+ echo "fuzz_policy: verifying corpus"; \
+ ./fuzz_policy $(FUZZ_POLICY_CORPUS) > regress/fuzz/fuzz_policy.out 2>&1; \
+ if [ $$? -ne 0 ]; then \
+ cat regress/fuzz/fuzz_policy.out; \
+ else \
+ echo "fuzz_policy: output in regress/fuzz/fuzz_policy.out"; \
+ fi; \
+ fi
+
+check: $(TEST_PROGS) visudo testsudoers cvtsudoers fuzz
+ @if test X"$(cross_compiling)" != X"yes"; then \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
unset LANG || LANG=; \
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
@@ -473,6 +604,7 @@ check: $(TEST_PROGS) visudo testsudoers cvtsudoers
mkdir -p regress/iolog_plugin; \
./check_iolog_plugin regress/iolog_plugin/iolog || rval=`expr $$rval + $$?`; \
./check_starttime || rval=`expr $$rval + $$?`; \
+ ./check_unesc || rval=`expr $$rval + $$?`; \
if test -f check_symbols; then \
./check_symbols .libs/sudoers.so $(shlib_exp) || rval=`expr $$rval + $$?`; \
fi; \
@@ -487,13 +619,7 @@ check: $(TEST_PROGS) visudo testsudoers cvtsudoers
ldif="regress/sudoers/$${base}.ldif"; \
sudo="regress/sudoers/$${base}.sudo"; \
ldif2sudo="regress/sudoers/$${base}.ldif2sudo"; \
- if test -s $$json.ok; then \
- ASAN_OPTIONS=; \
- else \
- ASAN_OPTIONS=detect_leaks=0; \
- fi; \
- ASAN_OPTIONS=$$ASAN_OPTIONS \
- ./testsudoers -dt <$$t >$$out 2>$$toke || true; \
+ ./testsudoers -dt <$$t >$$out 2>$$toke || true; \
if cmp $$out $(srcdir)/$$out.ok >/dev/null; then \
passed=`expr $$passed + 1`; \
echo "$$dir/$$base (parse): OK"; \
@@ -611,7 +737,7 @@ check: $(TEST_PROGS) visudo testsudoers cvtsudoers
clean:
-$(LIBTOOL) $(LTFLAGS) --mode=clean rm -f $(PROGS) $(TEST_PROGS) \
- *.lo *.o *.la
+ $(FUZZ_PROGS) *.lo *.o *.la
-rm -f *.i *.plog stamp-* core *.core core.* prologue regress/*/*.out \
regress/*/*.toke regress/*/*.err regress/*/*.json \
regress/*/*.ldif regress/*/*.ldif2sudo regress/*/*.sudo
@@ -633,6 +759,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean $(FUZZ_SEED_CORPUS)
+
# Autogenerated dependencies, do not modify
afs.lo: $(authdir)/afs.c $(authdir)/sudo_auth.h $(devdir)/def_data.h \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
@@ -724,28 +852,54 @@ audit.i: $(srcdir)/audit.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
audit.plog: audit.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/audit.c --i-file $< --output-file $@
-base64.lo: $(srcdir)/base64.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
- $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
- $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
- $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(srcdir)/defaults.h $(srcdir)/logging.h \
- $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
- $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
- $(top_builddir)/pathnames.h
- $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/base64.c
-base64.i: $(srcdir)/base64.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
- $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
- $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
- $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
- $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
- $(incdir)/sudo_util.h $(srcdir)/defaults.h $(srcdir)/logging.h \
- $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
- $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
- $(top_builddir)/pathnames.h
+b64_decode.lo: $(srcdir)/b64_decode.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/b64_decode.c
+b64_decode.i: $(srcdir)/b64_decode.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+b64_decode.plog: b64_decode.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/b64_decode.c --i-file $< --output-file $@
+b64_encode.o: $(srcdir)/b64_encode.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/b64_encode.c
+b64_encode.i: $(srcdir)/b64_encode.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
$(CC) -E -o $@ $(CPPFLAGS) $<
-base64.plog: base64.i
- rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/base64.c --i-file $< --output-file $@
+b64_encode.plog: b64_encode.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/b64_encode.c --i-file $< --output-file $@
boottime.lo: $(srcdir)/boottime.c $(devdir)/def_data.h \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
$(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
@@ -858,6 +1012,30 @@ check_addr.i: $(srcdir)/regress/parser/check_addr.c $(devdir)/def_data.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
check_addr.plog: check_addr.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/parser/check_addr.c --i-file $< --output-file $@
+check_aliases.o: $(srcdir)/check_aliases.c $(devdir)/def_data.h \
+ $(devdir)/gram.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/defaults.h \
+ $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
+ $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/check_aliases.c
+check_aliases.i: $(srcdir)/check_aliases.c $(devdir)/def_data.h \
+ $(devdir)/gram.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/defaults.h \
+ $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
+ $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+check_aliases.plog: check_aliases.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/check_aliases.c --i-file $< --output-file $@
check_base64.o: $(srcdir)/regress/parser/check_base64.c \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
$(incdir)/sudo_util.h $(top_builddir)/config.h
@@ -1028,6 +1206,30 @@ check_symbols.i: $(srcdir)/regress/check_symbols/check_symbols.c \
$(CC) -E -o $@ $(CPPFLAGS) $<
check_symbols.plog: check_symbols.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/check_symbols/check_symbols.c --i-file $< --output-file $@
+check_unesc.o: $(srcdir)/regress/unescape/check_unesc.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/unescape/check_unesc.c
+check_unesc.i: $(srcdir)/regress/unescape/check_unesc.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+check_unesc.plog: check_unesc.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/unescape/check_unesc.c --i-file $< --output-file $@
cvtsudoers.o: $(srcdir)/cvtsudoers.c $(devdir)/def_data.h $(devdir)/gram.h \
$(incdir)/compat/getopt.h $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
@@ -1382,6 +1584,132 @@ fmtsudoers.i: $(srcdir)/fmtsudoers.c $(devdir)/def_data.h $(devdir)/gram.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
fmtsudoers.plog: fmtsudoers.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/fmtsudoers.c --i-file $< --output-file $@
+fmtsudoers_cvt.lo: $(srcdir)/fmtsudoers_cvt.c $(devdir)/def_data.h \
+ $(devdir)/gram.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_lbuf.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/fmtsudoers_cvt.c
+fmtsudoers_cvt.i: $(srcdir)/fmtsudoers_cvt.c $(devdir)/def_data.h \
+ $(devdir)/gram.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_lbuf.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fmtsudoers_cvt.plog: fmtsudoers_cvt.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/fmtsudoers_cvt.c --i-file $< --output-file $@
+fuzz_policy.o: $(srcdir)/regress/fuzz/fuzz_policy.c $(devdir)/def_data.h \
+ $(incdir)/compat/getaddrinfo.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/defaults.h \
+ $(srcdir)/interfaces.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_policy.c
+fuzz_policy.i: $(srcdir)/regress/fuzz/fuzz_policy.c $(devdir)/def_data.h \
+ $(incdir)/compat/getaddrinfo.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/defaults.h \
+ $(srcdir)/interfaces.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_policy.plog: fuzz_policy.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_policy.c --i-file $< --output-file $@
+fuzz_stubs.o: $(srcdir)/regress/fuzz/fuzz_stubs.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \
+ $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_stubs.c
+fuzz_stubs.i: $(srcdir)/regress/fuzz/fuzz_stubs.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/interfaces.h $(srcdir)/logging.h \
+ $(srcdir)/parse.h $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_stubs.plog: fuzz_stubs.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_stubs.c --i-file $< --output-file $@
+fuzz_sudoers.o: $(srcdir)/regress/fuzz/fuzz_sudoers.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/interfaces.h \
+ $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
+ $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_sudoers.c
+fuzz_sudoers.i: $(srcdir)/regress/fuzz/fuzz_sudoers.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/interfaces.h \
+ $(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
+ $(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
+ $(top_builddir)/config.h $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_sudoers.plog: fuzz_sudoers.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_sudoers.c --i-file $< --output-file $@
+fuzz_sudoers_ldif.o: $(srcdir)/regress/fuzz/fuzz_sudoers_ldif.c \
+ $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/defaults.h \
+ $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/regress/fuzz/fuzz_sudoers_ldif.c
+fuzz_sudoers_ldif.i: $(srcdir)/regress/fuzz/fuzz_sudoers_ldif.c \
+ $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
+ $(incdir)/sudo_compat.h $(incdir)/sudo_conf.h \
+ $(incdir)/sudo_debug.h $(incdir)/sudo_eventlog.h \
+ $(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
+ $(incdir)/sudo_plugin.h $(incdir)/sudo_queue.h \
+ $(incdir)/sudo_util.h $(srcdir)/defaults.h \
+ $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+fuzz_sudoers_ldif.plog: fuzz_sudoers_ldif.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/regress/fuzz/fuzz_sudoers_ldif.c --i-file $< --output-file $@
fwtk.lo: $(authdir)/fwtk.c $(authdir)/sudo_auth.h $(devdir)/def_data.h \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
$(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
@@ -2352,6 +2680,30 @@ starttime.i: $(srcdir)/starttime.c $(devdir)/def_data.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
starttime.plog: starttime.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/starttime.c --i-file $< --output-file $@
+strlcpy_unesc.lo: $(srcdir)/strlcpy_unesc.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/strlcpy_unesc.c
+strlcpy_unesc.i: $(srcdir)/strlcpy_unesc.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+strlcpy_unesc.plog: strlcpy_unesc.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/strlcpy_unesc.c --i-file $< --output-file $@
strlist.lo: $(srcdir)/strlist.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_debug.h \
$(incdir)/sudo_queue.h $(incdir)/sudo_util.h $(srcdir)/strlist.h \
@@ -2364,6 +2716,30 @@ strlist.i: $(srcdir)/strlist.c $(incdir)/compat/stdbool.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
strlist.plog: strlist.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/strlist.c --i-file $< --output-file $@
+strvec_join.lo: $(srcdir)/strvec_join.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/strvec_join.c
+strvec_join.i: $(srcdir)/strvec_join.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+strvec_join.plog: strvec_join.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/strvec_join.c --i-file $< --output-file $@
stubs.o: $(srcdir)/stubs.c $(devdir)/def_data.h $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
$(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
@@ -2455,7 +2831,7 @@ sudoers.lo: $(srcdir)/sudoers.c $(devdir)/def_data.h \
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
$(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
$(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
- $(srcdir)/auth/sudo_auth.h $(srcdir)/defaults.h \
+ $(srcdir)/auth/sudo_auth.h $(srcdir)/check.h $(srcdir)/defaults.h \
$(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
$(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
$(top_builddir)/config.h $(top_builddir)/pathnames.h
@@ -2467,7 +2843,7 @@ sudoers.i: $(srcdir)/sudoers.c $(devdir)/def_data.h \
$(incdir)/sudo_fatal.h $(incdir)/sudo_gettext.h \
$(incdir)/sudo_iolog.h $(incdir)/sudo_plugin.h \
$(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
- $(srcdir)/auth/sudo_auth.h $(srcdir)/defaults.h \
+ $(srcdir)/auth/sudo_auth.h $(srcdir)/check.h $(srcdir)/defaults.h \
$(srcdir)/logging.h $(srcdir)/parse.h $(srcdir)/sudo_nss.h \
$(srcdir)/sudoers.h $(srcdir)/sudoers_debug.h \
$(top_builddir)/config.h $(top_builddir)/pathnames.h
@@ -2498,6 +2874,30 @@ sudoers_debug.i: $(srcdir)/sudoers_debug.c $(devdir)/def_data.h \
$(CC) -E -o $@ $(CPPFLAGS) $<
sudoers_debug.plog: sudoers_debug.i
rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudoers_debug.c --i-file $< --output-file $@
+sudoers_hooks.lo: $(srcdir)/sudoers_hooks.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(LIBTOOL) $(LTFLAGS) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) $(ASAN_CFLAGS) $(PIE_CFLAGS) $(SSP_CFLAGS) $(srcdir)/sudoers_hooks.c
+sudoers_hooks.i: $(srcdir)/sudoers_hooks.c $(devdir)/def_data.h \
+ $(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
+ $(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
+ $(incdir)/sudo_eventlog.h $(incdir)/sudo_fatal.h \
+ $(incdir)/sudo_gettext.h $(incdir)/sudo_plugin.h \
+ $(incdir)/sudo_queue.h $(incdir)/sudo_util.h \
+ $(srcdir)/defaults.h $(srcdir)/logging.h $(srcdir)/parse.h \
+ $(srcdir)/sudo_nss.h $(srcdir)/sudoers.h \
+ $(srcdir)/sudoers_debug.h $(top_builddir)/config.h \
+ $(top_builddir)/pathnames.h
+ $(CC) -E -o $@ $(CPPFLAGS) $<
+sudoers_hooks.plog: sudoers_hooks.i
+ rm -f $@; pvs-studio --cfg $(PVS_CFG) --sourcetree-root $(top_srcdir) --skip-cl-exe yes --source-file $(srcdir)/sudoers_hooks.c --i-file $< --output-file $@
sudoreplay.o: $(srcdir)/sudoreplay.c $(incdir)/compat/getopt.h \
$(incdir)/compat/stdbool.h $(incdir)/sudo_compat.h \
$(incdir)/sudo_conf.h $(incdir)/sudo_debug.h \
diff --git a/plugins/sudoers/alias.c b/plugins/sudoers/alias.c
index caaa984a0..bd1105cb7 100644
--- a/plugins/sudoers/alias.c
+++ b/plugins/sudoers/alias.c
@@ -127,22 +127,29 @@ alias_add(struct sudoers_parse_tree *parse_tree, char *name, int type,
a = calloc(1, sizeof(*a));
if (a == NULL)
debug_return_bool(false);
+
+ /* Only set elements used by alias_compare() in case there is a dupe. */
a->name = name;
a->type = type;
- /* a->used = false; */
- a->file = rcstr_addref(file);
- a->line = line;
- a->column = column;
- HLTQ_TO_TAILQ(&a->members, members, entries);
switch (rbinsert(parse_tree->aliases, a, NULL)) {
case 1:
- alias_free(a);
+ free(a);
errno = EEXIST;
debug_return_bool(false);
case -1:
- alias_free(a);
+ free(a);
debug_return_bool(false);
}
+
+ /*
+ * It is now safe to fill in the rest of the alias. We do this last
+ * since it modifies "file" (adds a ref) and "members" (tailq conversion).
+ */
+ /* a->used = false; */
+ a->file = rcstr_addref(file);
+ a->line = line;
+ a->column = column;
+ HLTQ_TO_TAILQ(&a->members, members, entries);
debug_return_bool(true);
}
diff --git a/plugins/sudoers/audit.c b/plugins/sudoers/audit.c
index f72c4d4cb..3ee26b89a 100644
--- a/plugins/sudoers/audit.c
+++ b/plugins/sudoers/audit.c
@@ -225,9 +225,7 @@ audit_to_eventlog(struct eventlog *evlog, char * const command_info[],
case 'i':
if (strncmp(*cur, "iolog_path=", sizeof("iolog_path=") - 1) == 0) {
evlog->iolog_path = *cur + sizeof("iolog_path=") - 1;
- evlog->iolog_file = strrchr(evlog->iolog_path, '/');
- if (evlog->iolog_file != NULL)
- evlog->iolog_file++;
+ evlog->iolog_file = sudo_basename(evlog->iolog_path);
continue;
}
break;
diff --git a/plugins/sudoers/auth/pam.c b/plugins/sudoers/auth/pam.c
index 6310364b7..e917a3cc1 100644
--- a/plugins/sudoers/auth/pam.c
+++ b/plugins/sudoers/auth/pam.c
@@ -311,6 +311,9 @@ sudo_pam_verify(struct passwd *pw, char *prompt, sudo_auth *auth, struct sudo_co
/* PAM_SILENT prevents the authentication service from generating output. */
*pam_status = pam_authenticate(pamh, PAM_SILENT);
+ /* Restore def_prompt, the passed-in prompt may be freed later. */
+ def_prompt = PASSPROMPT;
+
/* Restore KRB5CCNAME to its original value. */
if (envccname == NULL && sudo_unsetenv("KRB5CCNAME") != 0) {
sudo_debug_printf(SUDO_DEBUG_WARN|SUDO_DEBUG_LINENO,
diff --git a/plugins/sudoers/base64.c b/plugins/sudoers/b64_decode.c
index 7691aba7b..736df2827 100644
--- a/plugins/sudoers/base64.c
+++ b/plugins/sudoers/b64_decode.c
@@ -81,41 +81,3 @@ base64_decode(const char *in, unsigned char *out, size_t out_size)
}
debug_return_size_t((size_t)(out - out0));
}
-
-static const unsigned char base64enc_tab[64] =
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
-
-size_t
-base64_encode(const unsigned char *in, size_t in_len, char *out, size_t out_len)
-{
- size_t ii, io;
- unsigned int rem, v;
- debug_decl(base64_encode, SUDOERS_DEBUG_MATCH);
-
- for (io = 0, ii = 0, v = 0, rem = 0; ii < in_len; ii++) {
- unsigned char ch = in[ii];
- v = (v << 8) | ch;
- rem += 8;
- while (rem >= 6) {
- rem -= 6;
- if (io >= out_len)
- debug_return_size_t((size_t)-1); /* truncation is failure */
- out[io++] = base64enc_tab[(v >> rem) & 63];
- }
- }
- if (rem != 0) {
- v <<= (6 - rem);
- if (io >= out_len)
- debug_return_size_t((size_t)-1); /* truncation is failure */
- out[io++] = base64enc_tab[v&63];
- }
- while (io & 3) {
- if (io >= out_len)
- debug_return_size_t((size_t)-1); /* truncation is failure */
- out[io++] = '=';
- }
- if (io >= out_len)
- debug_return_size_t((size_t)-1); /* no room for NUL terminator */
- out[io] = '\0';
- debug_return_size_t(io);
-}
diff --git a/plugins/sudoers/b64_encode.c b/plugins/sudoers/b64_encode.c
new file mode 100644
index 000000000..8832ba91a
--- /dev/null
+++ b/plugins/sudoers/b64_encode.c
@@ -0,0 +1,64 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2013-2018 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include "sudoers.h"
+
+static const unsigned char base64enc_tab[64] =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+size_t
+base64_encode(const unsigned char *in, size_t in_len, char *out, size_t out_len)
+{
+ size_t ii, io;
+ unsigned int rem, v;
+ debug_decl(base64_encode, SUDOERS_DEBUG_MATCH);
+
+ for (io = 0, ii = 0, v = 0, rem = 0; ii < in_len; ii++) {
+ unsigned char ch = in[ii];
+ v = (v << 8) | ch;
+ rem += 8;
+ while (rem >= 6) {
+ rem -= 6;
+ if (io >= out_len)
+ debug_return_size_t((size_t)-1); /* truncation is failure */
+ out[io++] = base64enc_tab[(v >> rem) & 63];
+ }
+ }
+ if (rem != 0) {
+ v <<= (6 - rem);
+ if (io >= out_len)
+ debug_return_size_t((size_t)-1); /* truncation is failure */
+ out[io++] = base64enc_tab[v&63];
+ }
+ while (io & 3) {
+ if (io >= out_len)
+ debug_return_size_t((size_t)-1); /* truncation is failure */
+ out[io++] = '=';
+ }
+ if (io >= out_len)
+ debug_return_size_t((size_t)-1); /* no room for NUL terminator */
+ out[io] = '\0';
+ debug_return_size_t(io);
+}
diff --git a/plugins/sudoers/check.h b/plugins/sudoers/check.h
index 39c61fc49..e4970008f 100644
--- a/plugins/sudoers/check.h
+++ b/plugins/sudoers/check.h
@@ -85,5 +85,6 @@ int timestamp_status(void *vcookie, struct passwd *pw);
int get_starttime(pid_t pid, struct timespec *starttime);
bool already_lectured(int status);
int set_lectured(void);
+int create_admin_success_flag(void);
#endif /* SUDOERS_CHECK_H */
diff --git a/plugins/sudoers/check_aliases.c b/plugins/sudoers/check_aliases.c
new file mode 100644
index 000000000..1c29e0501
--- /dev/null
+++ b/plugins/sudoers/check_aliases.c
@@ -0,0 +1,149 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2004-2005, 2007-2018 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "sudoers.h"
+#include <gram.h>
+
+static int
+check_alias(struct sudoers_parse_tree *parse_tree, char *name, int type,
+ char *file, int line, int column, bool strict, bool quiet)
+{
+ struct member *m;
+ struct alias *a;
+ int errors = 0;
+ debug_decl(check_alias, SUDOERS_DEBUG_ALIAS);
+
+ if ((a = alias_get(parse_tree, name, type)) != NULL) {
+ /* check alias contents */
+ TAILQ_FOREACH(m, &a->members, entries) {
+ if (m->type != ALIAS)
+ continue;
+ errors += check_alias(parse_tree, m->name, type, a->file, a->line,
+ a->column, strict, quiet);
+ }
+ alias_put(a);
+ } else {
+ if (!quiet) {
+ if (errno == ELOOP) {
+ fprintf(stderr, strict ?
+ U_("Error: %s:%d:%d: cycle in %s \"%s\"") :
+ U_("Warning: %s:%d:%d: cycle in %s \"%s\""),
+ file, line, column, alias_type_to_string(type), name);
+ } else {
+ fprintf(stderr, strict ?
+ U_("Error: %s:%d:%d: %s \"%s\" referenced but not defined") :
+ U_("Warning: %s:%d:%d: %s \"%s\" referenced but not defined"),
+ file, line, column, alias_type_to_string(type), name);
+ }
+ fputc('\n', stderr);
+ if (strict && errorfile == NULL) {
+ errorfile = rcstr_addref(file);
+ errorlineno = line;
+ }
+ }
+ errors++;
+ }
+
+ debug_return_int(errors);
+}
+
+/*
+ * Iterate through the sudoers datastructures looking for undefined
+ * aliases or unused aliases.
+ */
+int
+check_aliases(struct sudoers_parse_tree *parse_tree, bool strict, bool quiet,
+ int (*cb_unused)(struct sudoers_parse_tree *, struct alias *, void *))
+{
+ struct rbtree *used_aliases;
+ struct cmndspec *cs;
+ struct member *m;
+ struct privilege *priv;
+ struct userspec *us;
+ int errors = 0;
+ debug_decl(check_aliases, SUDOERS_DEBUG_ALIAS);
+
+ used_aliases = alloc_aliases();
+ if (used_aliases == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_int(-1);
+ }
+
+ /* Forward check. */
+ TAILQ_FOREACH(us, &parse_tree->userspecs, entries) {
+ TAILQ_FOREACH(m, &us->users, entries) {
+ if (m->type == ALIAS) {
+ errors += check_alias(parse_tree, m->name, USERALIAS,
+ us->file, us->line, us->column, strict, quiet);
+ }
+ }
+ TAILQ_FOREACH(priv, &us->privileges, entries) {
+ TAILQ_FOREACH(m, &priv->hostlist, entries) {
+ if (m->type == ALIAS) {
+ errors += check_alias(parse_tree, m->name, HOSTALIAS,
+ us->file, us->line, us->column, strict, quiet);
+ }
+ }
+ TAILQ_FOREACH(cs, &priv->cmndlist, entries) {
+ if (cs->runasuserlist != NULL) {
+ TAILQ_FOREACH(m, cs->runasuserlist, entries) {
+ if (m->type == ALIAS) {
+ errors += check_alias(parse_tree, m->name, RUNASALIAS,
+ us->file, us->line, us->column, strict, quiet);
+ }
+ }
+ }
+ if (cs->runasgrouplist != NULL) {
+ TAILQ_FOREACH(m, cs->runasgrouplist, entries) {
+ if (m->type == ALIAS) {
+ errors += check_alias(parse_tree, m->name, RUNASALIAS,
+ us->file, us->line, us->column, strict, quiet);
+ }
+ }
+ }
+ if ((m = cs->cmnd)->type == ALIAS) {
+ errors += check_alias(parse_tree, m->name, CMNDALIAS,
+ us->file, us->line, us->column, strict, quiet);
+ }
+ }
+ }
+ }
+
+ /* Reverse check (destructive) */
+ if (!alias_find_used(parse_tree, used_aliases))
+ errors++;
+ free_aliases(used_aliases);
+
+ /* If all aliases were referenced we will have an empty tree. */
+ if (!no_aliases(parse_tree))
+ alias_apply(parse_tree, cb_unused, &quiet);
+
+ debug_return_int(strict ? errors : 0);
+}
diff --git a/plugins/sudoers/cvtsudoers.c b/plugins/sudoers/cvtsudoers.c
index 5d1ccdd0c..cebe5652e 100644
--- a/plugins/sudoers/cvtsudoers.c
+++ b/plugins/sudoers/cvtsudoers.c
@@ -609,16 +609,21 @@ parse_ldif(struct sudoers_parse_tree *parse_tree, const char *input_file,
struct cvtsudoers_config *conf)
{
FILE *fp = stdin;
+ bool ret = false;
debug_decl(parse_ldif, SUDOERS_DEBUG_UTIL);
/* Open LDIF file and parse it. */
if (strcmp(input_file, "-") != 0) {
if ((fp = fopen(input_file, "r")) == NULL)
- sudo_fatal(U_("unable to open %s"), input_file);
+ sudo_warn(U_("unable to open %s"), input_file);
}
-
- debug_return_bool(sudoers_parse_ldif(parse_tree, fp, conf->sudoers_base,
- conf->store_options));
+ if (fp != NULL) {
+ ret = sudoers_parse_ldif(parse_tree, fp, conf->sudoers_base,
+ conf->store_options);
+ if (fp != stdin)
+ fclose(fp);
+ }
+ debug_return_bool(ret);
}
static bool
diff --git a/plugins/sudoers/def_data.c b/plugins/sudoers/def_data.c
index 56cd22468..5952a069e 100644
--- a/plugins/sudoers/def_data.c
+++ b/plugins/sudoers/def_data.c
@@ -574,6 +574,10 @@ struct sudo_defs_types sudo_defs_table[] = {
N_("Enable SELinux RBAC support"),
NULL,
}, {
+ "admin_flag", T_STR|T_BOOL|T_CHPATH,
+ N_("Path to the file that is created the first time sudo is run: %s"),
+ NULL,
+ }, {
NULL, 0, NULL
}
};
diff --git a/plugins/sudoers/def_data.h b/plugins/sudoers/def_data.h
index 5c712b82f..fb3f8aa4b 100644
--- a/plugins/sudoers/def_data.h
+++ b/plugins/sudoers/def_data.h
@@ -264,6 +264,8 @@
#define def_log_format (sudo_defs_table[I_LOG_FORMAT].sd_un.tuple)
#define I_SELINUX 131
#define def_selinux (sudo_defs_table[I_SELINUX].sd_un.flag)
+#define I_ADMIN_FLAG 132
+#define def_admin_flag (sudo_defs_table[I_ADMIN_FLAG].sd_un.str)
enum def_tuple {
never,
diff --git a/plugins/sudoers/def_data.in b/plugins/sudoers/def_data.in
index e8162e833..3183fae18 100644
--- a/plugins/sudoers/def_data.in
+++ b/plugins/sudoers/def_data.in
@@ -412,3 +412,6 @@ log_format
selinux
T_FLAG
"Enable SELinux RBAC support"
+admin_flag
+ T_STR|T_BOOL|T_CHPATH
+ "Path to the file that is created the first time sudo is run: %s"
diff --git a/plugins/sudoers/defaults.c b/plugins/sudoers/defaults.c
index 8bc48b798..fd25579f0 100644
--- a/plugins/sudoers/defaults.c
+++ b/plugins/sudoers/defaults.c
@@ -532,6 +532,10 @@ init_defaults(void)
#ifdef HAVE_INNETGR
def_use_netgroups = true;
#endif
+#ifdef _PATH_SUDO_ADMIN_FLAG
+ if ((def_admin_flag = strdup(_PATH_SUDO_ADMIN_FLAG)) == NULL)
+ goto oom;
+#endif
def_netgroup_tuple = false;
def_sudoedit_checkdir = true;
def_iolog_mode = S_IRUSR|S_IWUSR;
@@ -682,7 +686,6 @@ default_binding_matches(struct sudoers_parse_tree *parse_tree,
switch (d->type) {
case DEFAULTS:
debug_return_bool(true);
- break;
case DEFAULTS_USER:
if (userlist_matches(parse_tree, sudo_user.pw, d->binding) == ALLOW)
debug_return_bool(true);
@@ -852,10 +855,13 @@ store_timespec(const char *str, union sudo_defs_val *sd_un)
while (*str != '\0' && *str != '.') {
if (!isdigit((unsigned char)*str))
debug_return_bool(false); /* invalid number */
- if (ts.tv_sec > TIME_T_MAX / 10)
+
+ /* Verify (ts.tv_sec * 10) + digit <= TIME_T_MAX. */
+ i = *str++ - '0';
+ if (ts.tv_sec > (TIME_T_MAX - i) / 10)
debug_return_bool(false); /* overflow */
ts.tv_sec *= 10;
- ts.tv_sec += *str++ - '0';
+ ts.tv_sec += i;
}
if (*str++ == '.') {
/* Convert optional fractional component to nanosecs. */
diff --git a/plugins/sudoers/env.c b/plugins/sudoers/env.c
index a5b9f8487..a617408ff 100644
--- a/plugins/sudoers/env.c
+++ b/plugins/sudoers/env.c
@@ -239,6 +239,7 @@ env_init(char * const envp[])
if (envp == NULL) {
/* Free the old envp we allocated, if any. */
+ sudoers_gc_remove(GC_PTR, env.old_envp);
free(env.old_envp);
/* Reset to initial state but keep a pointer to what we allocated. */
@@ -261,6 +262,7 @@ env_init(char * const envp[])
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
debug_return_bool(false);
}
+ sudoers_gc_add(GC_PTR, env.envp);
#ifdef ENV_DEBUG
memset(env.envp, 0, env.env_size * sizeof(char *));
#endif
@@ -268,6 +270,7 @@ env_init(char * const envp[])
env.envp[len] = NULL;
/* Free the old envp we allocated, if any. */
+ sudoers_gc_remove(GC_PTR, env.old_envp);
free(env.old_envp);
env.old_envp = NULL;
}
@@ -307,7 +310,7 @@ env_swap_old(void)
* Will only overwrite an existing variable if overwrite is set.
* Does not include warnings or debugging to avoid recursive calls.
*/
-static int
+int
sudo_putenv_nodebug(char *str, bool dupcheck, bool overwrite)
{
char **ep;
@@ -332,9 +335,13 @@ sudo_putenv_nodebug(char *str, bool dupcheck, bool overwrite)
errno = EOVERFLOW;
return -1;
}
+ sudoers_gc_remove(GC_PTR, env.envp);
nenvp = reallocarray(env.envp, nsize, sizeof(char *));
- if (nenvp == NULL)
+ if (nenvp == NULL) {
+ sudoers_gc_add(GC_PTR, env.envp);
return -1;
+ }
+ sudoers_gc_add(GC_PTR, nenvp);
env.envp = nenvp;
env.env_size = nsize;
#ifdef ENV_DEBUG
@@ -456,59 +463,10 @@ sudo_setenv(const char *var, const char *val, int overwrite)
}
/*
- * Similar to setenv(3) but operates on a private copy of the environment.
- * Does not include warnings or debugging to avoid recursive calls.
- */
-static int
-sudo_setenv_nodebug(const char *var, const char *val, int overwrite)
-{
- char *ep, *estring = NULL;
- const char *cp;
- size_t esize;
- int ret = -1;
-
- if (var == NULL || *var == '\0') {
- errno = EINVAL;
- goto done;
- }
-
- /*
- * POSIX says a var name with '=' is an error but BSD
- * just ignores the '=' and anything after it.
- */
- for (cp = var; *cp && *cp != '='; cp++)
- continue;
- esize = (size_t)(cp - var) + 2;
- if (val) {
- esize += strlen(val); /* glibc treats a NULL val as "" */
- }
-
- /* Allocate and fill in estring. */
- if ((estring = ep = malloc(esize)) == NULL)
- goto done;
- for (cp = var; *cp && *cp != '='; cp++)
- *ep++ = *cp;
- *ep++ = '=';
- if (val) {
- for (cp = val; *cp; cp++)
- *ep++ = *cp;
- }
- *ep = '\0';
-
- ret = sudo_putenv_nodebug(estring, true, overwrite);
-done:
- if (ret == -1)
- free(estring);
- else
- sudoers_gc_add(GC_PTR, estring);
- return ret;
-}
-
-/*
* Similar to unsetenv(3) but operates on a private copy of the environment.
* Does not include warnings or debugging to avoid recursive calls.
*/
-static int
+int
sudo_unsetenv_nodebug(const char *var)
{
char **ep = env.envp;
@@ -555,7 +513,7 @@ sudo_unsetenv(const char *name)
* Similar to getenv(3) but operates on a private copy of the environment.
* Does not include warnings or debugging to avoid recursive calls.
*/
-static char *
+char *
sudo_getenv_nodebug(const char *name)
{
char **ep, *val = NULL;
@@ -893,6 +851,7 @@ rebuild_env(void)
didvar = 0;
env.env_len = 0;
env.env_size = 128;
+ sudoers_gc_remove(GC_PTR, env.old_envp);
free(env.old_envp);
env.old_envp = env.envp;
env.envp = reallocarray(NULL, env.env_size, sizeof(char *));
@@ -902,6 +861,7 @@ rebuild_env(void)
env.env_size = 0;
goto bad;
}
+ sudoers_gc_add(GC_PTR, env.envp);
#ifdef ENV_DEBUG
memset(env.envp, 0, env.env_size * sizeof(char *));
#else
@@ -1434,73 +1394,3 @@ init_envtables(void)
}
debug_return_bool(true);
}
-
-int
-sudoers_hook_getenv(const char *name, char **value, void *closure)
-{
- static bool in_progress = false; /* avoid recursion */
-
- if (in_progress || env.envp == NULL)
- return SUDO_HOOK_RET_NEXT;
-
- in_progress = true;
-
- /* Hack to make GNU gettext() find the sudoers locale when needed. */
- if (*name == 'L' && sudoers_getlocale() == SUDOERS_LOCALE_SUDOERS) {
- if (strcmp(name, "LANGUAGE") == 0 || strcmp(name, "LANG") == 0) {
- *value = NULL;
- goto done;
- }
- if (strcmp(name, "LC_ALL") == 0 || strcmp(name, "LC_MESSAGES") == 0) {
- *value = def_sudoers_locale;
- goto done;
- }
- }
-
- *value = sudo_getenv_nodebug(name);
-done:
- in_progress = false;
- return SUDO_HOOK_RET_STOP;
-}
-
-int
-sudoers_hook_putenv(char *string, void *closure)
-{
- static bool in_progress = false; /* avoid recursion */
-
- if (in_progress || env.envp == NULL)
- return SUDO_HOOK_RET_NEXT;
-
- in_progress = true;
- sudo_putenv_nodebug(string, true, true);
- in_progress = false;
- return SUDO_HOOK_RET_STOP;
-}
-
-int
-sudoers_hook_setenv(const char *name, const char *value, int overwrite, void *closure)
-{
- static bool in_progress = false; /* avoid recursion */
-
- if (in_progress || env.envp == NULL)
- return SUDO_HOOK_RET_NEXT;
-
- in_progress = true;
- sudo_setenv_nodebug(name, value, overwrite);
- in_progress = false;
- return SUDO_HOOK_RET_STOP;
-}
-
-int
-sudoers_hook_unsetenv(const char *name, void *closure)
-{
- static bool in_progress = false; /* avoid recursion */
-
- if (in_progress || env.envp == NULL)
- return SUDO_HOOK_RET_NEXT;
-
- in_progress = true;
- sudo_unsetenv_nodebug(name);
- in_progress = false;
- return SUDO_HOOK_RET_STOP;
-}
diff --git a/plugins/sudoers/exptilde.c b/plugins/sudoers/exptilde.c
index 4a21a3225..bbdd09dbc 100644
--- a/plugins/sudoers/exptilde.c
+++ b/plugins/sudoers/exptilde.c
@@ -86,7 +86,7 @@ expand_tilde(char **path, const char *user)
debug_return_bool(false);
}
- len = asprintf(&npath, "%s%s%s", pw->pw_dir, slash ? "/" : "", opath);
+ len = asprintf(&npath, "%s%s%s", pw->pw_dir, *opath ? "/" : "", opath);
sudo_pw_delref(pw);
if (len == -1) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
diff --git a/plugins/sudoers/find_path.c b/plugins/sudoers/find_path.c
index 5c44b4ff2..e1b6a0135 100644
--- a/plugins/sudoers/find_path.c
+++ b/plugins/sudoers/find_path.c
@@ -57,18 +57,13 @@ cmnd_allowed(char *cmnd, size_t cmnd_size, const char *runchroot,
debug_return_bool(true); /* nothing to check */
/* We compare the base names to avoid excessive stat()ing. */
- if ((cmnd_base = strrchr(cmnd, '/')) == NULL)
- debug_return_bool(false); /* can't happen */
- cmnd_base++;
+ cmnd_base = sudo_basename(cmnd);
for (al = allowlist; *al != NULL; al++) {
const char *base, *path = *al;
struct stat sb;
- if ((base = strrchr(path, '/')) == NULL)
- continue; /* XXX - warn? */
- base++;
-
+ base = sudo_basename(path);
if (strcmp(cmnd_base, base) != 0)
continue;
diff --git a/plugins/sudoers/fmtsudoers.c b/plugins/sudoers/fmtsudoers.c
index 07961a485..9ab1473f2 100644
--- a/plugins/sudoers/fmtsudoers.c
+++ b/plugins/sudoers/fmtsudoers.c
@@ -269,130 +269,6 @@ sudoers_format_cmndspec(struct sudo_lbuf *lbuf,
}
/*
- * Write a privilege to lbuf in sudoers format.
- */
-bool
-sudoers_format_privilege(struct sudo_lbuf *lbuf,
- struct sudoers_parse_tree *parse_tree, struct privilege *priv,
- bool expand_aliases)
-{
- struct cmndspec *cs, *prev_cs;
- struct cmndtag tags;
- struct member *m;
- debug_decl(sudoers_format_privilege, SUDOERS_DEBUG_UTIL);
-
- /* Convert per-privilege defaults to tags. */
- sudoers_defaults_list_to_tags(&priv->defaults, &tags);
-
- /* Print hosts list. */
- TAILQ_FOREACH(m, &priv->hostlist, entries) {
- if (m != TAILQ_FIRST(&priv->hostlist))
- sudo_lbuf_append(lbuf, ", ");
- sudoers_format_member(lbuf, parse_tree, m, ", ",
- expand_aliases ? HOSTALIAS : UNSPEC);
- }
-
- /* Print commands. */
- sudo_lbuf_append(lbuf, " = ");
- prev_cs = NULL;
- TAILQ_FOREACH(cs, &priv->cmndlist, entries) {
- if (prev_cs == NULL || RUNAS_CHANGED(cs, prev_cs)) {
- if (cs != TAILQ_FIRST(&priv->cmndlist))
- sudo_lbuf_append(lbuf, ", ");
- if (cs->runasuserlist != NULL || cs->runasgrouplist != NULL)
- sudo_lbuf_append(lbuf, "(");
- if (cs->runasuserlist != NULL) {
- TAILQ_FOREACH(m, cs->runasuserlist, entries) {
- if (m != TAILQ_FIRST(cs->runasuserlist))
- sudo_lbuf_append(lbuf, ", ");
- sudoers_format_member(lbuf, parse_tree, m, ", ",
- expand_aliases ? RUNASALIAS : UNSPEC);
- }
- }
- if (cs->runasgrouplist != NULL) {
- sudo_lbuf_append(lbuf, " : ");
- TAILQ_FOREACH(m, cs->runasgrouplist, entries) {
- if (m != TAILQ_FIRST(cs->runasgrouplist))
- sudo_lbuf_append(lbuf, ", ");
- sudoers_format_member(lbuf, parse_tree, m, ", ",
- expand_aliases ? RUNASALIAS : UNSPEC);
- }
- }
- if (cs->runasuserlist != NULL || cs->runasgrouplist != NULL)
- sudo_lbuf_append(lbuf, ") ");
- } else if (cs != TAILQ_FIRST(&priv->cmndlist)) {
- sudo_lbuf_append(lbuf, ", ");
- }
- sudoers_format_cmndspec(lbuf, parse_tree, cs, prev_cs, tags,
- expand_aliases);
- prev_cs = cs;
- }
-
- debug_return_bool(!sudo_lbuf_error(lbuf));
-}
-
-/*
- * Write a userspec to lbuf in sudoers format.
- */
-bool
-sudoers_format_userspec(struct sudo_lbuf *lbuf,
- struct sudoers_parse_tree *parse_tree,
- struct userspec *us, bool expand_aliases)
-{
- struct privilege *priv;
- struct sudoers_comment *comment;
- struct member *m;
- debug_decl(sudoers_format_userspec, SUDOERS_DEBUG_UTIL);
-
- /* Print comments (if any). */
- STAILQ_FOREACH(comment, &us->comments, entries) {
- sudo_lbuf_append(lbuf, "# %s\n", comment->str);
- }
-
- /* Print users list. */
- TAILQ_FOREACH(m, &us->users, entries) {
- if (m != TAILQ_FIRST(&us->users))
- sudo_lbuf_append(lbuf, ", ");
- sudoers_format_member(lbuf, parse_tree, m, ", ",
- expand_aliases ? USERALIAS : UNSPEC);
- }
-
- TAILQ_FOREACH(priv, &us->privileges, entries) {
- if (priv != TAILQ_FIRST(&us->privileges))
- sudo_lbuf_append(lbuf, " : ");
- else
- sudo_lbuf_append(lbuf, " ");
- if (!sudoers_format_privilege(lbuf, parse_tree, priv, expand_aliases))
- break;
- }
- sudo_lbuf_append(lbuf, "\n");
-
- debug_return_bool(!sudo_lbuf_error(lbuf));
-}
-
-/*
- * Write a userspec_list to lbuf in sudoers format.
- */
-bool
-sudoers_format_userspecs(struct sudo_lbuf *lbuf,
- struct sudoers_parse_tree *parse_tree, const char *separator,
- bool expand_aliases, bool flush)
-{
- struct userspec *us;
- debug_decl(sudoers_format_userspecs, SUDOERS_DEBUG_UTIL);
-
- TAILQ_FOREACH(us, &parse_tree->userspecs, entries) {
- if (separator != NULL && us != TAILQ_FIRST(&parse_tree->userspecs))
- sudo_lbuf_append(lbuf, "%s", separator);
- if (!sudoers_format_userspec(lbuf, parse_tree, us, expand_aliases))
- break;
- sudo_lbuf_print(lbuf);
- }
-
- debug_return_bool(!sudo_lbuf_error(lbuf));
-}
-
-/*
* Format and append a defaults entry to the specified lbuf.
*/
bool
@@ -414,65 +290,3 @@ sudoers_format_default(struct sudo_lbuf *lbuf, struct defaults *d)
}
debug_return_bool(!sudo_lbuf_error(lbuf));
}
-
-/*
- * Format and append a defaults line to the specified lbuf.
- * If next, is specified, it must point to the next defaults
- * entry in the list; this is used to print multiple defaults
- * entries with the same binding on a single line.
- */
-bool
-sudoers_format_default_line( struct sudo_lbuf *lbuf,
- struct sudoers_parse_tree *parse_tree, struct defaults *d,
- struct defaults **next, bool expand_aliases)
-{
- struct member *m;
- int alias_type;
- debug_decl(sudoers_format_default_line, SUDOERS_DEBUG_UTIL);
-
- /* Print Defaults type and binding (if present) */
- switch (d->type) {
- case DEFAULTS_HOST:
- sudo_lbuf_append(lbuf, "Defaults@");
- alias_type = expand_aliases ? HOSTALIAS : UNSPEC;
- break;
- case DEFAULTS_USER:
- sudo_lbuf_append(lbuf, "Defaults:");
- alias_type = expand_aliases ? USERALIAS : UNSPEC;
- break;
- case DEFAULTS_RUNAS:
- sudo_lbuf_append(lbuf, "Defaults>");
- alias_type = expand_aliases ? RUNASALIAS : UNSPEC;
- break;
- case DEFAULTS_CMND:
- sudo_lbuf_append(lbuf, "Defaults!");
- alias_type = expand_aliases ? CMNDALIAS : UNSPEC;
- break;
- default:
- sudo_lbuf_append(lbuf, "Defaults");
- alias_type = UNSPEC;
- break;
- }
- TAILQ_FOREACH(m, d->binding, entries) {
- if (m != TAILQ_FIRST(d->binding))
- sudo_lbuf_append(lbuf, ", ");
- sudoers_format_member(lbuf, parse_tree, m, ", ", alias_type);
- }
-
- sudo_lbuf_append(lbuf, " ");
- sudoers_format_default(lbuf, d);
-
- if (next != NULL) {
- /* Merge Defaults with the same binding, there may be multiple. */
- struct defaults *n;
- while ((n = TAILQ_NEXT(d, entries)) && d->binding == n->binding) {
- sudo_lbuf_append(lbuf, ", ");
- sudoers_format_default(lbuf, n);
- d = n;
- }
- *next = n;
- }
- sudo_lbuf_append(lbuf, "\n");
-
- debug_return_bool(!sudo_lbuf_error(lbuf));
-}
diff --git a/plugins/sudoers/fmtsudoers_cvt.c b/plugins/sudoers/fmtsudoers_cvt.c
new file mode 100644
index 000000000..a7f95d0ad
--- /dev/null
+++ b/plugins/sudoers/fmtsudoers_cvt.c
@@ -0,0 +1,219 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2004-2005, 2007-2020 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+
+#include "sudoers.h"
+#include "sudo_lbuf.h"
+#include <gram.h>
+
+/*
+ * Write a privilege to lbuf in sudoers format.
+ */
+bool
+sudoers_format_privilege(struct sudo_lbuf *lbuf,
+ struct sudoers_parse_tree *parse_tree, struct privilege *priv,
+ bool expand_aliases)
+{
+ struct cmndspec *cs, *prev_cs;
+ struct cmndtag tags;
+ struct member *m;
+ debug_decl(sudoers_format_privilege, SUDOERS_DEBUG_UTIL);
+
+ /* Convert per-privilege defaults to tags. */
+ sudoers_defaults_list_to_tags(&priv->defaults, &tags);
+
+ /* Print hosts list. */
+ TAILQ_FOREACH(m, &priv->hostlist, entries) {
+ if (m != TAILQ_FIRST(&priv->hostlist))
+ sudo_lbuf_append(lbuf, ", ");
+ sudoers_format_member(lbuf, parse_tree, m, ", ",
+ expand_aliases ? HOSTALIAS : UNSPEC);
+ }
+
+ /* Print commands. */
+ sudo_lbuf_append(lbuf, " = ");
+ prev_cs = NULL;
+ TAILQ_FOREACH(cs, &priv->cmndlist, entries) {
+ if (prev_cs == NULL || RUNAS_CHANGED(cs, prev_cs)) {
+ if (cs != TAILQ_FIRST(&priv->cmndlist))
+ sudo_lbuf_append(lbuf, ", ");
+ if (cs->runasuserlist != NULL || cs->runasgrouplist != NULL)
+ sudo_lbuf_append(lbuf, "(");
+ if (cs->runasuserlist != NULL) {
+ TAILQ_FOREACH(m, cs->runasuserlist, entries) {
+ if (m != TAILQ_FIRST(cs->runasuserlist))
+ sudo_lbuf_append(lbuf, ", ");
+ sudoers_format_member(lbuf, parse_tree, m, ", ",
+ expand_aliases ? RUNASALIAS : UNSPEC);
+ }
+ }
+ if (cs->runasgrouplist != NULL) {
+ sudo_lbuf_append(lbuf, " : ");
+ TAILQ_FOREACH(m, cs->runasgrouplist, entries) {
+ if (m != TAILQ_FIRST(cs->runasgrouplist))
+ sudo_lbuf_append(lbuf, ", ");
+ sudoers_format_member(lbuf, parse_tree, m, ", ",
+ expand_aliases ? RUNASALIAS : UNSPEC);
+ }
+ }
+ if (cs->runasuserlist != NULL || cs->runasgrouplist != NULL)
+ sudo_lbuf_append(lbuf, ") ");
+ } else if (cs != TAILQ_FIRST(&priv->cmndlist)) {
+ sudo_lbuf_append(lbuf, ", ");
+ }
+ sudoers_format_cmndspec(lbuf, parse_tree, cs, prev_cs, tags,
+ expand_aliases);
+ prev_cs = cs;
+ }
+
+ debug_return_bool(!sudo_lbuf_error(lbuf));
+}
+
+/*
+ * Write a userspec to lbuf in sudoers format.
+ */
+bool
+sudoers_format_userspec(struct sudo_lbuf *lbuf,
+ struct sudoers_parse_tree *parse_tree,
+ struct userspec *us, bool expand_aliases)
+{
+ struct privilege *priv;
+ struct sudoers_comment *comment;
+ struct member *m;
+ debug_decl(sudoers_format_userspec, SUDOERS_DEBUG_UTIL);
+
+ /* Print comments (if any). */
+ STAILQ_FOREACH(comment, &us->comments, entries) {
+ sudo_lbuf_append(lbuf, "# %s\n", comment->str);
+ }
+
+ /* Print users list. */
+ TAILQ_FOREACH(m, &us->users, entries) {
+ if (m != TAILQ_FIRST(&us->users))
+ sudo_lbuf_append(lbuf, ", ");
+ sudoers_format_member(lbuf, parse_tree, m, ", ",
+ expand_aliases ? USERALIAS : UNSPEC);
+ }
+
+ TAILQ_FOREACH(priv, &us->privileges, entries) {
+ if (priv != TAILQ_FIRST(&us->privileges))
+ sudo_lbuf_append(lbuf, " : ");
+ else
+ sudo_lbuf_append(lbuf, " ");
+ if (!sudoers_format_privilege(lbuf, parse_tree, priv, expand_aliases))
+ break;
+ }
+ sudo_lbuf_append(lbuf, "\n");
+
+ debug_return_bool(!sudo_lbuf_error(lbuf));
+}
+
+/*
+ * Write a userspec_list to lbuf in sudoers format.
+ */
+bool
+sudoers_format_userspecs(struct sudo_lbuf *lbuf,
+ struct sudoers_parse_tree *parse_tree, const char *separator,
+ bool expand_aliases, bool flush)
+{
+ struct userspec *us;
+ debug_decl(sudoers_format_userspecs, SUDOERS_DEBUG_UTIL);
+
+ TAILQ_FOREACH(us, &parse_tree->userspecs, entries) {
+ if (separator != NULL && us != TAILQ_FIRST(&parse_tree->userspecs))
+ sudo_lbuf_append(lbuf, "%s", separator);
+ if (!sudoers_format_userspec(lbuf, parse_tree, us, expand_aliases))
+ break;
+ sudo_lbuf_print(lbuf);
+ }
+
+ debug_return_bool(!sudo_lbuf_error(lbuf));
+}
+
+/*
+ * Format and append a defaults line to the specified lbuf.
+ * If next, is specified, it must point to the next defaults
+ * entry in the list; this is used to print multiple defaults
+ * entries with the same binding on a single line.
+ */
+bool
+sudoers_format_default_line(struct sudo_lbuf *lbuf,
+ struct sudoers_parse_tree *parse_tree, struct defaults *d,
+ struct defaults **next, bool expand_aliases)
+{
+ struct member *m;
+ int alias_type;
+ debug_decl(sudoers_format_default_line, SUDOERS_DEBUG_UTIL);
+
+ /* Print Defaults type and binding (if present) */
+ switch (d->type) {
+ case DEFAULTS_HOST:
+ sudo_lbuf_append(lbuf, "Defaults@");
+ alias_type = expand_aliases ? HOSTALIAS : UNSPEC;
+ break;
+ case DEFAULTS_USER:
+ sudo_lbuf_append(lbuf, "Defaults:");
+ alias_type = expand_aliases ? USERALIAS : UNSPEC;
+ break;
+ case DEFAULTS_RUNAS:
+ sudo_lbuf_append(lbuf, "Defaults>");
+ alias_type = expand_aliases ? RUNASALIAS : UNSPEC;
+ break;
+ case DEFAULTS_CMND:
+ sudo_lbuf_append(lbuf, "Defaults!");
+ alias_type = expand_aliases ? CMNDALIAS : UNSPEC;
+ break;
+ default:
+ sudo_lbuf_append(lbuf, "Defaults");
+ alias_type = UNSPEC;
+ break;
+ }
+ TAILQ_FOREACH(m, d->binding, entries) {
+ if (m != TAILQ_FIRST(d->binding))
+ sudo_lbuf_append(lbuf, ", ");
+ sudoers_format_member(lbuf, parse_tree, m, ", ", alias_type);
+ }
+
+ sudo_lbuf_append(lbuf, " ");
+ sudoers_format_default(lbuf, d);
+
+ if (next != NULL) {
+ /* Merge Defaults with the same binding, there may be multiple. */
+ struct defaults *n;
+ while ((n = TAILQ_NEXT(d, entries)) && d->binding == n->binding) {
+ sudo_lbuf_append(lbuf, ", ");
+ sudoers_format_default(lbuf, n);
+ d = n;
+ }
+ *next = n;
+ }
+ sudo_lbuf_append(lbuf, "\n");
+
+ debug_return_bool(!sudo_lbuf_error(lbuf));
+}
diff --git a/plugins/sudoers/gc.c b/plugins/sudoers/gc.c
index 9061b924e..25209c83e 100644
--- a/plugins/sudoers/gc.c
+++ b/plugins/sudoers/gc.c
@@ -24,6 +24,7 @@
#include <config.h>
#include <stdlib.h>
+#include <string.h>
#include "sudoers.h"
@@ -61,6 +62,7 @@ sudoers_gc_add(enum sudoers_gc_types type, void *v)
gc->u.ptr = v;
break;
case GC_VECTOR:
+ case GC_EDIT_ARGS:
gc->u.vec = v;
break;
default:
@@ -83,6 +85,9 @@ sudoers_gc_remove(enum sudoers_gc_types type, void *v)
struct sudoers_gc_entry *gc, *prev = NULL;
debug_decl(sudoers_gc_remove, SUDOERS_DEBUG_UTIL);
+ if (v == NULL)
+ debug_return_bool(false);
+
SLIST_FOREACH(gc, &sudoers_gc_list, entries) {
switch (gc->type) {
case GC_PTR:
@@ -90,6 +95,7 @@ sudoers_gc_remove(enum sudoers_gc_types type, void *v)
goto found;
break;
case GC_VECTOR:
+ case GC_EDIT_ARGS:
if (gc->u.vec == v)
goto found;
break;
@@ -98,28 +104,36 @@ sudoers_gc_remove(enum sudoers_gc_types type, void *v)
}
prev = gc;
}
- return false;
+ /* If this happens, there is a bug in the g/c code. */
+ sudo_warnx("%s: unable to find %p, type %d", __func__, v, type);
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+ abort();
+#else
+ debug_return_bool(false);
+#endif
found:
if (prev == NULL)
SLIST_REMOVE_HEAD(&sudoers_gc_list, entries);
else
SLIST_REMOVE_AFTER(prev, entries);
- return true;
+ free(gc);
+
+ debug_return_bool(true);
#else
- return false;
+ return true;
#endif /* NO_LEAKS */
}
-#ifdef NO_LEAKS
-static void
+void
sudoers_gc_run(void)
{
+#ifdef NO_LEAKS
struct sudoers_gc_entry *gc;
char **cur;
debug_decl(sudoers_gc_run, SUDOERS_DEBUG_UTIL);
/* Collect garbage. */
- while ((gc = SLIST_FIRST(&sudoers_gc_list))) {
+ while ((gc = SLIST_FIRST(&sudoers_gc_list)) != NULL) {
SLIST_REMOVE_HEAD(&sudoers_gc_list, entries);
switch (gc->type) {
case GC_PTR:
@@ -132,15 +146,26 @@ sudoers_gc_run(void)
free(gc->u.vec);
free(gc);
break;
+ case GC_EDIT_ARGS:
+ for (cur = gc->u.vec; *cur != NULL; cur++) {
+ /* The "--" separates dynamic from non-dynamic args. */
+ if (strcmp(*cur, "--") == 0)
+ break;
+ free(*cur);
+ }
+ free(gc->u.vec);
+ free(gc);
+ break;
default:
sudo_warnx("unexpected garbage type %d", gc->type);
}
}
debug_return;
-}
#endif /* NO_LEAKS */
+}
+#ifndef notyet
void
sudoers_gc_init(void)
{
@@ -148,3 +173,4 @@ sudoers_gc_init(void)
atexit(sudoers_gc_run);
#endif
}
+#endif
diff --git a/plugins/sudoers/gentime.c b/plugins/sudoers/gentime.c
index 7f7cf7e06..eb6d08147 100644
--- a/plugins/sudoers/gentime.c
+++ b/plugins/sudoers/gentime.c
@@ -1,7 +1,7 @@
/*
* SPDX-License-Identifier: ISC
*
- * Copyright (c) 2017 Todd C. Miller <Todd.Miller@sudo.ws>
+ * Copyright (c) 2017, 2021 Todd C. Miller <Todd.Miller@sudo.ws>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
@@ -47,7 +47,7 @@
time_t
parse_gentime(const char *timestr)
{
- char tcopy[sizeof("yyyymmddHHMMSS.F")];
+ char tcopy[sizeof("yyyymmddHHMMSS")];
const char *cp;
time_t result;
struct tm tm;
@@ -56,9 +56,9 @@ parse_gentime(const char *timestr)
bool islocal = false;
debug_decl(parse_gentime, SUDOERS_DEBUG_PARSER);
- /* Make a copy of the time without time zone for easy parsing. */
- len = strspn(timestr, "0123456789.,");
- if (len >= sizeof(tcopy)) {
+ /* Make a copy of the non-fractional time without zone for easy parsing. */
+ len = strspn(timestr, "0123456789");
+ if (len >= sizeof(tcopy) || len < sizeof("yyyymmddHH") -1 || (len & 1)) {
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
"unable to parse general time string %s", timestr);
debug_return_time_t(-1);
@@ -75,9 +75,9 @@ parse_gentime(const char *timestr)
"only parsed %d items in general time string %s", items, timestr);
debug_return_time_t(-1);
}
- cp = timestr + ((items + 1) * 2);
/* Parse optional fractional hours/minute/second if present. */
+ cp = timestr + len;
if ((cp[0] == '.' || cp[0] == ',') && isdigit((unsigned char)cp[1])) {
int frac = cp[1] - '0';
switch (items) {
@@ -96,6 +96,7 @@ parse_gentime(const char *timestr)
cp += 2; /* skip over radix and fraction */
}
+ /* Parse optional time zone. */
switch (*cp) {
case '-':
case '+': {
@@ -103,6 +104,14 @@ parse_gentime(const char *timestr)
/* No DST */
tm.tm_isdst = 0;
+ /* time zone offset must be hh or hhmm */
+ len = strspn(cp + 1, "0123456789");
+ if (len != 2 && len != 4) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "unable to parse time zone offset in %s, bad tz offset",
+ timestr);
+ debug_return_time_t(-1);
+ }
/* parse time zone offset */
items = sscanf(cp + 1, "%2d%2d", &hour, &min);
if (items == EOF || items < 1) {
diff --git a/plugins/sudoers/gram.c b/plugins/sudoers/gram.c
index 0bb72857d..2f48e9616 100644
--- a/plugins/sudoers/gram.c
+++ b/plugins/sudoers/gram.c
@@ -4,11 +4,11 @@
*/
#include <config.h>
-/* A Bison parser, made by GNU Bison 3.7.4. */
+/* A Bison parser, made by GNU Bison 3.7.5. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -52,10 +52,10 @@
USER NAME SPACE" below. */
/* Identify Bison output, and Bison version. */
-#define YYBISON 30704
+#define YYBISON 30705
/* Bison version string. */
-#define YYBISON_VERSION "3.7.4"
+#define YYBISON_VERSION "3.7.5"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -142,6 +142,11 @@ char *errorfile = NULL;
static int alias_line, alias_column;
+#ifdef NO_LEAKS
+static struct parser_leak_list parser_leak_list =
+ SLIST_HEAD_INITIALIZER(parser_leak_list);
+#endif
+
struct sudoers_parse_tree parsed_policy = {
TAILQ_HEAD_INITIALIZER(parsed_policy.userspecs),
TAILQ_HEAD_INITIALIZER(parsed_policy.defaults),
@@ -162,7 +167,7 @@ static struct sudo_command *new_command(char *, char *);
static struct command_digest *new_digest(int, char *);
static void alias_error(const char *name, int errnum);
-#line 160 "gram.c"
+#line 165 "gram.c"
# ifndef YY_CAST
# ifdef __cplusplus
@@ -319,7 +324,7 @@ extern int sudoersdebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 83 "gram.y"
+#line 88 "gram.y"
struct cmndspec *cmndspec;
struct defaults *defaults;
@@ -333,7 +338,7 @@ union YYSTYPE
char *string;
int tok;
-#line 331 "gram.c"
+#line 336 "gram.c"
};
typedef union YYSTYPE YYSTYPE;
@@ -483,7 +488,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t;
#ifndef __PTRDIFF_MAX__
# include <limits.h> /* INFRINGES ON USER NAME SPACE */
-# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# if defined HAVE_STDINT_H
# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
# define YY_STDINT_H
# endif
@@ -510,6 +515,18 @@ typedef int_least16_t yytype_int16;
typedef short yytype_int16;
#endif
+/* Work around bug in HP-UX 11.23, which defines these macros
+ incorrectly for preprocessor constants. This workaround can likely
+ be removed in 2023, as HPE has promised support for HP-UX 11.23
+ (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
+ <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
+#ifdef __hpux
+# undef UINT_LEAST8_MAX
+# undef UINT_LEAST16_MAX
+# define UINT_LEAST8_MAX 255
+# define UINT_LEAST16_MAX 65535
+#endif
+
#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
typedef __UINT_LEAST8_TYPE__ yytype_uint8;
#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
@@ -607,9 +624,9 @@ typedef int yy_state_fast_t;
/* Suppress unused-variable warnings by "using" E. */
#if ! defined lint || defined __GNUC__
-# define YYUSE(E) ((void) (E))
+# define YY_USE(E) ((void) (E))
#else
-# define YYUSE(E) /* empty */
+# define YY_USE(E) /* empty */
#endif
#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
@@ -839,21 +856,21 @@ static const yytype_int8 yytranslate[] =
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
static const yytype_int16 yyrline[] =
{
- 0, 192, 192, 195, 198, 199, 202, 205, 208, 215,
- 222, 228, 231, 234, 237, 240, 244, 248, 252, 256,
- 262, 265, 271, 274, 280, 281, 287, 294, 301, 308,
- 315, 324, 325, 329, 335, 349, 353, 359, 366, 373,
- 380, 387, 396, 397, 456, 511, 518, 525, 532, 541,
- 542, 548, 551, 572, 576, 582, 594, 606, 611, 615,
- 620, 625, 630, 634, 639, 642, 647, 662, 671, 680,
- 689, 706, 707, 708, 709, 710, 711, 712, 713, 714,
- 715, 718, 724, 727, 731, 735, 743, 751, 762, 768,
- 774, 780, 788, 791, 794, 797, 800, 803, 806, 809,
- 812, 815, 818, 821, 824, 827, 830, 835, 842, 849,
- 865, 866, 869, 869, 879, 882, 883, 889, 890, 893,
- 893, 903, 906, 907, 913, 914, 917, 917, 927, 930,
- 931, 934, 934, 944, 947, 948, 954, 958, 964, 971,
- 978, 985, 992, 1001, 1002, 1008, 1012, 1018, 1025, 1032
+ 0, 197, 197, 200, 203, 204, 207, 210, 213, 222,
+ 231, 237, 240, 243, 246, 249, 253, 257, 261, 265,
+ 271, 274, 280, 283, 289, 290, 297, 306, 315, 325,
+ 335, 347, 348, 353, 359, 376, 380, 386, 395, 403,
+ 412, 421, 432, 433, 493, 559, 568, 577, 586, 597,
+ 598, 605, 608, 630, 634, 640, 652, 664, 669, 673,
+ 678, 683, 688, 692, 697, 700, 705, 721, 732, 744,
+ 755, 773, 774, 775, 776, 777, 778, 779, 780, 781,
+ 782, 785, 791, 794, 799, 804, 813, 822, 834, 841,
+ 848, 855, 864, 867, 870, 873, 876, 879, 882, 885,
+ 888, 891, 894, 897, 900, 903, 906, 911, 919, 928,
+ 947, 948, 951, 951, 963, 966, 967, 974, 975, 978,
+ 978, 990, 993, 994, 1001, 1002, 1005, 1005, 1017, 1020,
+ 1021, 1024, 1024, 1036, 1039, 1040, 1047, 1051, 1057, 1066,
+ 1074, 1083, 1092, 1103, 1104, 1111, 1115, 1121, 1130, 1138
};
#endif
@@ -999,9 +1016,9 @@ static const yytype_int16 yypgoto[] =
};
/* YYDEFGOTO[NTERM-NUM]. */
-static const yytype_int16 yydefgoto[] =
+static const yytype_uint8 yydefgoto[] =
{
- -1, 20, 21, 22, 23, 24, 33, 34, 91, 92,
+ 0, 20, 21, 22, 23, 24, 33, 34, 91, 92,
41, 42, 170, 171, 54, 55, 56, 57, 201, 202,
203, 204, 205, 206, 207, 208, 209, 172, 178, 71,
72, 181, 210, 58, 73, 74, 118, 93, 77, 78,
@@ -1233,7 +1250,7 @@ yy_symbol_value_print (FILE *yyo,
yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
FILE *yyoutput = yyo;
- YYUSE (yyoutput);
+ YY_USE (yyoutput);
if (!yyvaluep)
return;
# ifdef YYPRINT
@@ -1241,7 +1258,7 @@ yy_symbol_value_print (FILE *yyo,
YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
# endif
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yykind);
+ YY_USE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -1355,13 +1372,13 @@ static void
yydestruct (const char *yymsg,
yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
{
- YYUSE (yyvaluep);
+ YY_USE (yyvaluep);
if (!yymsg)
yymsg = "Deleting";
YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yykind);
+ YY_USE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
@@ -1622,362 +1639,394 @@ yyreduce:
switch (yyn)
{
case 2: /* file: %empty */
-#line 192 "gram.y"
+#line 197 "gram.y"
{
; /* empty file */
}
-#line 1624 "gram.c"
+#line 1641 "gram.c"
break;
case 6: /* entry: '\n' */
-#line 202 "gram.y"
+#line 207 "gram.y"
{
; /* blank line */
}
-#line 1632 "gram.c"
+#line 1649 "gram.c"
break;
case 7: /* entry: error '\n' */
-#line 205 "gram.y"
+#line 210 "gram.y"
{
yyerrok;
}
-#line 1640 "gram.c"
+#line 1657 "gram.c"
break;
case 8: /* entry: include */
-#line 208 "gram.y"
+#line 213 "gram.y"
{
if (!push_include((yyvsp[0].string), false)) {
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
free((yyvsp[0].string));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
free((yyvsp[0].string));
}
-#line 1652 "gram.c"
+#line 1671 "gram.c"
break;
case 9: /* entry: includedir */
-#line 215 "gram.y"
+#line 222 "gram.y"
{
if (!push_include((yyvsp[0].string), true)) {
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
free((yyvsp[0].string));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
free((yyvsp[0].string));
}
-#line 1664 "gram.c"
+#line 1685 "gram.c"
break;
case 10: /* entry: userlist privileges '\n' */
-#line 222 "gram.y"
+#line 231 "gram.y"
{
if (!add_userspec((yyvsp[-2].member), (yyvsp[-1].privilege))) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
}
-#line 1675 "gram.c"
+#line 1696 "gram.c"
break;
case 11: /* entry: USERALIAS useraliases '\n' */
-#line 228 "gram.y"
+#line 237 "gram.y"
{
;
}
-#line 1683 "gram.c"
+#line 1704 "gram.c"
break;
case 12: /* entry: HOSTALIAS hostaliases '\n' */
-#line 231 "gram.y"
+#line 240 "gram.y"
{
;
}
-#line 1691 "gram.c"
+#line 1712 "gram.c"
break;
case 13: /* entry: CMNDALIAS cmndaliases '\n' */
-#line 234 "gram.y"
+#line 243 "gram.y"
{
;
}
-#line 1699 "gram.c"
+#line 1720 "gram.c"
break;
case 14: /* entry: RUNASALIAS runasaliases '\n' */
-#line 237 "gram.y"
+#line 246 "gram.y"
{
;
}
-#line 1707 "gram.c"
+#line 1728 "gram.c"
break;
case 15: /* entry: DEFAULTS defaults_list '\n' */
-#line 240 "gram.y"
+#line 249 "gram.y"
{
if (!add_defaults(DEFAULTS, NULL, (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1716 "gram.c"
+#line 1737 "gram.c"
break;
case 16: /* entry: DEFAULTS_USER userlist defaults_list '\n' */
-#line 244 "gram.y"
+#line 253 "gram.y"
{
if (!add_defaults(DEFAULTS_USER, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1725 "gram.c"
+#line 1746 "gram.c"
break;
case 17: /* entry: DEFAULTS_RUNAS userlist defaults_list '\n' */
-#line 248 "gram.y"
+#line 257 "gram.y"
{
if (!add_defaults(DEFAULTS_RUNAS, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1734 "gram.c"
+#line 1755 "gram.c"
break;
case 18: /* entry: DEFAULTS_HOST hostlist defaults_list '\n' */
-#line 252 "gram.y"
+#line 261 "gram.y"
{
if (!add_defaults(DEFAULTS_HOST, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1743 "gram.c"
+#line 1764 "gram.c"
break;
case 19: /* entry: DEFAULTS_CMND cmndlist defaults_list '\n' */
-#line 256 "gram.y"
+#line 265 "gram.y"
{
if (!add_defaults(DEFAULTS_CMND, (yyvsp[-2].member), (yyvsp[-1].defaults)))
YYERROR;
}
-#line 1752 "gram.c"
+#line 1773 "gram.c"
break;
case 20: /* include: INCLUDE WORD '\n' */
-#line 262 "gram.y"
+#line 271 "gram.y"
{
(yyval.string) = (yyvsp[-1].string);
}
-#line 1760 "gram.c"
+#line 1781 "gram.c"
break;
case 21: /* include: INCLUDE WORD error '\n' */
-#line 265 "gram.y"
+#line 274 "gram.y"
{
yyerrok;
(yyval.string) = (yyvsp[-2].string);
}
-#line 1769 "gram.c"
+#line 1790 "gram.c"
break;
case 22: /* includedir: INCLUDEDIR WORD '\n' */
-#line 271 "gram.y"
+#line 280 "gram.y"
{
(yyval.string) = (yyvsp[-1].string);
}
-#line 1777 "gram.c"
+#line 1798 "gram.c"
break;
case 23: /* includedir: INCLUDEDIR WORD error '\n' */
-#line 274 "gram.y"
+#line 283 "gram.y"
{
yyerrok;
(yyval.string) = (yyvsp[-2].string);
}
-#line 1786 "gram.c"
+#line 1807 "gram.c"
break;
case 25: /* defaults_list: defaults_list ',' defaults_entry */
-#line 281 "gram.y"
+#line 290 "gram.y"
{
+ parser_leak_remove(LEAK_DEFAULTS, (yyvsp[0].defaults));
HLTQ_CONCAT((yyvsp[-2].defaults), (yyvsp[0].defaults), entries);
(yyval.defaults) = (yyvsp[-2].defaults);
}
-#line 1795 "gram.c"
+#line 1817 "gram.c"
break;
case 26: /* defaults_entry: DEFVAR */
-#line 287 "gram.y"
+#line 297 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[0].string), NULL, true);
if ((yyval.defaults) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DEFAULTS, (yyval.defaults));
}
-#line 1807 "gram.c"
+#line 1831 "gram.c"
break;
case 27: /* defaults_entry: '!' DEFVAR */
-#line 294 "gram.y"
+#line 306 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[0].string), NULL, false);
if ((yyval.defaults) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DEFAULTS, (yyval.defaults));
}
-#line 1819 "gram.c"
+#line 1845 "gram.c"
break;
case 28: /* defaults_entry: DEFVAR '=' WORD */
-#line 301 "gram.y"
+#line 315 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), true);
if ((yyval.defaults) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].string));
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DEFAULTS, (yyval.defaults));
}
-#line 1831 "gram.c"
+#line 1860 "gram.c"
break;
case 29: /* defaults_entry: DEFVAR '+' WORD */
-#line 308 "gram.y"
+#line 325 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '+');
if ((yyval.defaults) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].string));
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DEFAULTS, (yyval.defaults));
}
-#line 1843 "gram.c"
+#line 1875 "gram.c"
break;
case 30: /* defaults_entry: DEFVAR '-' WORD */
-#line 315 "gram.y"
+#line 335 "gram.y"
{
(yyval.defaults) = new_default((yyvsp[-2].string), (yyvsp[0].string), '-');
if ((yyval.defaults) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].string));
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DEFAULTS, (yyval.defaults));
}
-#line 1855 "gram.c"
+#line 1890 "gram.c"
break;
case 32: /* privileges: privileges ':' privilege */
-#line 325 "gram.y"
+#line 348 "gram.y"
{
+ parser_leak_remove(LEAK_PRIVILEGE, (yyvsp[0].privilege));
HLTQ_CONCAT((yyvsp[-2].privilege), (yyvsp[0].privilege), entries);
(yyval.privilege) = (yyvsp[-2].privilege);
}
-#line 1864 "gram.c"
+#line 1900 "gram.c"
break;
case 33: /* privileges: privileges ':' error */
-#line 329 "gram.y"
+#line 353 "gram.y"
{
yyerrok;
(yyval.privilege) = (yyvsp[-2].privilege);
}
-#line 1873 "gram.c"
+#line 1909 "gram.c"
break;
case 34: /* privilege: hostlist '=' cmndspeclist */
-#line 335 "gram.y"
+#line 359 "gram.y"
{
struct privilege *p = calloc(1, sizeof(*p));
if (p == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_PRIVILEGE, p);
TAILQ_INIT(&p->defaults);
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[-2].member));
HLTQ_TO_TAILQ(&p->hostlist, (yyvsp[-2].member), entries);
+ parser_leak_remove(LEAK_CMNDSPEC, (yyvsp[0].cmndspec));
HLTQ_TO_TAILQ(&p->cmndlist, (yyvsp[0].cmndspec), entries);
HLTQ_INIT(p, entries);
(yyval.privilege) = p;
}
-#line 1890 "gram.c"
+#line 1929 "gram.c"
break;
case 35: /* ophost: host */
-#line 349 "gram.y"
+#line 376 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 1899 "gram.c"
+#line 1938 "gram.c"
break;
case 36: /* ophost: '!' host */
-#line 353 "gram.y"
+#line 380 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 1908 "gram.c"
+#line 1947 "gram.c"
break;
case 37: /* host: ALIAS */
-#line 359 "gram.y"
+#line 386 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 1920 "gram.c"
+#line 1961 "gram.c"
break;
case 38: /* host: ALL */
-#line 366 "gram.y"
+#line 395 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 1932 "gram.c"
+#line 1974 "gram.c"
break;
case 39: /* host: NETGROUP */
-#line 373 "gram.y"
+#line 403 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), NETGROUP);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 1944 "gram.c"
+#line 1988 "gram.c"
break;
case 40: /* host: NTWKADDR */
-#line 380 "gram.y"
+#line 412 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), NTWKADDR);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 1956 "gram.c"
+#line 2002 "gram.c"
break;
case 41: /* host: WORD */
-#line 387 "gram.y"
+#line 421 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), WORD);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 1968 "gram.c"
+#line 2016 "gram.c"
break;
case 43: /* cmndspeclist: cmndspeclist ',' cmndspec */
-#line 397 "gram.y"
+#line 433 "gram.y"
{
struct cmndspec *prev;
prev = HLTQ_LAST((yyvsp[-2].cmndspec), cmndspec, entries);
+ parser_leak_remove(LEAK_CMNDSPEC, (yyvsp[0].cmndspec));
HLTQ_CONCAT((yyvsp[-2].cmndspec), (yyvsp[0].cmndspec), entries);
/* propagate runcwd and runchroot */
@@ -2032,17 +2081,18 @@ yyreduce:
}
(yyval.cmndspec) = (yyvsp[-2].cmndspec);
}
-#line 2030 "gram.c"
+#line 2079 "gram.c"
break;
case 44: /* cmndspec: runasspec options cmndtag digcmnd */
-#line 456 "gram.y"
+#line 493 "gram.y"
{
struct cmndspec *cs = calloc(1, sizeof(*cs));
if (cs == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_CMNDSPEC, cs);
if ((yyvsp[-3].runas) != NULL) {
if ((yyvsp[-3].runas)->runasusers != NULL) {
cs->runasuserlist =
@@ -2052,6 +2102,7 @@ yyreduce:
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ /* g/c done via runas container */
HLTQ_TO_TAILQ(cs->runasuserlist,
(yyvsp[-3].runas)->runasusers, entries);
}
@@ -2063,26 +2114,35 @@ yyreduce:
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ /* g/c done via runas container */
HLTQ_TO_TAILQ(cs->runasgrouplist,
(yyvsp[-3].runas)->runasgroups, entries);
}
+ parser_leak_remove(LEAK_RUNAS, (yyvsp[-3].runas));
free((yyvsp[-3].runas));
}
#ifdef HAVE_SELINUX
cs->role = (yyvsp[-2].options).role;
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].options).role);
cs->type = (yyvsp[-2].options).type;
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].options).type);
#endif
#ifdef HAVE_PRIV_SET
cs->privs = (yyvsp[-2].options).privs;
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].options).privs);
cs->limitprivs = (yyvsp[-2].options).limitprivs;
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].options).limitprivs);
#endif
cs->notbefore = (yyvsp[-2].options).notbefore;
cs->notafter = (yyvsp[-2].options).notafter;
cs->timeout = (yyvsp[-2].options).timeout;
cs->runcwd = (yyvsp[-2].options).runcwd;
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].options).runcwd);
cs->runchroot = (yyvsp[-2].options).runchroot;
+ parser_leak_remove(LEAK_PTR, (yyvsp[-2].options).runchroot);
cs->tags = (yyvsp[-1].tag);
cs->cmnd = (yyvsp[0].member);
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
HLTQ_INIT(cs, entries);
/* sudo "ALL" implies the SETENV tag */
if (cs->cmnd->type == ALL && !cs->cmnd->negated &&
@@ -2090,76 +2150,85 @@ yyreduce:
cs->tags.setenv = IMPLIED;
(yyval.cmndspec) = cs;
}
-#line 2088 "gram.c"
+#line 2148 "gram.c"
break;
case 45: /* digestspec: SHA224_TOK ':' DIGEST */
-#line 511 "gram.y"
+#line 559 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA224, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DIGEST, (yyval.digest));
}
-#line 2100 "gram.c"
+#line 2162 "gram.c"
break;
case 46: /* digestspec: SHA256_TOK ':' DIGEST */
-#line 518 "gram.y"
+#line 568 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA256, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DIGEST, (yyval.digest));
}
-#line 2112 "gram.c"
+#line 2176 "gram.c"
break;
case 47: /* digestspec: SHA384_TOK ':' DIGEST */
-#line 525 "gram.y"
+#line 577 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA384, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DIGEST, (yyval.digest));
}
-#line 2124 "gram.c"
+#line 2190 "gram.c"
break;
case 48: /* digestspec: SHA512_TOK ':' DIGEST */
-#line 532 "gram.y"
+#line 586 "gram.y"
{
(yyval.digest) = new_digest(SUDO_DIGEST_SHA512, (yyvsp[0].string));
if ((yyval.digest) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_DIGEST, (yyval.digest));
}
-#line 2136 "gram.c"
+#line 2204 "gram.c"
break;
case 50: /* digestlist: digestlist ',' digestspec */
-#line 542 "gram.y"
+#line 598 "gram.y"
{
+ parser_leak_remove(LEAK_DIGEST, (yyvsp[0].digest));
HLTQ_CONCAT((yyvsp[-2].digest), (yyvsp[0].digest), entries);
(yyval.digest) = (yyvsp[-2].digest);
}
-#line 2145 "gram.c"
+#line 2214 "gram.c"
break;
case 51: /* digcmnd: opcmnd */
-#line 548 "gram.y"
+#line 605 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
}
-#line 2153 "gram.c"
+#line 2222 "gram.c"
break;
case 52: /* digcmnd: digestlist opcmnd */
-#line 551 "gram.y"
+#line 608 "gram.y"
{
struct sudo_command *c =
(struct sudo_command *) (yyvsp[0].member)->name;
@@ -2176,32 +2245,33 @@ yyreduce:
}
(yyvsp[0].member)->name = (char *)c;
}
+ parser_leak_remove(LEAK_DIGEST, (yyvsp[-1].digest));
HLTQ_TO_TAILQ(&c->digests, (yyvsp[-1].digest), entries);
(yyval.member) = (yyvsp[0].member);
}
-#line 2177 "gram.c"
+#line 2247 "gram.c"
break;
case 53: /* opcmnd: cmnd */
-#line 572 "gram.y"
+#line 630 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 2186 "gram.c"
+#line 2256 "gram.c"
break;
case 54: /* opcmnd: '!' cmnd */
-#line 576 "gram.y"
+#line 634 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 2195 "gram.c"
+#line 2265 "gram.c"
break;
case 55: /* chdirspec: CWD '=' WORD */
-#line 582 "gram.y"
+#line 640 "gram.y"
{
if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') {
if (strcmp((yyvsp[0].string), "*") != 0) {
@@ -2212,11 +2282,11 @@ yyreduce:
}
(yyval.string) = (yyvsp[0].string);
}
-#line 2210 "gram.c"
+#line 2280 "gram.c"
break;
case 56: /* chrootspec: CHROOT '=' WORD */
-#line 594 "gram.y"
+#line 652 "gram.y"
{
if ((yyvsp[0].string)[0] != '/' && (yyvsp[0].string)[0] != '~') {
if (strcmp((yyvsp[0].string), "*") != 0) {
@@ -2227,83 +2297,83 @@ yyreduce:
}
(yyval.string) = (yyvsp[0].string);
}
-#line 2225 "gram.c"
+#line 2295 "gram.c"
break;
case 57: /* timeoutspec: CMND_TIMEOUT '=' WORD */
-#line 606 "gram.y"
+#line 664 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2233 "gram.c"
+#line 2303 "gram.c"
break;
case 58: /* notbeforespec: NOTBEFORE '=' WORD */
-#line 611 "gram.y"
+#line 669 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2241 "gram.c"
+#line 2311 "gram.c"
break;
case 59: /* notafterspec: NOTAFTER '=' WORD */
-#line 615 "gram.y"
+#line 673 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2249 "gram.c"
+#line 2319 "gram.c"
break;
case 60: /* rolespec: ROLE '=' WORD */
-#line 620 "gram.y"
+#line 678 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2257 "gram.c"
+#line 2327 "gram.c"
break;
case 61: /* typespec: TYPE '=' WORD */
-#line 625 "gram.y"
+#line 683 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2265 "gram.c"
+#line 2335 "gram.c"
break;
case 62: /* privsspec: PRIVS '=' WORD */
-#line 630 "gram.y"
+#line 688 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2273 "gram.c"
+#line 2343 "gram.c"
break;
case 63: /* limitprivsspec: LIMITPRIVS '=' WORD */
-#line 634 "gram.y"
+#line 692 "gram.y"
{
(yyval.string) = (yyvsp[0].string);
}
-#line 2281 "gram.c"
+#line 2351 "gram.c"
break;
case 64: /* runasspec: %empty */
-#line 639 "gram.y"
+#line 697 "gram.y"
{
(yyval.runas) = NULL;
}
-#line 2289 "gram.c"
+#line 2359 "gram.c"
break;
case 65: /* runasspec: '(' runaslist ')' */
-#line 642 "gram.y"
+#line 700 "gram.y"
{
(yyval.runas) = (yyvsp[-1].runas);
}
-#line 2297 "gram.c"
+#line 2367 "gram.c"
break;
case 66: /* runaslist: %empty */
-#line 647 "gram.y"
+#line 705 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) != NULL) {
@@ -2318,54 +2388,62 @@ yyreduce:
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, (yyval.runas));
}
-#line 2317 "gram.c"
+#line 2388 "gram.c"
break;
case 67: /* runaslist: userlist */
-#line 662 "gram.y"
+#line 721 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, (yyval.runas));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
(yyval.runas)->runasusers = (yyvsp[0].member);
/* $$->runasgroups = NULL; */
}
-#line 2331 "gram.c"
+#line 2404 "gram.c"
break;
case 68: /* runaslist: userlist ':' grouplist */
-#line 671 "gram.y"
+#line 732 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, (yyval.runas));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[-2].member));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
(yyval.runas)->runasusers = (yyvsp[-2].member);
(yyval.runas)->runasgroups = (yyvsp[0].member);
}
-#line 2345 "gram.c"
+#line 2421 "gram.c"
break;
case 69: /* runaslist: ':' grouplist */
-#line 680 "gram.y"
+#line 744 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, (yyval.runas));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
/* $$->runasusers = NULL; */
(yyval.runas)->runasgroups = (yyvsp[0].member);
}
-#line 2359 "gram.c"
+#line 2437 "gram.c"
break;
case 70: /* runaslist: ':' */
-#line 689 "gram.y"
+#line 755 "gram.y"
{
(yyval.runas) = calloc(1, sizeof(struct runascontainer));
if ((yyval.runas) != NULL) {
@@ -2380,135 +2458,141 @@ yyreduce:
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, (yyval.runas));
}
-#line 2379 "gram.c"
+#line 2458 "gram.c"
break;
case 71: /* reserved_word: ALL */
-#line 706 "gram.y"
+#line 773 "gram.y"
{ (yyval.string) = "ALL"; }
-#line 2385 "gram.c"
+#line 2464 "gram.c"
break;
case 72: /* reserved_word: CHROOT */
-#line 707 "gram.y"
+#line 774 "gram.y"
{ (yyval.string) = "CHROOT"; }
-#line 2391 "gram.c"
+#line 2470 "gram.c"
break;
case 73: /* reserved_word: CWD */
-#line 708 "gram.y"
+#line 775 "gram.y"
{ (yyval.string) = "CWD"; }
-#line 2397 "gram.c"
+#line 2476 "gram.c"
break;
case 74: /* reserved_word: CMND_TIMEOUT */
-#line 709 "gram.y"
+#line 776 "gram.y"
{ (yyval.string) = "CMND_TIMEOUT"; }
-#line 2403 "gram.c"
+#line 2482 "gram.c"
break;
case 75: /* reserved_word: NOTBEFORE */
-#line 710 "gram.y"
+#line 777 "gram.y"
{ (yyval.string) = "NOTBEFORE"; }
-#line 2409 "gram.c"
+#line 2488 "gram.c"
break;
case 76: /* reserved_word: NOTAFTER */
-#line 711 "gram.y"
+#line 778 "gram.y"
{ (yyval.string) = "NOTAFTER"; }
-#line 2415 "gram.c"
+#line 2494 "gram.c"
break;
case 77: /* reserved_word: ROLE */
-#line 712 "gram.y"
+#line 779 "gram.y"
{ (yyval.string) = "ROLE"; }
-#line 2421 "gram.c"
+#line 2500 "gram.c"
break;
case 78: /* reserved_word: TYPE */
-#line 713 "gram.y"
+#line 780 "gram.y"
{ (yyval.string) = "TYPE"; }
-#line 2427 "gram.c"
+#line 2506 "gram.c"
break;
case 79: /* reserved_word: PRIVS */
-#line 714 "gram.y"
+#line 781 "gram.y"
{ (yyval.string) = "PRIVS"; }
-#line 2433 "gram.c"
+#line 2512 "gram.c"
break;
case 80: /* reserved_word: LIMITPRIVS */
-#line 715 "gram.y"
+#line 782 "gram.y"
{ (yyval.string) = "LIMITPRIVS"; }
-#line 2439 "gram.c"
+#line 2518 "gram.c"
break;
case 81: /* reserved_alias: reserved_word */
-#line 718 "gram.y"
+#line 785 "gram.y"
{
sudoerserrorf(U_("syntax error, reserved word %s used as an alias name"), (yyvsp[0].string));
YYERROR;
}
-#line 2448 "gram.c"
+#line 2527 "gram.c"
break;
case 82: /* options: %empty */
-#line 724 "gram.y"
+#line 791 "gram.y"
{
init_options(&(yyval.options));
}
-#line 2456 "gram.c"
+#line 2535 "gram.c"
break;
case 83: /* options: options chdirspec */
-#line 727 "gram.y"
+#line 794 "gram.y"
{
+ parser_leak_remove(LEAK_PTR, (yyval.options).runcwd);
free((yyval.options).runcwd);
(yyval.options).runcwd = (yyvsp[0].string);
}
-#line 2465 "gram.c"
+#line 2545 "gram.c"
break;
case 84: /* options: options chrootspec */
-#line 731 "gram.y"
+#line 799 "gram.y"
{
+ parser_leak_remove(LEAK_PTR, (yyval.options).runchroot);
free((yyval.options).runchroot);
(yyval.options).runchroot = (yyvsp[0].string);
}
-#line 2474 "gram.c"
+#line 2555 "gram.c"
break;
case 85: /* options: options notbeforespec */
-#line 735 "gram.y"
+#line 804 "gram.y"
{
(yyval.options).notbefore = parse_gentime((yyvsp[0].string));
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
free((yyvsp[0].string));
if ((yyval.options).notbefore == -1) {
sudoerserror(N_("invalid notbefore value"));
YYERROR;
}
}
-#line 2487 "gram.c"
+#line 2569 "gram.c"
break;
case 86: /* options: options notafterspec */
-#line 743 "gram.y"
+#line 813 "gram.y"
{
(yyval.options).notafter = parse_gentime((yyvsp[0].string));
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
free((yyvsp[0].string));
if ((yyval.options).notafter == -1) {
sudoerserror(N_("invalid notafter value"));
YYERROR;
}
}
-#line 2500 "gram.c"
+#line 2583 "gram.c"
break;
case 87: /* options: options timeoutspec */
-#line 751 "gram.y"
+#line 822 "gram.y"
{
(yyval.options).timeout = parse_timeout((yyvsp[0].string));
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
free((yyvsp[0].string));
if ((yyval.options).timeout == -1) {
if (errno == ERANGE)
@@ -2518,199 +2602,206 @@ yyreduce:
YYERROR;
}
}
-#line 2516 "gram.c"
+#line 2600 "gram.c"
break;
case 88: /* options: options rolespec */
-#line 762 "gram.y"
+#line 834 "gram.y"
{
#ifdef HAVE_SELINUX
+ parser_leak_remove(LEAK_PTR, (yyval.options).role);
free((yyval.options).role);
(yyval.options).role = (yyvsp[0].string);
#endif
}
-#line 2527 "gram.c"
+#line 2612 "gram.c"
break;
case 89: /* options: options typespec */
-#line 768 "gram.y"
+#line 841 "gram.y"
{
#ifdef HAVE_SELINUX
+ parser_leak_remove(LEAK_PTR, (yyval.options).type);
free((yyval.options).type);
(yyval.options).type = (yyvsp[0].string);
#endif
}
-#line 2538 "gram.c"
+#line 2624 "gram.c"
break;
case 90: /* options: options privsspec */
-#line 774 "gram.y"
+#line 848 "gram.y"
{
#ifdef HAVE_PRIV_SET
+ parser_leak_remove(LEAK_PTR, (yyval.options).privs);
free((yyval.options).privs);
(yyval.options).privs = (yyvsp[0].string);
#endif
}
-#line 2549 "gram.c"
+#line 2636 "gram.c"
break;
case 91: /* options: options limitprivsspec */
-#line 780 "gram.y"
+#line 855 "gram.y"
{
#ifdef HAVE_PRIV_SET
+ parser_leak_remove(LEAK_PTR, (yyval.options).limitprivs);
free((yyval.options).limitprivs);
(yyval.options).limitprivs = (yyvsp[0].string);
#endif
}
-#line 2560 "gram.c"
+#line 2648 "gram.c"
break;
case 92: /* cmndtag: %empty */
-#line 788 "gram.y"
+#line 864 "gram.y"
{
TAGS_INIT(&(yyval.tag));
}
-#line 2568 "gram.c"
+#line 2656 "gram.c"
break;
case 93: /* cmndtag: cmndtag NOPASSWD */
-#line 791 "gram.y"
+#line 867 "gram.y"
{
(yyval.tag).nopasswd = true;
}
-#line 2576 "gram.c"
+#line 2664 "gram.c"
break;
case 94: /* cmndtag: cmndtag PASSWD */
-#line 794 "gram.y"
+#line 870 "gram.y"
{
(yyval.tag).nopasswd = false;
}
-#line 2584 "gram.c"
+#line 2672 "gram.c"
break;
case 95: /* cmndtag: cmndtag NOEXEC */
-#line 797 "gram.y"
+#line 873 "gram.y"
{
(yyval.tag).noexec = true;
}
-#line 2592 "gram.c"
+#line 2680 "gram.c"
break;
case 96: /* cmndtag: cmndtag EXEC */
-#line 800 "gram.y"
+#line 876 "gram.y"
{
(yyval.tag).noexec = false;
}
-#line 2600 "gram.c"
+#line 2688 "gram.c"
break;
case 97: /* cmndtag: cmndtag SETENV */
-#line 803 "gram.y"
+#line 879 "gram.y"
{
(yyval.tag).setenv = true;
}
-#line 2608 "gram.c"
+#line 2696 "gram.c"
break;
case 98: /* cmndtag: cmndtag NOSETENV */
-#line 806 "gram.y"
+#line 882 "gram.y"
{
(yyval.tag).setenv = false;
}
-#line 2616 "gram.c"
+#line 2704 "gram.c"
break;
case 99: /* cmndtag: cmndtag LOG_INPUT */
-#line 809 "gram.y"
+#line 885 "gram.y"
{
(yyval.tag).log_input = true;
}
-#line 2624 "gram.c"
+#line 2712 "gram.c"
break;
case 100: /* cmndtag: cmndtag NOLOG_INPUT */
-#line 812 "gram.y"
+#line 888 "gram.y"
{
(yyval.tag).log_input = false;
}
-#line 2632 "gram.c"
+#line 2720 "gram.c"
break;
case 101: /* cmndtag: cmndtag LOG_OUTPUT */
-#line 815 "gram.y"
+#line 891 "gram.y"
{
(yyval.tag).log_output = true;
}
-#line 2640 "gram.c"
+#line 2728 "gram.c"
break;
case 102: /* cmndtag: cmndtag NOLOG_OUTPUT */
-#line 818 "gram.y"
+#line 894 "gram.y"
{
(yyval.tag).log_output = false;
}
-#line 2648 "gram.c"
+#line 2736 "gram.c"
break;
case 103: /* cmndtag: cmndtag FOLLOWLNK */
-#line 821 "gram.y"
+#line 897 "gram.y"
{
(yyval.tag).follow = true;
}
-#line 2656 "gram.c"
+#line 2744 "gram.c"
break;
case 104: /* cmndtag: cmndtag NOFOLLOWLNK */
-#line 824 "gram.y"
+#line 900 "gram.y"
{
(yyval.tag).follow = false;
}
-#line 2664 "gram.c"
+#line 2752 "gram.c"
break;
case 105: /* cmndtag: cmndtag MAIL */
-#line 827 "gram.y"
+#line 903 "gram.y"
{
(yyval.tag).send_mail = true;
}
-#line 2672 "gram.c"
+#line 2760 "gram.c"
break;
case 106: /* cmndtag: cmndtag NOMAIL */
-#line 830 "gram.y"
+#line 906 "gram.y"
{
(yyval.tag).send_mail = false;
}
-#line 2680 "gram.c"
+#line 2768 "gram.c"
break;
case 107: /* cmnd: ALL */
-#line 835 "gram.y"
+#line 911 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2692 "gram.c"
+#line 2781 "gram.c"
break;
case 108: /* cmnd: ALIAS */
-#line 842 "gram.y"
+#line 919 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2704 "gram.c"
+#line 2795 "gram.c"
break;
case 109: /* cmnd: COMMAND */
-#line 849 "gram.y"
+#line 928 "gram.y"
{
struct sudo_command *c;
@@ -2724,264 +2815,293 @@ yyreduce:
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].command).cmnd);
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].command).args);
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2723 "gram.c"
+#line 2817 "gram.c"
break;
case 112: /* $@1: %empty */
-#line 869 "gram.y"
+#line 951 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2732 "gram.c"
+#line 2826 "gram.c"
break;
case 113: /* hostalias: ALIAS $@1 '=' hostlist */
-#line 872 "gram.y"
+#line 954 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), HOSTALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
alias_error((yyvsp[-3].string), errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
}
-#line 2744 "gram.c"
+#line 2840 "gram.c"
break;
case 116: /* hostlist: hostlist ',' ophost */
-#line 883 "gram.y"
+#line 967 "gram.y"
{
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2753 "gram.c"
+#line 2850 "gram.c"
break;
case 119: /* $@2: %empty */
-#line 893 "gram.y"
+#line 978 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2762 "gram.c"
+#line 2859 "gram.c"
break;
case 120: /* cmndalias: ALIAS $@2 '=' cmndlist */
-#line 896 "gram.y"
+#line 981 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), CMNDALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
alias_error((yyvsp[-3].string), errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
}
-#line 2774 "gram.c"
+#line 2873 "gram.c"
break;
case 123: /* cmndlist: cmndlist ',' digcmnd */
-#line 907 "gram.y"
+#line 994 "gram.y"
{
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2783 "gram.c"
+#line 2883 "gram.c"
break;
case 126: /* $@3: %empty */
-#line 917 "gram.y"
+#line 1005 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2792 "gram.c"
+#line 2892 "gram.c"
break;
case 127: /* runasalias: ALIAS $@3 '=' userlist */
-#line 920 "gram.y"
+#line 1008 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), RUNASALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
alias_error((yyvsp[-3].string), errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
}
-#line 2804 "gram.c"
+#line 2906 "gram.c"
break;
case 131: /* $@4: %empty */
-#line 934 "gram.y"
+#line 1024 "gram.y"
{
alias_line = this_lineno;
alias_column = sudolinebuf.toke_start + 1;
}
-#line 2813 "gram.c"
+#line 2915 "gram.c"
break;
case 132: /* useralias: ALIAS $@4 '=' userlist */
-#line 937 "gram.y"
+#line 1027 "gram.y"
{
if (!alias_add(&parsed_policy, (yyvsp[-3].string), USERALIAS,
sudoers, alias_line, alias_column, (yyvsp[0].member))) {
alias_error((yyvsp[-3].string), errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[-3].string));
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
}
-#line 2825 "gram.c"
+#line 2929 "gram.c"
break;
case 135: /* userlist: userlist ',' opuser */
-#line 948 "gram.y"
+#line 1040 "gram.y"
{
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2834 "gram.c"
+#line 2939 "gram.c"
break;
case 136: /* opuser: user */
-#line 954 "gram.y"
+#line 1047 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 2843 "gram.c"
+#line 2948 "gram.c"
break;
case 137: /* opuser: '!' user */
-#line 958 "gram.y"
+#line 1051 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 2852 "gram.c"
+#line 2957 "gram.c"
break;
case 138: /* user: ALIAS */
-#line 964 "gram.y"
+#line 1057 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2864 "gram.c"
+#line 2971 "gram.c"
break;
case 139: /* user: ALL */
-#line 971 "gram.y"
+#line 1066 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2876 "gram.c"
+#line 2984 "gram.c"
break;
case 140: /* user: NETGROUP */
-#line 978 "gram.y"
+#line 1074 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), NETGROUP);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2888 "gram.c"
+#line 2998 "gram.c"
break;
case 141: /* user: USERGROUP */
-#line 985 "gram.y"
+#line 1083 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), USERGROUP);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2900 "gram.c"
+#line 3012 "gram.c"
break;
case 142: /* user: WORD */
-#line 992 "gram.y"
+#line 1092 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), WORD);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2912 "gram.c"
+#line 3026 "gram.c"
break;
case 144: /* grouplist: grouplist ',' opgroup */
-#line 1002 "gram.y"
+#line 1104 "gram.y"
{
+ parser_leak_remove(LEAK_MEMBER, (yyvsp[0].member));
HLTQ_CONCAT((yyvsp[-2].member), (yyvsp[0].member), entries);
(yyval.member) = (yyvsp[-2].member);
}
-#line 2921 "gram.c"
+#line 3036 "gram.c"
break;
case 145: /* opgroup: group */
-#line 1008 "gram.y"
+#line 1111 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = false;
}
-#line 2930 "gram.c"
+#line 3045 "gram.c"
break;
case 146: /* opgroup: '!' group */
-#line 1012 "gram.y"
+#line 1115 "gram.y"
{
(yyval.member) = (yyvsp[0].member);
(yyval.member)->negated = true;
}
-#line 2939 "gram.c"
+#line 3054 "gram.c"
break;
case 147: /* group: ALIAS */
-#line 1018 "gram.y"
+#line 1121 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), ALIAS);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2951 "gram.c"
+#line 3068 "gram.c"
break;
case 148: /* group: ALL */
-#line 1025 "gram.y"
+#line 1130 "gram.y"
{
(yyval.member) = new_member(NULL, ALL);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2963 "gram.c"
+#line 3081 "gram.c"
break;
case 149: /* group: WORD */
-#line 1032 "gram.y"
+#line 1138 "gram.y"
{
(yyval.member) = new_member((yyvsp[0].string), WORD);
if ((yyval.member) == NULL) {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, (yyvsp[0].string));
+ parser_leak_add(LEAK_MEMBER, (yyval.member));
}
-#line 2975 "gram.c"
+#line 3095 "gram.c"
break;
-#line 2979 "gram.c"
+#line 3099 "gram.c"
default: break;
}
@@ -3175,7 +3295,7 @@ yyreturn:
return yyresult;
}
-#line 1040 "gram.y"
+#line 1148 "gram.y"
/* Like yyerror() but takes a printf-style format string. */
void
@@ -3183,10 +3303,6 @@ sudoerserrorf(const char *fmt, ...)
{
debug_decl(sudoerserrorf, SUDOERS_DEBUG_PARSER);
- /* The lexer displays more detailed messages for ERROR tokens. */
- if (sudoerschar == ERROR)
- debug_return;
-
/* Save the line the first error occurred on. */
if (errorlineno == -1) {
errorlineno = this_lineno;
@@ -3203,8 +3319,12 @@ sudoerserrorf(const char *fmt, ...)
/* Warnings are displayed in the user's locale. */
sudoers_setlocale(SUDOERS_LOCALE_USER, &oldlocale);
+
va_start(ap, fmt);
- if (strcmp(fmt, "%s") == 0) {
+ if (sudoerschar == ERROR) {
+ /* Use error string from lexer. */
+ s = _(sudoers_errstr);
+ } else if (strcmp(fmt, "%s") == 0) {
/* Optimize common case, a single string. */
s = _(va_arg(ap, char *));
} else {
@@ -3306,16 +3426,6 @@ new_member(char *name, int type)
debug_return_ptr(m);
}
-/*
- * Like new_member() but uses ALL for the type.
- * Used by the ldap and sssd back-ends, which don't include gram.h.
- */
-struct member *
-new_member_all(char *name)
-{
- return new_member(name, ALL);
-}
-
static struct sudo_command *
new_command(char *cmnd, char *args)
{
@@ -3327,6 +3437,7 @@ new_command(char *cmnd, char *args)
"unable to allocate memory");
debug_return_ptr(NULL);
}
+ /* garbage collected as part of struct member */
c->cmnd = cmnd;
c->args = args;
@@ -3383,15 +3494,18 @@ add_defaults(int type, struct member *bmem, struct defaults *defs)
sudoerserror(N_("unable to allocate memory"));
debug_return_bool(false);
}
- if (bmem != NULL)
+ if (bmem != NULL) {
+ parser_leak_remove(LEAK_MEMBER, bmem);
HLTQ_TO_TAILQ(binding, bmem, entries);
- else
+ } else {
TAILQ_INIT(binding);
+ }
/*
* Set type and binding (who it applies to) for new entries.
* Then add to the global defaults list.
*/
+ parser_leak_remove(LEAK_DEFAULTS, defs);
HLTQ_FOREACH_SAFE(d, defs, entries, next) {
d->type = type;
d->binding = binding;
@@ -3420,7 +3534,9 @@ add_userspec(struct member *members, struct privilege *privs)
u->line = this_lineno;
u->column = sudolinebuf.toke_start + 1;
u->file = rcstr_addref(sudoers);
+ parser_leak_remove(LEAK_MEMBER, members);
HLTQ_TO_TAILQ(&u->users, members, entries);
+ parser_leak_remove(LEAK_PRIVILEGE, privs);
HLTQ_TO_TAILQ(&u->privileges, privs, entries);
STAILQ_INIT(&u->comments);
TAILQ_INSERT_TAIL(&parsed_policy.userspecs, u, entries);
@@ -3506,12 +3622,9 @@ free_default(struct defaults *def, struct member_list **binding)
}
void
-free_privilege(struct privilege *priv)
+free_cmndspecs(struct cmndspec_list *csl)
{
struct member_list *runasuserlist = NULL, *runasgrouplist = NULL;
- struct member_list *prev_binding = NULL;
- struct cmndspec *cs;
- struct defaults *def;
char *runcwd = NULL, *runchroot = NULL;
#ifdef HAVE_SELINUX
char *role = NULL, *type = NULL;
@@ -3519,12 +3632,12 @@ free_privilege(struct privilege *priv)
#ifdef HAVE_PRIV_SET
char *privs = NULL, *limitprivs = NULL;
#endif /* HAVE_PRIV_SET */
- debug_decl(free_privilege, SUDOERS_DEBUG_PARSER);
+ struct cmndspec *cs;
+ debug_decl(free_cmndspecs, SUDOERS_DEBUG_PARSER);
+
+ while ((cs = TAILQ_FIRST(csl)) != NULL) {
+ TAILQ_REMOVE(csl, cs, entries);
- free(priv->ldap_role);
- free_members(&priv->hostlist);
- while ((cs = TAILQ_FIRST(&priv->cmndlist)) != NULL) {
- TAILQ_REMOVE(&priv->cmndlist, cs, entries);
/* Only free the first instance of runcwd/runchroot. */
if (cs->runcwd != runcwd) {
runcwd = cs->runcwd;
@@ -3570,6 +3683,20 @@ free_privilege(struct privilege *priv)
free_member(cs->cmnd);
free(cs);
}
+
+ debug_return;
+}
+
+void
+free_privilege(struct privilege *priv)
+{
+ struct member_list *prev_binding = NULL;
+ struct defaults *def;
+ debug_decl(free_privilege, SUDOERS_DEBUG_PARSER);
+
+ free(priv->ldap_role);
+ free_members(&priv->hostlist);
+ free_cmndspecs(&priv->cmndlist);
while ((def = TAILQ_FIRST(&priv->defaults)) != NULL) {
TAILQ_REMOVE(&priv->defaults, def, entries);
free_default(def, &prev_binding);
@@ -3665,6 +3792,7 @@ init_parser(const char *path, bool quiet, bool strict)
debug_decl(init_parser, SUDOERS_DEBUG_PARSER);
free_parse_tree(&parsed_policy);
+ parser_leak_init();
init_lexer();
rcstr_delref(sudoers);
@@ -3707,3 +3835,220 @@ init_options(struct command_options *opts)
opts->limitprivs = NULL;
#endif
}
+
+bool
+parser_leak_add(enum parser_leak_types type, void *v)
+{
+#ifdef NO_LEAKS
+ struct parser_leak_entry *entry;
+ debug_decl(parser_leak_add, SUDOERS_DEBUG_PARSER);
+
+ if (v == NULL)
+ debug_return_bool(false);
+
+ entry = calloc(1, sizeof(*entry));
+ if (entry == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_bool(false);
+ }
+ switch (type) {
+ case LEAK_PRIVILEGE:
+ entry->u.p = v;
+ break;
+ case LEAK_CMNDSPEC:
+ entry->u.cs = v;
+ break;
+ case LEAK_DEFAULTS:
+ entry->u.d = v;
+ break;
+ case LEAK_MEMBER:
+ entry->u.m = v;
+ break;
+ case LEAK_DIGEST:
+ entry->u.dig = v;
+ break;
+ case LEAK_RUNAS:
+ entry->u.rc = v;
+ break;
+ case LEAK_PTR:
+ entry->u.ptr = v;
+ break;
+ default:
+ free(entry);
+ sudo_warnx("unexpected leak type %d", type);
+ debug_return_bool(false);
+ }
+ entry->type = type;
+ SLIST_INSERT_HEAD(&parser_leak_list, entry, entries);
+ debug_return_bool(true);
+#else
+ return true;
+#endif /* NO_LEAKS */
+}
+
+bool
+parser_leak_remove(enum parser_leak_types type, void *v)
+{
+#ifdef NO_LEAKS
+ struct parser_leak_entry *entry, *prev = NULL;
+ debug_decl(parser_leak_remove, SUDOERS_DEBUG_PARSER);
+
+ if (v == NULL)
+ debug_return_bool(false);
+
+ SLIST_FOREACH(entry, &parser_leak_list, entries) {
+ switch (entry->type) {
+ case LEAK_PRIVILEGE:
+ if (entry->u.p == v)
+ goto found;
+ break;
+ case LEAK_CMNDSPEC:
+ if (entry->u.cs == v)
+ goto found;
+ break;
+ case LEAK_DEFAULTS:
+ if (entry->u.d == v)
+ goto found;
+ break;
+ case LEAK_MEMBER:
+ if (entry->u.m == v)
+ goto found;
+ break;
+ case LEAK_DIGEST:
+ if (entry->u.dig == v)
+ goto found;
+ break;
+ case LEAK_RUNAS:
+ if (entry->u.rc == v)
+ goto found;
+ break;
+ case LEAK_PTR:
+ if (entry->u.ptr == v)
+ goto found;
+ break;
+ default:
+ sudo_warnx("unexpected leak type %d in %p", entry->type, entry);
+ }
+ prev = entry;
+ }
+ /* If this happens, there is a bug in the leak tracking code. */
+ sudo_warnx("%s: unable to find %p, type %d", __func__, v, type);
+ debug_return_bool(false);
+found:
+ if (prev == NULL)
+ SLIST_REMOVE_HEAD(&parser_leak_list, entries);
+ else
+ SLIST_REMOVE_AFTER(prev, entries);
+ free(entry);
+ debug_return_bool(true);
+#else
+ return true;
+#endif /* NO_LEAKS */
+}
+
+void
+parser_leak_free(void)
+{
+#ifdef NO_LEAKS
+ struct parser_leak_entry *entry;
+ void *next;
+ debug_decl(parser_leak_run, SUDOERS_DEBUG_PARSER);
+
+ /* Free the leaks. */
+ while ((entry = SLIST_FIRST(&parser_leak_list))) {
+ SLIST_REMOVE_HEAD(&parser_leak_list, entries);
+ switch (entry->type) {
+ case LEAK_PRIVILEGE:
+ {
+ struct privilege *priv;
+
+ HLTQ_FOREACH_SAFE(priv, entry->u.p, entries, next)
+ free_privilege(priv);
+ free(entry);
+ }
+ break;
+ case LEAK_CMNDSPEC:
+ {
+ struct cmndspec_list specs;
+
+ HLTQ_TO_TAILQ(&specs, entry->u.cs, entries);
+ free_cmndspecs(&specs);
+ free(entry);
+ }
+ break;
+ case LEAK_DEFAULTS:
+ {
+ struct defaults_list defs;
+
+ HLTQ_TO_TAILQ(&defs, entry->u.d, entries);
+ free_defaults(&defs);
+ free(entry);
+ }
+ break;
+ case LEAK_MEMBER:
+ {
+ struct member *m;
+
+ HLTQ_FOREACH_SAFE(m, entry->u.m, entries, next)
+ free_member(m);
+ free(entry);
+ }
+ break;
+ case LEAK_DIGEST:
+ {
+ struct command_digest *dig;
+
+ HLTQ_FOREACH_SAFE(dig, entry->u.dig, entries, next) {
+ free(dig->digest_str);
+ free(dig);
+ }
+ free(entry);
+ }
+ break;
+ case LEAK_RUNAS:
+ {
+ struct member *m;
+
+ if (entry->u.rc->runasusers != NULL) {
+ HLTQ_FOREACH_SAFE(m, entry->u.rc->runasusers, entries, next)
+ free_member(m);
+ }
+ if (entry->u.rc->runasgroups != NULL) {
+ HLTQ_FOREACH_SAFE(m, entry->u.rc->runasgroups, entries, next)
+ free_member(m);
+ }
+ free(entry->u.rc);
+ free(entry);
+ break;
+ }
+ case LEAK_PTR:
+ free(entry->u.ptr);
+ free(entry);
+ break;
+ default:
+ sudo_warnx("unexpected garbage type %d", entry->type);
+ }
+ }
+
+ debug_return;
+#endif /* NO_LEAKS */
+}
+
+void
+parser_leak_init(void)
+{
+#ifdef NO_LEAKS
+ static bool initialized;
+ debug_decl(parser_leak_init, SUDOERS_DEBUG_PARSER);
+
+ if (!initialized) {
+ atexit(parser_leak_free);
+ initialized = true;
+ debug_return;
+ }
+
+ /* Already initialized, free existing leaks. */
+ parser_leak_free();
+ debug_return;
+#endif /* NO_LEAKS */
+}
diff --git a/plugins/sudoers/gram.h b/plugins/sudoers/gram.h
index 97c663862..e862e119a 100644
--- a/plugins/sudoers/gram.h
+++ b/plugins/sudoers/gram.h
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.7.4. */
+/* A Bison parser, made by GNU Bison 3.7.5. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
Inc.
This program is free software: you can redistribute it and/or modify
@@ -167,7 +167,7 @@ extern int sudoersdebug;
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
union YYSTYPE
{
-#line 83 "gram.y"
+#line 88 "gram.y"
struct cmndspec *cmndspec;
struct defaults *defaults;
diff --git a/plugins/sudoers/gram.y b/plugins/sudoers/gram.y
index d4dcf0d9b..874162732 100644
--- a/plugins/sudoers/gram.y
+++ b/plugins/sudoers/gram.y
@@ -59,6 +59,11 @@ char *errorfile = NULL;
static int alias_line, alias_column;
+#ifdef NO_LEAKS
+static struct parser_leak_list parser_leak_list =
+ SLIST_HEAD_INITIALIZER(parser_leak_list);
+#endif
+
struct sudoers_parse_tree parsed_policy = {
TAILQ_HEAD_INITIALIZER(parsed_policy.userspecs),
TAILQ_HEAD_INITIALIZER(parsed_policy.defaults),
@@ -207,16 +212,20 @@ entry : '\n' {
}
| include {
if (!push_include($1, false)) {
+ parser_leak_remove(LEAK_PTR, $1);
free($1);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
free($1);
}
| includedir {
if (!push_include($1, true)) {
+ parser_leak_remove(LEAK_PTR, $1);
free($1);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
free($1);
}
| userlist privileges '\n' {
@@ -279,6 +288,7 @@ includedir : INCLUDEDIR WORD '\n' {
defaults_list : defaults_entry
| defaults_list ',' defaults_entry {
+ parser_leak_remove(LEAK_DEFAULTS, $3);
HLTQ_CONCAT($1, $3, entries);
$$ = $1;
}
@@ -290,6 +300,8 @@ defaults_entry : DEFVAR {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_DEFAULTS, $$);
}
| '!' DEFVAR {
$$ = new_default($2, NULL, false);
@@ -297,6 +309,8 @@ defaults_entry : DEFVAR {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $2);
+ parser_leak_add(LEAK_DEFAULTS, $$);
}
| DEFVAR '=' WORD {
$$ = new_default($1, $3, true);
@@ -304,6 +318,9 @@ defaults_entry : DEFVAR {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_remove(LEAK_PTR, $3);
+ parser_leak_add(LEAK_DEFAULTS, $$);
}
| DEFVAR '+' WORD {
$$ = new_default($1, $3, '+');
@@ -311,6 +328,9 @@ defaults_entry : DEFVAR {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_remove(LEAK_PTR, $3);
+ parser_leak_add(LEAK_DEFAULTS, $$);
}
| DEFVAR '-' WORD {
$$ = new_default($1, $3, '-');
@@ -318,11 +338,15 @@ defaults_entry : DEFVAR {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_remove(LEAK_PTR, $3);
+ parser_leak_add(LEAK_DEFAULTS, $$);
}
;
privileges : privilege
| privileges ':' privilege {
+ parser_leak_remove(LEAK_PRIVILEGE, $3);
HLTQ_CONCAT($1, $3, entries);
$$ = $1;
}
@@ -338,8 +362,11 @@ privilege : hostlist '=' cmndspeclist {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_PRIVILEGE, p);
TAILQ_INIT(&p->defaults);
+ parser_leak_remove(LEAK_MEMBER, $1);
HLTQ_TO_TAILQ(&p->hostlist, $1, entries);
+ parser_leak_remove(LEAK_CMNDSPEC, $3);
HLTQ_TO_TAILQ(&p->cmndlist, $3, entries);
HLTQ_INIT(p, entries);
$$ = p;
@@ -362,6 +389,8 @@ host : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| ALL {
$$ = new_member(NULL, ALL);
@@ -369,6 +398,7 @@ host : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, $$);
}
| NETGROUP {
$$ = new_member($1, NETGROUP);
@@ -376,6 +406,8 @@ host : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| NTWKADDR {
$$ = new_member($1, NTWKADDR);
@@ -383,6 +415,8 @@ host : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| WORD {
$$ = new_member($1, WORD);
@@ -390,6 +424,8 @@ host : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
;
@@ -397,6 +433,7 @@ cmndspeclist : cmndspec
| cmndspeclist ',' cmndspec {
struct cmndspec *prev;
prev = HLTQ_LAST($1, cmndspec, entries);
+ parser_leak_remove(LEAK_CMNDSPEC, $3);
HLTQ_CONCAT($1, $3, entries);
/* propagate runcwd and runchroot */
@@ -459,6 +496,7 @@ cmndspec : runasspec options cmndtag digcmnd {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_CMNDSPEC, cs);
if ($1 != NULL) {
if ($1->runasusers != NULL) {
cs->runasuserlist =
@@ -468,6 +506,7 @@ cmndspec : runasspec options cmndtag digcmnd {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ /* g/c done via runas container */
HLTQ_TO_TAILQ(cs->runasuserlist,
$1->runasusers, entries);
}
@@ -479,26 +518,35 @@ cmndspec : runasspec options cmndtag digcmnd {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ /* g/c done via runas container */
HLTQ_TO_TAILQ(cs->runasgrouplist,
$1->runasgroups, entries);
}
+ parser_leak_remove(LEAK_RUNAS, $1);
free($1);
}
#ifdef HAVE_SELINUX
cs->role = $2.role;
+ parser_leak_remove(LEAK_PTR, $2.role);
cs->type = $2.type;
+ parser_leak_remove(LEAK_PTR, $2.type);
#endif
#ifdef HAVE_PRIV_SET
cs->privs = $2.privs;
+ parser_leak_remove(LEAK_PTR, $2.privs);
cs->limitprivs = $2.limitprivs;
+ parser_leak_remove(LEAK_PTR, $2.limitprivs);
#endif
cs->notbefore = $2.notbefore;
cs->notafter = $2.notafter;
cs->timeout = $2.timeout;
cs->runcwd = $2.runcwd;
+ parser_leak_remove(LEAK_PTR, $2.runcwd);
cs->runchroot = $2.runchroot;
+ parser_leak_remove(LEAK_PTR, $2.runchroot);
cs->tags = $3;
cs->cmnd = $4;
+ parser_leak_remove(LEAK_MEMBER, $4);
HLTQ_INIT(cs, entries);
/* sudo "ALL" implies the SETENV tag */
if (cs->cmnd->type == ALL && !cs->cmnd->negated &&
@@ -514,6 +562,8 @@ digestspec : SHA224_TOK ':' DIGEST {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $3);
+ parser_leak_add(LEAK_DIGEST, $$);
}
| SHA256_TOK ':' DIGEST {
$$ = new_digest(SUDO_DIGEST_SHA256, $3);
@@ -521,6 +571,8 @@ digestspec : SHA224_TOK ':' DIGEST {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $3);
+ parser_leak_add(LEAK_DIGEST, $$);
}
| SHA384_TOK ':' DIGEST {
$$ = new_digest(SUDO_DIGEST_SHA384, $3);
@@ -528,6 +580,8 @@ digestspec : SHA224_TOK ':' DIGEST {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $3);
+ parser_leak_add(LEAK_DIGEST, $$);
}
| SHA512_TOK ':' DIGEST {
$$ = new_digest(SUDO_DIGEST_SHA512, $3);
@@ -535,11 +589,14 @@ digestspec : SHA224_TOK ':' DIGEST {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $3);
+ parser_leak_add(LEAK_DIGEST, $$);
}
;
digestlist : digestspec
| digestlist ',' digestspec {
+ parser_leak_remove(LEAK_DIGEST, $3);
HLTQ_CONCAT($1, $3, entries);
$$ = $1;
}
@@ -564,6 +621,7 @@ digcmnd : opcmnd {
}
$2->name = (char *)c;
}
+ parser_leak_remove(LEAK_DIGEST, $1);
HLTQ_TO_TAILQ(&c->digests, $1, entries);
$$ = $2;
}
@@ -658,6 +716,7 @@ runaslist : /* empty */ {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, $$);
}
| userlist {
$$ = calloc(1, sizeof(struct runascontainer));
@@ -665,6 +724,8 @@ runaslist : /* empty */ {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, $$);
+ parser_leak_remove(LEAK_MEMBER, $1);
$$->runasusers = $1;
/* $$->runasgroups = NULL; */
}
@@ -674,6 +735,9 @@ runaslist : /* empty */ {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, $$);
+ parser_leak_remove(LEAK_MEMBER, $1);
+ parser_leak_remove(LEAK_MEMBER, $3);
$$->runasusers = $1;
$$->runasgroups = $3;
}
@@ -683,6 +747,8 @@ runaslist : /* empty */ {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, $$);
+ parser_leak_remove(LEAK_MEMBER, $2);
/* $$->runasusers = NULL; */
$$->runasgroups = $2;
}
@@ -700,6 +766,7 @@ runaslist : /* empty */ {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_RUNAS, $$);
}
;
@@ -725,15 +792,18 @@ options : /* empty */ {
init_options(&$$);
}
| options chdirspec {
+ parser_leak_remove(LEAK_PTR, $$.runcwd);
free($$.runcwd);
$$.runcwd = $2;
}
| options chrootspec {
+ parser_leak_remove(LEAK_PTR, $$.runchroot);
free($$.runchroot);
$$.runchroot = $2;
}
| options notbeforespec {
$$.notbefore = parse_gentime($2);
+ parser_leak_remove(LEAK_PTR, $2);
free($2);
if ($$.notbefore == -1) {
sudoerserror(N_("invalid notbefore value"));
@@ -742,6 +812,7 @@ options : /* empty */ {
}
| options notafterspec {
$$.notafter = parse_gentime($2);
+ parser_leak_remove(LEAK_PTR, $2);
free($2);
if ($$.notafter == -1) {
sudoerserror(N_("invalid notafter value"));
@@ -750,6 +821,7 @@ options : /* empty */ {
}
| options timeoutspec {
$$.timeout = parse_timeout($2);
+ parser_leak_remove(LEAK_PTR, $2);
free($2);
if ($$.timeout == -1) {
if (errno == ERANGE)
@@ -761,24 +833,28 @@ options : /* empty */ {
}
| options rolespec {
#ifdef HAVE_SELINUX
+ parser_leak_remove(LEAK_PTR, $$.role);
free($$.role);
$$.role = $2;
#endif
}
| options typespec {
#ifdef HAVE_SELINUX
+ parser_leak_remove(LEAK_PTR, $$.type);
free($$.type);
$$.type = $2;
#endif
}
| options privsspec {
#ifdef HAVE_PRIV_SET
+ parser_leak_remove(LEAK_PTR, $$.privs);
free($$.privs);
$$.privs = $2;
#endif
}
| options limitprivsspec {
#ifdef HAVE_PRIV_SET
+ parser_leak_remove(LEAK_PTR, $$.limitprivs);
free($$.limitprivs);
$$.limitprivs = $2;
#endif
@@ -838,6 +914,7 @@ cmnd : ALL {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, $$);
}
| ALIAS {
$$ = new_member($1, ALIAS);
@@ -845,6 +922,8 @@ cmnd : ALL {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| COMMAND {
struct sudo_command *c;
@@ -859,6 +938,9 @@ cmnd : ALL {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1.cmnd);
+ parser_leak_remove(LEAK_PTR, $1.args);
+ parser_leak_add(LEAK_MEMBER, $$);
}
;
@@ -875,12 +957,15 @@ hostalias : ALIAS {
alias_error($1, errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_remove(LEAK_MEMBER, $4);
}
| reserved_alias '=' hostlist
;
hostlist : ophost
| hostlist ',' ophost {
+ parser_leak_remove(LEAK_MEMBER, $3);
HLTQ_CONCAT($1, $3, entries);
$$ = $1;
}
@@ -899,12 +984,15 @@ cmndalias : ALIAS {
alias_error($1, errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_remove(LEAK_MEMBER, $4);
}
| reserved_alias '=' cmndlist
;
cmndlist : digcmnd
| cmndlist ',' digcmnd {
+ parser_leak_remove(LEAK_MEMBER, $3);
HLTQ_CONCAT($1, $3, entries);
$$ = $1;
}
@@ -923,6 +1011,8 @@ runasalias : ALIAS {
alias_error($1, errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_remove(LEAK_MEMBER, $4);
}
| reserved_alias '=' userlist
;
@@ -940,12 +1030,15 @@ useralias : ALIAS {
alias_error($1, errno);
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_remove(LEAK_MEMBER, $4);
}
| reserved_alias '=' userlist
;
userlist : opuser
| userlist ',' opuser {
+ parser_leak_remove(LEAK_MEMBER, $3);
HLTQ_CONCAT($1, $3, entries);
$$ = $1;
}
@@ -967,6 +1060,8 @@ user : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| ALL {
$$ = new_member(NULL, ALL);
@@ -974,6 +1069,7 @@ user : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, $$);
}
| NETGROUP {
$$ = new_member($1, NETGROUP);
@@ -981,6 +1077,8 @@ user : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| USERGROUP {
$$ = new_member($1, USERGROUP);
@@ -988,6 +1086,8 @@ user : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| WORD {
$$ = new_member($1, WORD);
@@ -995,11 +1095,14 @@ user : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
;
grouplist : opgroup
| grouplist ',' opgroup {
+ parser_leak_remove(LEAK_MEMBER, $3);
HLTQ_CONCAT($1, $3, entries);
$$ = $1;
}
@@ -1021,6 +1124,8 @@ group : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
| ALL {
$$ = new_member(NULL, ALL);
@@ -1028,6 +1133,7 @@ group : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_add(LEAK_MEMBER, $$);
}
| WORD {
$$ = new_member($1, WORD);
@@ -1035,6 +1141,8 @@ group : ALIAS {
sudoerserror(N_("unable to allocate memory"));
YYERROR;
}
+ parser_leak_remove(LEAK_PTR, $1);
+ parser_leak_add(LEAK_MEMBER, $$);
}
;
%%
@@ -1044,10 +1152,6 @@ sudoerserrorf(const char *fmt, ...)
{
debug_decl(sudoerserrorf, SUDOERS_DEBUG_PARSER);
- /* The lexer displays more detailed messages for ERROR tokens. */
- if (sudoerschar == ERROR)
- debug_return;
-
/* Save the line the first error occurred on. */
if (errorlineno == -1) {
errorlineno = this_lineno;
@@ -1064,8 +1168,12 @@ sudoerserrorf(const char *fmt, ...)
/* Warnings are displayed in the user's locale. */
sudoers_setlocale(SUDOERS_LOCALE_USER, &oldlocale);
+
va_start(ap, fmt);
- if (strcmp(fmt, "%s") == 0) {
+ if (sudoerschar == ERROR) {
+ /* Use error string from lexer. */
+ s = _(sudoers_errstr);
+ } else if (strcmp(fmt, "%s") == 0) {
/* Optimize common case, a single string. */
s = _(va_arg(ap, char *));
} else {
@@ -1167,16 +1275,6 @@ new_member(char *name, int type)
debug_return_ptr(m);
}
-/*
- * Like new_member() but uses ALL for the type.
- * Used by the ldap and sssd back-ends, which don't include gram.h.
- */
-struct member *
-new_member_all(char *name)
-{
- return new_member(name, ALL);
-}
-
static struct sudo_command *
new_command(char *cmnd, char *args)
{
@@ -1188,6 +1286,7 @@ new_command(char *cmnd, char *args)
"unable to allocate memory");
debug_return_ptr(NULL);
}
+ /* garbage collected as part of struct member */
c->cmnd = cmnd;
c->args = args;
@@ -1244,15 +1343,18 @@ add_defaults(int type, struct member *bmem, struct defaults *defs)
sudoerserror(N_("unable to allocate memory"));
debug_return_bool(false);
}
- if (bmem != NULL)
+ if (bmem != NULL) {
+ parser_leak_remove(LEAK_MEMBER, bmem);
HLTQ_TO_TAILQ(binding, bmem, entries);
- else
+ } else {
TAILQ_INIT(binding);
+ }
/*
* Set type and binding (who it applies to) for new entries.
* Then add to the global defaults list.
*/
+ parser_leak_remove(LEAK_DEFAULTS, defs);
HLTQ_FOREACH_SAFE(d, defs, entries, next) {
d->type = type;
d->binding = binding;
@@ -1281,7 +1383,9 @@ add_userspec(struct member *members, struct privilege *privs)
u->line = this_lineno;
u->column = sudolinebuf.toke_start + 1;
u->file = rcstr_addref(sudoers);
+ parser_leak_remove(LEAK_MEMBER, members);
HLTQ_TO_TAILQ(&u->users, members, entries);
+ parser_leak_remove(LEAK_PRIVILEGE, privs);
HLTQ_TO_TAILQ(&u->privileges, privs, entries);
STAILQ_INIT(&u->comments);
TAILQ_INSERT_TAIL(&parsed_policy.userspecs, u, entries);
@@ -1367,12 +1471,9 @@ free_default(struct defaults *def, struct member_list **binding)
}
void
-free_privilege(struct privilege *priv)
+free_cmndspecs(struct cmndspec_list *csl)
{
struct member_list *runasuserlist = NULL, *runasgrouplist = NULL;
- struct member_list *prev_binding = NULL;
- struct cmndspec *cs;
- struct defaults *def;
char *runcwd = NULL, *runchroot = NULL;
#ifdef HAVE_SELINUX
char *role = NULL, *type = NULL;
@@ -1380,12 +1481,12 @@ free_privilege(struct privilege *priv)
#ifdef HAVE_PRIV_SET
char *privs = NULL, *limitprivs = NULL;
#endif /* HAVE_PRIV_SET */
- debug_decl(free_privilege, SUDOERS_DEBUG_PARSER);
+ struct cmndspec *cs;
+ debug_decl(free_cmndspecs, SUDOERS_DEBUG_PARSER);
+
+ while ((cs = TAILQ_FIRST(csl)) != NULL) {
+ TAILQ_REMOVE(csl, cs, entries);
- free(priv->ldap_role);
- free_members(&priv->hostlist);
- while ((cs = TAILQ_FIRST(&priv->cmndlist)) != NULL) {
- TAILQ_REMOVE(&priv->cmndlist, cs, entries);
/* Only free the first instance of runcwd/runchroot. */
if (cs->runcwd != runcwd) {
runcwd = cs->runcwd;
@@ -1431,6 +1532,20 @@ free_privilege(struct privilege *priv)
free_member(cs->cmnd);
free(cs);
}
+
+ debug_return;
+}
+
+void
+free_privilege(struct privilege *priv)
+{
+ struct member_list *prev_binding = NULL;
+ struct defaults *def;
+ debug_decl(free_privilege, SUDOERS_DEBUG_PARSER);
+
+ free(priv->ldap_role);
+ free_members(&priv->hostlist);
+ free_cmndspecs(&priv->cmndlist);
while ((def = TAILQ_FIRST(&priv->defaults)) != NULL) {
TAILQ_REMOVE(&priv->defaults, def, entries);
free_default(def, &prev_binding);
@@ -1526,6 +1641,7 @@ init_parser(const char *path, bool quiet, bool strict)
debug_decl(init_parser, SUDOERS_DEBUG_PARSER);
free_parse_tree(&parsed_policy);
+ parser_leak_init();
init_lexer();
rcstr_delref(sudoers);
@@ -1568,3 +1684,220 @@ init_options(struct command_options *opts)
opts->limitprivs = NULL;
#endif
}
+
+bool
+parser_leak_add(enum parser_leak_types type, void *v)
+{
+#ifdef NO_LEAKS
+ struct parser_leak_entry *entry;
+ debug_decl(parser_leak_add, SUDOERS_DEBUG_PARSER);
+
+ if (v == NULL)
+ debug_return_bool(false);
+
+ entry = calloc(1, sizeof(*entry));
+ if (entry == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_bool(false);
+ }
+ switch (type) {
+ case LEAK_PRIVILEGE:
+ entry->u.p = v;
+ break;
+ case LEAK_CMNDSPEC:
+ entry->u.cs = v;
+ break;
+ case LEAK_DEFAULTS:
+ entry->u.d = v;
+ break;
+ case LEAK_MEMBER:
+ entry->u.m = v;
+ break;
+ case LEAK_DIGEST:
+ entry->u.dig = v;
+ break;
+ case LEAK_RUNAS:
+ entry->u.rc = v;
+ break;
+ case LEAK_PTR:
+ entry->u.ptr = v;
+ break;
+ default:
+ free(entry);
+ sudo_warnx("unexpected leak type %d", type);
+ debug_return_bool(false);
+ }
+ entry->type = type;
+ SLIST_INSERT_HEAD(&parser_leak_list, entry, entries);
+ debug_return_bool(true);
+#else
+ return true;
+#endif /* NO_LEAKS */
+}
+
+bool
+parser_leak_remove(enum parser_leak_types type, void *v)
+{
+#ifdef NO_LEAKS
+ struct parser_leak_entry *entry, *prev = NULL;
+ debug_decl(parser_leak_remove, SUDOERS_DEBUG_PARSER);
+
+ if (v == NULL)
+ debug_return_bool(false);
+
+ SLIST_FOREACH(entry, &parser_leak_list, entries) {
+ switch (entry->type) {
+ case LEAK_PRIVILEGE:
+ if (entry->u.p == v)
+ goto found;
+ break;
+ case LEAK_CMNDSPEC:
+ if (entry->u.cs == v)
+ goto found;
+ break;
+ case LEAK_DEFAULTS:
+ if (entry->u.d == v)
+ goto found;
+ break;
+ case LEAK_MEMBER:
+ if (entry->u.m == v)
+ goto found;
+ break;
+ case LEAK_DIGEST:
+ if (entry->u.dig == v)
+ goto found;
+ break;
+ case LEAK_RUNAS:
+ if (entry->u.rc == v)
+ goto found;
+ break;
+ case LEAK_PTR:
+ if (entry->u.ptr == v)
+ goto found;
+ break;
+ default:
+ sudo_warnx("unexpected leak type %d in %p", entry->type, entry);
+ }
+ prev = entry;
+ }
+ /* If this happens, there is a bug in the leak tracking code. */
+ sudo_warnx("%s: unable to find %p, type %d", __func__, v, type);
+ debug_return_bool(false);
+found:
+ if (prev == NULL)
+ SLIST_REMOVE_HEAD(&parser_leak_list, entries);
+ else
+ SLIST_REMOVE_AFTER(prev, entries);
+ free(entry);
+ debug_return_bool(true);
+#else
+ return true;
+#endif /* NO_LEAKS */
+}
+
+void
+parser_leak_free(void)
+{
+#ifdef NO_LEAKS
+ struct parser_leak_entry *entry;
+ void *next;
+ debug_decl(parser_leak_run, SUDOERS_DEBUG_PARSER);
+
+ /* Free the leaks. */
+ while ((entry = SLIST_FIRST(&parser_leak_list))) {
+ SLIST_REMOVE_HEAD(&parser_leak_list, entries);
+ switch (entry->type) {
+ case LEAK_PRIVILEGE:
+ {
+ struct privilege *priv;
+
+ HLTQ_FOREACH_SAFE(priv, entry->u.p, entries, next)
+ free_privilege(priv);
+ free(entry);
+ }
+ break;
+ case LEAK_CMNDSPEC:
+ {
+ struct cmndspec_list specs;
+
+ HLTQ_TO_TAILQ(&specs, entry->u.cs, entries);
+ free_cmndspecs(&specs);
+ free(entry);
+ }
+ break;
+ case LEAK_DEFAULTS:
+ {
+ struct defaults_list defs;
+
+ HLTQ_TO_TAILQ(&defs, entry->u.d, entries);
+ free_defaults(&defs);
+ free(entry);
+ }
+ break;
+ case LEAK_MEMBER:
+ {
+ struct member *m;
+
+ HLTQ_FOREACH_SAFE(m, entry->u.m, entries, next)
+ free_member(m);
+ free(entry);
+ }
+ break;
+ case LEAK_DIGEST:
+ {
+ struct command_digest *dig;
+
+ HLTQ_FOREACH_SAFE(dig, entry->u.dig, entries, next) {
+ free(dig->digest_str);
+ free(dig);
+ }
+ free(entry);
+ }
+ break;
+ case LEAK_RUNAS:
+ {
+ struct member *m;
+
+ if (entry->u.rc->runasusers != NULL) {
+ HLTQ_FOREACH_SAFE(m, entry->u.rc->runasusers, entries, next)
+ free_member(m);
+ }
+ if (entry->u.rc->runasgroups != NULL) {
+ HLTQ_FOREACH_SAFE(m, entry->u.rc->runasgroups, entries, next)
+ free_member(m);
+ }
+ free(entry->u.rc);
+ free(entry);
+ break;
+ }
+ case LEAK_PTR:
+ free(entry->u.ptr);
+ free(entry);
+ break;
+ default:
+ sudo_warnx("unexpected garbage type %d", entry->type);
+ }
+ }
+
+ debug_return;
+#endif /* NO_LEAKS */
+}
+
+void
+parser_leak_init(void)
+{
+#ifdef NO_LEAKS
+ static bool initialized;
+ debug_decl(parser_leak_init, SUDOERS_DEBUG_PARSER);
+
+ if (!initialized) {
+ atexit(parser_leak_free);
+ initialized = true;
+ debug_return;
+ }
+
+ /* Already initialized, free existing leaks. */
+ parser_leak_free();
+ debug_return;
+#endif /* NO_LEAKS */
+}
diff --git a/plugins/sudoers/iolog.c b/plugins/sudoers/iolog.c
index 75af12d83..8e5a37527 100644
--- a/plugins/sudoers/iolog.c
+++ b/plugins/sudoers/iolog.c
@@ -284,6 +284,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
continue;
}
if (strncmp(*cur, "cwd=", sizeof("cwd=") - 1) == 0) {
+ free(evlog->cwd);
evlog->cwd = strdup(*cur + sizeof("cwd=") - 1);
if (evlog->cwd == NULL)
goto oom;
@@ -292,6 +293,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
break;
case 'h':
if (strncmp(*cur, "host=", sizeof("host=") - 1) == 0) {
+ free(evlog->submithost);
evlog->submithost = strdup(*cur + sizeof("host=") - 1);
if (evlog->submithost == NULL)
goto oom;
@@ -309,6 +311,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
break;
case 't':
if (strncmp(*cur, "tty=", sizeof("tty=") - 1) == 0) {
+ free(evlog->ttyname);
evlog->ttyname = strdup(*cur + sizeof("tty=") - 1);
if (evlog->ttyname == NULL)
goto oom;
@@ -317,6 +320,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
break;
case 'u':
if (strncmp(*cur, "user=", sizeof("user=") - 1) == 0) {
+ free(evlog->submituser);
evlog->submituser = strdup(*cur + sizeof("user=") - 1);
if (evlog->submituser == NULL)
goto oom;
@@ -330,12 +334,14 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
switch (**cur) {
case 'c':
if (strncmp(*cur, "command=", sizeof("command=") - 1) == 0) {
+ free(evlog->command);
evlog->command = strdup(*cur + sizeof("command=") - 1);
if (evlog->command == NULL)
goto oom;
continue;
}
if (strncmp(*cur, "chroot=", sizeof("chroot=") - 1) == 0) {
+ free(evlog->runchroot);
evlog->runchroot = strdup(*cur + sizeof("chroot=") - 1);
if (evlog->runchroot == NULL)
goto oom;
@@ -349,12 +355,11 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
continue;
}
if (strncmp(*cur, "iolog_path=", sizeof("iolog_path=") - 1) == 0) {
+ free(evlog->iolog_path);
evlog->iolog_path = strdup(*cur + sizeof("iolog_path=") - 1);
if (evlog->iolog_path == NULL)
goto oom;
- evlog->iolog_file = strrchr(evlog->iolog_path, '/');
- if (evlog->iolog_file != NULL)
- evlog->iolog_file++;
+ evlog->iolog_file = sudo_basename(evlog->iolog_path);
continue;
}
if (strncmp(*cur, "iolog_stdin=", sizeof("iolog_stdin=") - 1) == 0) {
@@ -461,18 +466,21 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
}
#if defined(HAVE_OPENSSL)
if (strncmp(*cur, "log_server_cabundle=", sizeof("log_server_cabundle=") - 1) == 0) {
+ free(details->ca_bundle);
details->ca_bundle = strdup(*cur + sizeof("log_server_cabundle=") - 1);
if (details->ca_bundle == NULL)
goto oom;
continue;
}
if (strncmp(*cur, "log_server_peer_cert=", sizeof("log_server_peer_cert=") - 1) == 0) {
+ free(details->cert_file);
details->cert_file = strdup(*cur + sizeof("log_server_peer_cert=") - 1);
if (details->cert_file == NULL)
goto oom;
continue;
}
if (strncmp(*cur, "log_server_peer_key=", sizeof("log_server_peer_key=") - 1) == 0) {
+ free(details->key_file);
details->key_file = strdup(*cur + sizeof("log_server_peer_key=") - 1);
if (details->key_file == NULL)
goto oom;
@@ -516,6 +524,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
continue;
}
if (strncmp(*cur, "runcwd=", sizeof("runcwd=") - 1) == 0) {
+ free(evlog->runcwd);
evlog->runcwd = strdup(*cur + sizeof("runcwd=") - 1);
if (evlog->runcwd == NULL)
goto oom;
@@ -561,6 +570,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
pw = sudo_getpwuid(evlog->runuid);
if (pw != NULL) {
gid_t pw_gid = pw->pw_gid;
+ free(evlog->runuser);
evlog->runuser = strdup(pw->pw_name);
sudo_pw_delref(pw);
if (evlog->runuser == NULL)
@@ -568,6 +578,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
if (evlog->rungid != pw_gid) {
gr = sudo_getgrgid(evlog->rungid);
if (gr != NULL) {
+ free(evlog->rungroup);
evlog->rungroup = strdup(gr->gr_name);
sudo_gr_delref(gr);
if (evlog->rungroup == NULL)
@@ -575,6 +586,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
} else {
idbuf[0] = '#';
strlcpy(&idbuf[1], runas_gid_str, sizeof(idbuf) - 1);
+ free(evlog->rungroup);
evlog->rungroup = strdup(idbuf);
if (evlog->rungroup == NULL)
goto oom;
@@ -583,6 +595,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[],
} else {
idbuf[0] = '#';
strlcpy(&idbuf[1], runas_uid_str, sizeof(idbuf) - 1);
+ free(evlog->runuser);
evlog->runuser = strdup(idbuf);
if (evlog->runuser == NULL)
goto oom;
diff --git a/plugins/sudoers/ldap.c b/plugins/sudoers/ldap.c
index a13da73e8..dbaad31be 100644
--- a/plugins/sudoers/ldap.c
+++ b/plugins/sudoers/ldap.c
@@ -1258,7 +1258,7 @@ ldap_to_sudoers(LDAP *ld, struct ldap_result *lres,
TAILQ_INSERT_TAIL(ldap_userspecs, us, entries);
/* The user has already matched, use ALL as wildcard. */
- if ((m = new_member_all(NULL)) == NULL)
+ if ((m = sudo_ldap_new_member_all()) == NULL)
goto oom;
TAILQ_INSERT_TAIL(&us->users, m, entries);
diff --git a/plugins/sudoers/ldap_util.c b/plugins/sudoers/ldap_util.c
index 080c77e7b..23c93c088 100644
--- a/plugins/sudoers/ldap_util.c
+++ b/plugins/sudoers/ldap_util.c
@@ -409,7 +409,7 @@ sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers,
if (hosts == NULL) {
/* The host has already matched, use ALL as wildcard. */
- if ((m = new_member_all(NULL)) == NULL)
+ if ((m = sudo_ldap_new_member_all()) == NULL)
goto oom;
TAILQ_INSERT_TAIL(&priv->hostlist, m, entries);
} else {
@@ -470,6 +470,17 @@ sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers,
cmndspec->runasgrouplist = prev_cmndspec->runasgrouplist;
cmndspec->notbefore = prev_cmndspec->notbefore;
cmndspec->notafter = prev_cmndspec->notafter;
+ cmndspec->timeout = prev_cmndspec->timeout;
+ cmndspec->runchroot = prev_cmndspec->runchroot;
+ cmndspec->runcwd = prev_cmndspec->runcwd;
+#ifdef HAVE_SELINUX
+ cmndspec->role = prev_cmndspec->role;
+ cmndspec->type = prev_cmndspec->type;
+#endif /* HAVE_SELINUX */
+#ifdef HAVE_PRIV_SET
+ cmndspec->privs = prev_cmndspec->privs;
+ cmndspec->limitprivs = prev_cmndspec->limitprivs;
+#endif /* HAVE_PRIV_SET */
cmndspec->tags = prev_cmndspec->tags;
if (cmndspec->tags.setenv == IMPLIED)
cmndspec->tags.setenv = UNSPEC;
@@ -514,26 +525,60 @@ sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers,
op = sudo_ldap_parse_option(opt, &var, &val);
if (strcmp(var, "command_timeout") == 0 && val != NULL) {
+ if (cmndspec->timeout != UNSPEC) {
+ sudo_warnx(U_("duplicate sudoOption: %s%s%s"), var,
+ op == '+' ? "+=" : op == '-' ? "-=" : "=", val);
+ }
cmndspec->timeout = parse_timeout(val);
} else if (strcmp(var, "runchroot") == 0 && val != NULL) {
+ if (cmndspec->runchroot != NULL) {
+ free(cmndspec->runchroot);
+ sudo_warnx(U_("duplicate sudoOption: %s%s%s"), var,
+ op == '+' ? "+=" : op == '-' ? "-=" : "=", val);
+ }
if ((cmndspec->runchroot = strdup(val)) == NULL)
break;
} else if (strcmp(var, "runcwd") == 0 && val != NULL) {
+ if (cmndspec->runcwd != NULL) {
+ free(cmndspec->runcwd);
+ sudo_warnx(U_("duplicate sudoOption: %s%s%s"), var,
+ op == '+' ? "+=" : op == '-' ? "-=" : "=", val);
+ }
if ((cmndspec->runcwd = strdup(val)) == NULL)
break;
#ifdef HAVE_SELINUX
} else if (strcmp(var, "role") == 0 && val != NULL) {
+ if (cmndspec->role != NULL) {
+ free(cmndspec->role);
+ sudo_warnx(U_("duplicate sudoOption: %s%s%s"), var,
+ op == '+' ? "+=" : op == '-' ? "-=" : "=", val);
+ }
if ((cmndspec->role = strdup(val)) == NULL)
break;
} else if (strcmp(var, "type") == 0 && val != NULL) {
+ if (cmndspec->type != NULL) {
+ free(cmndspec->type);
+ sudo_warnx(U_("duplicate sudoOption: %s%s%s"), var,
+ op == '+' ? "+=" : op == '-' ? "-=" : "=", val);
+ }
if ((cmndspec->type = strdup(val)) == NULL)
break;
#endif /* HAVE_SELINUX */
#ifdef HAVE_PRIV_SET
} else if (strcmp(var, "privs") == 0 && val != NULL) {
+ if (cmndspec->privs != NULL) {
+ free(cmndspec->privs);
+ sudo_warnx(U_("duplicate sudoOption: %s%s%s"), var,
+ op == '+' ? "+=" : op == '-' ? "-=" : "=", val);
+ }
if ((cmndspec->privs = strdup(val)) == NULL)
break;
} else if (strcmp(var, "limitprivs") == 0 && val != NULL) {
+ if (cmndspec->limitprivs != NULL) {
+ free(cmndspec->limitprivs);
+ sudo_warnx(U_("duplicate sudoOption: %s%s%s"), var,
+ op == '+' ? "+=" : op == '-' ? "-=" : "=", val);
+ }
if ((cmndspec->limitprivs = strdup(val)) == NULL)
break;
#endif /* HAVE_PRIV_SET */
@@ -608,3 +653,15 @@ oom:
}
debug_return_ptr(NULL);
}
+
+/* So ldap.c and sssd.c don't need to include gram.h */
+struct member *
+sudo_ldap_new_member_all(void)
+{
+ struct member *m;
+ debug_decl(sudo_ldap_new_member_all, SUDOERS_DEBUG_LDAP);
+
+ if ((m = calloc(1, sizeof(*m))) != NULL)
+ m->type = ALL;
+ debug_return_ptr(m);
+}
diff --git a/plugins/sudoers/logging.c b/plugins/sudoers/logging.c
index 776f881e5..06efbf576 100644
--- a/plugins/sudoers/logging.c
+++ b/plugins/sudoers/logging.c
@@ -786,11 +786,6 @@ void
init_eventlog_config(void)
{
int logtype = 0;
-#ifdef NO_ROOT_MAILER
- uid_t mailuid = user_uid;
-#else
- uid_t mailuid = ROOT_UID;
-#endif
debug_decl(init_eventlog_config, SUDOERS_DEBUG_LOGGING);
if (def_syslog)
@@ -805,7 +800,7 @@ init_eventlog_config(void)
eventlog_set_syslog_alertpri(def_syslog_badpri);
eventlog_set_syslog_maxlen(def_syslog_maxlen);
eventlog_set_file_maxlen(def_loglinelen);
- eventlog_set_mailuid(mailuid);
+ eventlog_set_mailuid(ROOT_UID);
eventlog_set_omit_hostname(!def_log_host);
eventlog_set_logpath(def_logfile);
eventlog_set_time_fmt(def_log_year ? "%h %e %T %Y" : "%h %e %T");
diff --git a/plugins/sudoers/match_command.c b/plugins/sudoers/match_command.c
index ff8e8dc92..a6f847226 100644
--- a/plugins/sudoers/match_command.c
+++ b/plugins/sudoers/match_command.c
@@ -33,11 +33,13 @@
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
-#ifdef HAVE_GLOB
-# include <glob.h>
-#else
-# include "compat/glob.h"
-#endif /* HAVE_GLOB */
+#ifndef SUDOERS_NAME_MATCH
+# ifdef HAVE_GLOB
+# include <glob.h>
+# else
+# include "compat/glob.h"
+# endif /* HAVE_GLOB */
+#endif /* SUDOERS_NAME_MATCH */
#include <dirent.h>
#include <fcntl.h>
#include <errno.h>
@@ -79,6 +81,7 @@ command_args_match(const char *sudoers_cmnd, const char *sudoers_args)
debug_return_bool(false);
}
+#ifndef SUDOERS_NAME_MATCH
/*
* Stat file by fd is possible, else by path.
* Returns true on success, else false.
@@ -86,9 +89,13 @@ command_args_match(const char *sudoers_cmnd, const char *sudoers_args)
static bool
do_stat(int fd, const char *path, const char *runchroot, struct stat *sb)
{
+ struct stat sbuf;
char pathbuf[PATH_MAX];
debug_decl(do_stat, SUDOERS_DEBUG_MATCH);
+ if (sb == NULL)
+ sb = &sbuf;
+
if (fd != -1)
debug_return_bool(fstat(fd, sb) == 0);
@@ -104,6 +111,7 @@ do_stat(int fd, const char *path, const char *runchroot, struct stat *sb)
}
debug_return_bool(stat(path, sb) == 0);
}
+#endif /* SUDOERS_NAME_MATCH */
/*
* Check whether the fd refers to a shell script with a "#!" shebang.
@@ -206,6 +214,7 @@ set_cmnd_fd(int fd)
debug_return;
}
+#ifndef SUDOERS_NAME_MATCH
/*
* Return true if user_cmnd names one of the inodes in dir, else false.
*/
@@ -290,12 +299,44 @@ command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot,
close(fd);
debug_return_bool(false);
}
+#else /* SUDOERS_NAME_MATCH */
+/*
+ * Return true if user_cmnd names one of the inodes in dir, else false.
+ */
+static bool
+command_matches_dir(const char *sudoers_dir, size_t dlen, const char *runchroot,
+ const struct command_digest_list *digests)
+{
+ int fd = -1;
+ debug_decl(command_matches_dir, SUDOERS_DEBUG_MATCH);
+
+ /* Match user_cmnd against sudoers_dir. */
+ if (strncmp(user_cmnd, sudoers_dir, dlen) != 0 || user_cmnd[dlen] != '/')
+ goto bad;
+
+ /* Make sure user_cmnd is not in a subdir of sudoers_dir. */
+ if (strchr(user_cmnd + dlen + 1, '\0') != NULL)
+ goto bad;
+
+ /* Open the file for fdexec or for digest matching. */
+ if (!open_cmnd(user_cmnd, runchroot, digests, &fd))
+ goto bad;
+ if (!digest_matches(fd, user_cmnd, runchroot, digests))
+ goto bad;
+ set_cmnd_fd(fd);
+
+ debug_return_bool(true);
+bad:
+ if (fd != -1)
+ close(fd);
+ debug_return_bool(false);
+}
+#endif /* SUDOERS_NAME_MATCH */
static bool
command_matches_all(const char *runchroot,
const struct command_digest_list *digests)
{
- struct stat sb; /* XXX - unused */
int fd = -1;
debug_decl(command_matches_all, SUDOERS_DEBUG_MATCH);
@@ -303,8 +344,10 @@ command_matches_all(const char *runchroot,
/* Open the file for fdexec or for digest matching. */
if (!open_cmnd(user_cmnd, runchroot, digests, &fd))
goto bad;
- if (!do_stat(fd, user_cmnd, runchroot, &sb))
+#ifndef SUDOERS_NAME_MATCH
+ if (!do_stat(fd, user_cmnd, runchroot, NULL))
goto bad;
+#endif
}
/* Check digest of user_cmnd since we have no sudoers_cmnd for ALL. */
@@ -315,10 +358,8 @@ command_matches_all(const char *runchroot,
/* No need to set safe_cmnd for ALL. */
debug_return_bool(true);
bad:
- if (fd != -1) {
+ if (fd != -1)
close(fd);
- fd = -1;
- }
debug_return_bool(false);
}
@@ -326,7 +367,6 @@ static bool
command_matches_fnmatch(const char *sudoers_cmnd, const char *sudoers_args,
const char *runchroot, const struct command_digest_list *digests)
{
- struct stat sb; /* XXX - unused */
int fd = -1;
debug_decl(command_matches_fnmatch, SUDOERS_DEBUG_MATCH);
@@ -345,8 +385,10 @@ command_matches_fnmatch(const char *sudoers_cmnd, const char *sudoers_args,
/* Open the file for fdexec or for digest matching. */
if (!open_cmnd(user_cmnd, runchroot, digests, &fd))
goto bad;
- if (!do_stat(fd, user_cmnd, runchroot, &sb))
+#ifndef SUDOERS_NAME_MATCH
+ if (!do_stat(fd, user_cmnd, runchroot, NULL))
goto bad;
+#endif
/* Check digest of user_cmnd since sudoers_cmnd is a pattern. */
if (!digest_matches(fd, user_cmnd, runchroot, digests))
goto bad;
@@ -355,15 +397,14 @@ command_matches_fnmatch(const char *sudoers_cmnd, const char *sudoers_args,
/* No need to set safe_cmnd since user_cmnd matches sudoers_cmnd */
debug_return_bool(true);
bad:
- if (fd != -1) {
+ if (fd != -1)
close(fd);
- fd = -1;
- }
debug_return_bool(false);
}
debug_return_bool(false);
}
+#ifndef SUDOERS_NAME_MATCH
static bool
command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args,
const char *runchroot, const struct command_digest_list *digests)
@@ -384,11 +425,9 @@ command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args,
*/
dlen = strlen(sudoers_cmnd);
if (sudoers_cmnd[dlen - 1] != '/') {
- if ((base = strrchr(sudoers_cmnd, '/')) != NULL) {
- base++;
- if (!has_meta(base) && strcmp(user_base, base) != 0)
- debug_return_bool(false);
- }
+ base = sudo_basename(sudoers_cmnd);
+ if (!has_meta(base) && strcmp(user_base, base) != 0)
+ debug_return_bool(false);
}
/* Make sudoers_cmnd relative to the new root, if any. */
@@ -466,16 +505,15 @@ command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args,
/* If it ends in '/' it is a directory spec. */
dlen = strlen(cp);
if (cp[dlen - 1] == '/') {
- if (command_matches_dir(cp, dlen, runchroot, digests))
+ if (command_matches_dir(cp, dlen, runchroot, digests)) {
+ globfree(&gl);
debug_return_bool(true);
+ }
continue;
}
/* Only proceed if user_base and basename(cp) match */
- if ((base = strrchr(cp, '/')) != NULL)
- base++;
- else
- base = cp;
+ base = sudo_basename(cp);
if (strcmp(user_base, base) != 0)
continue;
@@ -531,10 +569,7 @@ command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args,
}
/* Only proceed if user_base and basename(sudoers_cmnd) match */
- if ((base = strrchr(sudoers_cmnd, '/')) == NULL)
- base = sudoers_cmnd;
- else
- base++;
+ base = sudo_basename(sudoers_cmnd);
if (strcmp(user_base, base) != 0)
debug_return_bool(false);
@@ -576,6 +611,55 @@ bad:
close(fd);
debug_return_bool(false);
}
+#else /* SUDOERS_NAME_MATCH */
+static bool
+command_matches_glob(const char *sudoers_cmnd, const char *sudoers_args,
+ const char *runchroot, const struct command_digest_list *digests)
+{
+ return command_matches_fnmatch(sudoers_cmnd, sudoers_args, runchroot,
+ digests);
+}
+
+static bool
+command_matches_normal(const char *sudoers_cmnd, const char *sudoers_args,
+ const char *runchroot, const struct command_digest_list *digests)
+{
+ size_t dlen;
+ int fd = -1;
+ debug_decl(command_matches_normal, SUDOERS_DEBUG_MATCH);
+
+ /* If it ends in '/' it is a directory spec. */
+ dlen = strlen(sudoers_cmnd);
+ if (sudoers_cmnd[dlen - 1] == '/') {
+ debug_return_bool(command_matches_dir(sudoers_cmnd, dlen, runchroot,
+ digests));
+ }
+
+ if (strcmp(user_cmnd, sudoers_cmnd) == 0) {
+ if (command_args_match(sudoers_cmnd, sudoers_args)) {
+ /* Open the file for fdexec or for digest matching. */
+ if (!open_cmnd(user_cmnd, runchroot, digests, &fd))
+ goto bad;
+ if (!digest_matches(fd, user_cmnd, runchroot, digests))
+ goto bad;
+
+ /* Successful match. */
+ free(safe_cmnd);
+ if ((safe_cmnd = strdup(sudoers_cmnd)) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__,
+ U_("unable to allocate memory"));
+ goto bad;
+ }
+ set_cmnd_fd(fd);
+ debug_return_bool(true);
+ }
+ }
+bad:
+ if (fd != -1)
+ close(fd);
+ debug_return_bool(false);
+}
+#endif /* SUDOERS_NAME_MATCH */
/*
* If path doesn't end in /, return true iff cmnd & path name the same inode;
diff --git a/plugins/sudoers/parse.c b/plugins/sudoers/parse.c
index 8236cde82..4e1172063 100644
--- a/plugins/sudoers/parse.c
+++ b/plugins/sudoers/parse.c
@@ -201,9 +201,12 @@ apply_cmndspec(struct cmndspec *cs)
}
} else {
user_role = def_role;
+ def_role = NULL;
+ }
+ if (user_role != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "user_role -> %s", user_role);
}
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "user_role -> %s", user_role);
}
if (user_type == NULL) {
if (cs->type != NULL) {
@@ -215,9 +218,12 @@ apply_cmndspec(struct cmndspec *cs)
}
} else {
user_type = def_type;
+ def_type = NULL;
+ }
+ if (user_type != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "user_type -> %s", user_type);
}
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "user_type -> %s", user_type);
}
#endif /* HAVE_SELINUX */
#ifdef HAVE_PRIV_SET
@@ -232,9 +238,12 @@ apply_cmndspec(struct cmndspec *cs)
}
} else {
runas_privs = def_privs;
+ def_privs = NULL;
+ }
+ if (runas_privs != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "runas_privs -> %s", runas_privs);
}
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "runas_privs -> %s", runas_privs);
}
if (runas_limitprivs == NULL) {
if (cs->limitprivs != NULL) {
@@ -246,9 +255,12 @@ apply_cmndspec(struct cmndspec *cs)
}
} else {
runas_limitprivs = def_limitprivs;
+ def_limitprivs = NULL;
+ }
+ if (runas_limitprivs != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
+ "runas_limitprivs -> %s", runas_limitprivs);
}
- sudo_debug_printf(SUDO_DEBUG_INFO|SUDO_DEBUG_LINENO,
- "runas_limitprivs -> %s", runas_limitprivs);
}
#endif /* HAVE_PRIV_SET */
if (cs->timeout > 0) {
diff --git a/plugins/sudoers/parse.h b/plugins/sudoers/parse.h
index 711bf87e1..4dc36d45a 100644
--- a/plugins/sudoers/parse.h
+++ b/plugins/sudoers/parse.h
@@ -29,6 +29,11 @@
/* Returns true if string 's' contains meta characters. */
#define has_meta(s) (strpbrk(s, "\\?*[]") != NULL)
+/* Match by name, not inode, when fuzzing. */
+#ifdef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
+# define SUDOERS_NAME_MATCH
+#endif
+
#undef UNSPEC
#define UNSPEC -1
#undef DENY
@@ -294,6 +299,37 @@ struct cmnd_info {
int status;
};
+/*
+ * The parser passes pointers to data structures that are not stored anywhere.
+ * We add them to the leak list at allocation time and remove them from
+ * the list when they are stored in another data structure.
+ * This makes it possible to free data on error that would otherwise be leaked.
+ */
+enum parser_leak_types {
+ LEAK_UNKNOWN,
+ LEAK_PRIVILEGE,
+ LEAK_CMNDSPEC,
+ LEAK_DEFAULTS,
+ LEAK_MEMBER,
+ LEAK_DIGEST,
+ LEAK_RUNAS,
+ LEAK_PTR
+};
+struct parser_leak_entry {
+ SLIST_ENTRY(parser_leak_entry) entries;
+ enum parser_leak_types type;
+ union {
+ struct command_digest *dig;
+ struct privilege *p;
+ struct cmndspec *cs;
+ struct defaults *d;
+ struct member *m;
+ struct runascontainer *rc;
+ void *ptr;
+ } u;
+};
+SLIST_HEAD(parser_leak_list, parser_leak_entry);
+
/* alias.c */
struct rbtree *alloc_aliases(void);
void free_aliases(struct rbtree *aliases);
@@ -307,12 +343,15 @@ void alias_apply(struct sudoers_parse_tree *parse_tree, int (*func)(struct sudoe
void alias_free(void *a);
void alias_put(struct alias *a);
+/* check_aliases.c */
+int check_aliases(struct sudoers_parse_tree *parse_tree, bool strict, bool quiet, int (*cb_unused)(struct sudoers_parse_tree *, struct alias *, void *));
+
/* gram.c */
extern struct sudoers_parse_tree parsed_policy;
bool init_parser(const char *path, bool quiet, bool strict);
-struct member *new_member_all(char *name);
void free_member(struct member *m);
void free_members(struct member_list *members);
+void free_cmndspecs(struct cmndspec_list *csl);
void free_privilege(struct privilege *priv);
void free_userspec(struct userspec *us);
void free_userspecs(struct userspec_list *usl);
@@ -321,6 +360,9 @@ void free_defaults(struct defaults_list *defs);
void init_parse_tree(struct sudoers_parse_tree *parse_tree, const char *lhost, const char *shost);
void free_parse_tree(struct sudoers_parse_tree *parse_tree);
void reparent_parse_tree(struct sudoers_parse_tree *new_tree);
+bool parser_leak_add(enum parser_leak_types type, void *v);
+bool parser_leak_remove(enum parser_leak_types type, void *v);
+void parser_leak_init(void);
/* match_addr.c */
bool addr_matches(char *n);
diff --git a/plugins/sudoers/parse_ldif.c b/plugins/sudoers/parse_ldif.c
index ce07c1967..40d10cdfc 100644
--- a/plugins/sudoers/parse_ldif.c
+++ b/plugins/sudoers/parse_ldif.c
@@ -479,6 +479,8 @@ ldif_to_sudoers(struct sudoers_parse_tree *parse_tree,
/* Convert from list of roles to array and sort by order. */
role_array = reallocarray(NULL, numroles + 1, sizeof(*role_array));
+ if (role_array == NULL)
+ sudo_fatalx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
for (n = 0; n < numroles; n++) {
if ((role = STAILQ_FIRST(roles)) == NULL)
break; /* cannot happen */
@@ -762,17 +764,16 @@ sudoers_parse_ldif(struct sudoers_parse_tree *parse_tree,
}
sudo_role_free(role);
free(line);
+ free(savedline);
/* Convert from roles to sudoers data structures. */
- ldif_to_sudoers(parse_tree, &roles, numroles, store_options);
+ if (numroles > 0)
+ ldif_to_sudoers(parse_tree, &roles, numroles, store_options);
/* Clean up. */
rbdestroy(usercache, str_list_free);
rbdestroy(groupcache, str_list_free);
rbdestroy(hostcache, str_list_free);
- if (fp != stdin)
- fclose(fp);
-
debug_return_bool(errors == 0);
}
diff --git a/plugins/sudoers/po/cs.mo b/plugins/sudoers/po/cs.mo
index bbc1c60c9..b68b72875 100644
--- a/plugins/sudoers/po/cs.mo
+++ b/plugins/sudoers/po/cs.mo
Binary files differ
diff --git a/plugins/sudoers/po/cs.po b/plugins/sudoers/po/cs.po
index a5d6ec9a4..ad4645fc7 100644
--- a/plugins/sudoers/po/cs.po
+++ b/plugins/sudoers/po/cs.po
@@ -2,17 +2,17 @@
# This file is distributed under the same license as the sudo package.
# Todd C. Miller <Todd.Miller@courtesan.com>, 2011-2013
# Petr Pisar <petr.pisar@atlas.cz>, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
-# Petr Pisar <petr.pisar@atlas.cz>, 2020.
+# Petr Pisar <petr.pisar@atlas.cz>, 2020, 2021.
#
# (AIX) registry → (AIXový) registr
# timestamp → časové údaje
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-17 17:14+01:00\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-03 21:45+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"
@@ -22,7 +22,7 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "chyba syntaxe"
@@ -46,426 +46,459 @@ msgstr "*** BEZPEČNOSTNÍ hlášení o %h ***"
msgid "Sorry, try again."
msgstr "Je nám líto, zkuste to znovu."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "nelze alokovat paměť"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "kontrolní součet vyžaduje název cesty"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "hodnoty „CWD“ musí začínat na „/“, „~“ nebo „*“"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "hodnoty „CHROOT“ musí začínat na „/“, „~“ nebo „*“"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "chyba syntaxe, vyhrazené slovo %s použito jako název aliasu"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "neplatná hodnota notbefore (začátek platnosti)"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "neplatná hodnota notafter (konec platnosti)"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "hodnota časového limitu je příliš velká"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "neplatná hodnota časového limitu"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Alias „%s“ je již definován"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "vnitřní chyba, přetečení %s"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "nelze zdvojit standardní vstup: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "nelze spustit %s: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "nelze vytvořit proces"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "nelze vytvořit proces: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "nelze otevřít rouru: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (příkaz pokračuje) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s existuje, ale nejedná se o adresář (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "nelze vytvořit adresář %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "nelze změnit práva %s na 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "očekáván JSON_STRING, obdrženo %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY je příliš velké"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "v názvu chybí dvojitá uvozovka"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "chybí JSON_OBJECT"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "očekáván JSON_OBJECT, obdrženo %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "jsonový zásobník vyčerpán (nejvýše %u rámců)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "objekty musí sestávat z dvojic název:hodnota"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "chybí oddělovač mezí hodnotami"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "neodpovídající uzavírací složená závorka"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "nečekané pole"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "neodpovídající uzavírající hranatá závorka"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "nečekaný řetězec"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "za názvem chybí dvojtečka"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "nečekaná pravdivostní hodnota"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "nečekaná hodnota null"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "nečekané číslo"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u „%s“ nelze rozebrat"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "chyba rozboru"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: neplatný soubor s protokolem"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: chybí položka s časovým údajem"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: čas %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: chybí položka s uživatelem"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: chybí položka s runas uživatelem"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s chybí položka s runas skupinou"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s existuje, ale nejedná se o adresář (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "nelze vytvořit adresář %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "nelze změnit práva %s na 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "chyba při čtení časovacího souboru: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "neplatný řádek s časovacím souborem: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "protokol byl již dokončen, nelze jej restartovat"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "protokol nelze navázat"
@@ -490,141 +523,141 @@ msgstr "%s/%s: nelze skočit vpřed o %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "nelze nalézt bod obnovy [%lld, %ld] v %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "chyba stavového automatu"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "neplatná zpráva AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "chyba při rozboru zprávy AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "chyba při vytváření vstupně-výstupního protokolu"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "chyba při protokolování události přijetí"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "neplatná zpráva RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "chyba při rozboru zprávy RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "chyba při protokolování události zamítnutí"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "neplatná zpráva AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "chyba při rozboru zprávy AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "chyba při protokolování události upozornění"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "chyba protokolu"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "chyba při zápisu IoBuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "chyba při zápisu ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "chyba při zápisu CommandSuspend"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "nerozpoznaný druh zprávy ClientMessage"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "zpráva od klienta je příliš velká"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "šifru TLS 1.2 nelze nastavit na %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "šifru TLS 1.3 nelze nastavit na %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "nelze získat metodu TLS serveru: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "nelze vytvořit kontext TLS: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "nelze zavést certifikát %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "nelze zavést svazek certifikátů autorit %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "nelze zavést soukromý klíč %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "nelze nastavit parametry Diffieho-Hellmana: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "nelze nastavit minimální verzi protokolu na TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "nelze získat vzdálenou IP adresu"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "K objektu SSL nelze připojit uživatelská data: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -634,284 +667,290 @@ msgstr "K objektu SSL nelze připojit uživatelská data: %s"
msgid "unable to add event to queue"
msgstr "událost nelze přidat do fronty"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "nelze nastavit naslouchací socket"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s – odešle vstupně-výstupní protokol vzdálenému serveru\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "protokolovací server suda"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Přepínače:\n"
-" -f, --file cesta ke konfiguračnímu souboru\n"
-" -h, --help zobrazí nápovědu a skončí\n"
-" -n, --no-fork zůstane běžet na popředí\n"
-" -R, --random-drop procentuální pravděpodobnost, že se spojení ztratí\n"
-" -V, --version zobrazí údaje o verzi a skončí\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Volby:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "cesta ke konfiguračnímu souboru"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "zobrazí nápovědu a skončí"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "neoddělí proces, běží na popředí"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "procentuální pravděpodobnost, že spojení se přeruší"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "zobrazí údaje o verzi a skončí"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Je vyžadována knihovna Protobuf-C verze 1.3 nebo vyšší"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "neplatná hodnota pravděpodobnosti ztráty: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s verze %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "protokol TLS není podporován"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: cesta není plně kvalifikovaná"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d nepárová „[“: %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d neplatný konfigurační oddíl: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d neplatný řádek s konfigurací: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d očekávaný název oddílu: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "neplatná hodnota pro %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d: neznámý klíč: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "neznámý obor systémového protokolu %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "neznámá priorita systémového protokolu: %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Přepínače:\n"
-" --help zobrazí nápovědu a skončí\n"
-" -A, --accept zašle pouze událost přijetí (žádný vstup a výstup)\n"
-" -h, --host stroj, kam posílat protokol\n"
-" -i, --iolog_id vzdálený identifikátor vstupně-výstupního protokolu,\n"
-" na který se má navázat\n"
-" -p, --port port, který se použije při připojování na stroj\n"
-" -r, --restart restartuje předchozí přenos vstupně-výstupního\n"
-" protokolu\n"
-" -R, --reject zamítne příkaz se zadaným důvodem\n"
-" -b, --ca-bundle soubor se svazkem certifikátů, proti kterému se\n"
-" bude ověřovat certifikát serveru\n"
-" -c, --cert soubor s certifikátem pro navázání spojení TLS\n"
-" -k, --key soubor se soukromým klíčem\n"
-" -n, --no-verify neověřuje certifikát serveru\n"
-" -t, --test otestuje auditní server zasláním vybraných\n"
-" vstupně-výstupních protokolů n-krát souběžně\n"
-" -V, --version zobrazí údaje o verzi a skončí\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "odešle vstupně-výstupní protokol vzdálenému serveru"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "odešle pouze událost přijetí (žádný vstup-výstup)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "soubor se svazkem certifikátů, proti kterým se má ověřit certifikát serveru"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "soubor s certifikátem pro navázání TLS"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "stroj, kam zaslat protokoly"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "vzdálený identifikátor protokolu vstupu-výstupu, na kterým se má navázat"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "soubor se soukromým klíčem"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "neověřovat certifikát serveru"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "port, který se použije při připojovaní na stroj"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "navázat na předchozí přenos protokolu vstupu-výstupu"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "zamítnout příkaz se zadaným důvodem"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "vyzkoušet auditní server zasláním vybraného protokolu vstupu-výstupu n-krát souběžně"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "%s:%s nelze vyhledat: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "nelze získat IP adresu serveru"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "%s/%s nelze přečíst: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "zpráva od klienta je příliš velká: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: vyrovnávací paměť pro zápis se již používá"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "nečekaná I/O událost %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: nečekaný stav %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "neplatná správa ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "od serveru byla přijata chybová zpráva: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "od serveru byla přijata zpráva o zrušení: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "zprávu ServerMessage nelze rozbalit"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: nečekaná hodnota type_case %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "při čtení ze serveru vypršel časový limit"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "předčasný konec souboru"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "správa od serveru je příliš velká: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "při zapisování do serveru vypršel časový limit"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "Při navazování spojení TLS vypršel časový limit"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "událost nelze nastavit"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "spojení TLS selhalo: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Kontext SSL nelze inicializovat: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Objekt SSL nelze alokovat: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "K objektu SSL nelze připojit socket: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "musí být zadán jak bod navázání, tak i identifikátor iolog"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "bod navázání nelze nastavit, když žádný vstup/výstup nebyl odeslán"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "ukončeno předčasně ve stavu %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "uplynulý čas zaslaný serveru [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "od server byl přijat bod zápisu [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Alias „%s“ je již definován"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "nelze získat čas"
@@ -1017,38 +1056,38 @@ msgstr "%s: TGT nelze ověřit! Podezření na útok!: %s"
msgid "unable to initialize PAM: %s"
msgstr "PAM nelze inicializovat: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Chyba autentizace PAM: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "ověření účtu selhalo, není váš účet zamknutý?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Účtu nebo heslu vypršela platnost, nastavte si nové heslo a zkuste to znovu"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "prošlé heslo nelze změnit: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Heslu vypršela platnost, kontaktujte správce svého systému"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Účtu vypršela platnost nebo v konfiguraci PAM pro sudo chybí sekce „account“. Kontaktujte správce svého systému"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Chyba správy účtů PAM: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "v databázi %s neexistujete"
@@ -1121,7 +1160,27 @@ msgstr "Nebylo možné určit podmínku pro audit"
msgid "unable to commit audit record"
msgstr "auditní zprávu nelze odeslat"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "chyba při čtení souboru lekce %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "ignoruje se soubor lekce %s: nejedná se o běžný soubor"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "nelze otevřít %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1141,21 +1200,41 @@ msgstr ""
" 3. S velkými právy přichází velká zodpovědnost.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "neznámé UID: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "neznámý uživatel: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Chyba: %s:%d:%d: smyčka v %s „%s“"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Pozor: %s:%d:%d: smyčka v %s „%s“"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Chyba: %s:%d:%d: %s „%s“ použit, ale nedefinován"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Pozor: %s:%d:%d: %s „%s“ použit, ale nedefinován"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1171,7 +1250,7 @@ msgstr "počáteční pořadí: %s: %s"
msgid "order padding: %s: %s"
msgstr "odsazení pořadí: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "verze gramatiky %s je %d\n"
@@ -1191,9 +1270,9 @@ msgstr "nepodporovaný formát výstupu %s"
msgid "%s: input and output files must be different"
msgstr "%s: vstupní a výstupní soubory se musí lišit"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "nelze inicializovat výchozí hodnoty sudoers"
@@ -1222,37 +1301,28 @@ msgstr "neplatný druh potlačení: %s"
msgid "invalid filter: %s"
msgstr "neplatný filtr: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "nelze otevřít %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "rozbor souboru %s se nezdařil, neznámá chyba"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "chyba při rozboru %s kolem řádku %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "chyba při rozboru %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "do %s nelze zapsat"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1261,7 +1331,7 @@ msgstr ""
"%s – převádí mezí formáty souboru sudoers\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1909,6 +1979,15 @@ msgstr "Kam změnit kořenový adresář před spuštěním příkazu: %s"
msgid "The format of logs to produce: %s"
msgstr "Vytvářet protokol v tomto formátu: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Zapnout podporu pro SELinux RBAC"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Cesta k souboru, který se vytvoří při prvním spuštění suda: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1959,35 +2038,35 @@ msgstr "%s:%d:%d: hodnota „%s“ je pro volbu „%s“ neplatná"
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: hodnota „%s“ není pro volbu „%s“ platná"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: hodnoty „%s“ musí začínat na „/“, „~“ nebo „*“"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: hodnoty „%s“ musí začínat na „/“, „~“ nebo „*“"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: hodnoty „%s“ musí začínat na „/“"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: hodnoty „%s“ musí začínat na „/“"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: poškozené pole envp, délka nesouhlasí"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "prostředí nelze znovu sestavit"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "je nám líto, ale nemáte dovoleno nastavovat následující proměnné prostředí: %s"
@@ -2051,42 +2130,42 @@ msgstr "nelze rozebrat síťovou masku „%s“"
msgid "Local IP address and netmask pairs:\n"
msgstr "Pár místní IP adresy a masky sítě:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "neznámá skupina: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "nelze aktualizovat soubor s pořadovým číslem"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "nelze zapsat do souboru s I/O protokolem: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "%s/%s nelze vytvořit"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: vnitřní chyba, soubor s I/O protokolem pro událost %d není otevřen"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "nelze přečíst hodiny"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: vnitřní chyba, neplatný signál %d"
@@ -2114,7 +2193,7 @@ msgstr "LDAP nelze inicializovat: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls uvedeno, ale knihovna LDAP nepodporuje ldap_start_tls_s_np() ani ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "neplatný atribut sudoOrder: %s"
@@ -2133,21 +2212,29 @@ msgstr "nepodporovaný typ ldapového URI: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "nelze míchat URI ldap a ldaps"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "násobná sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "nelze převést sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "nelze otevřít auditní systém"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "nelze odeslat auditní zprávu"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "chyba ve smyčce událostí"
@@ -2169,20 +2256,20 @@ msgstr "Inicializace TLS nebyla úspěšná"
msgid "TLS handshake was unsuccessful"
msgstr "Ustanovení spojení TLS nebylo úspěšné"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: vnitřní chyba, neplatný návratový kód %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "spojení k protokolovému serveru ztraceno"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "chybí vyrovnávací paměť pro zápis"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "k protokolovacímu serveru se nelze připojit"
@@ -2218,15 +2305,15 @@ msgstr "Je nám líto, uživatel %s nesmí spouštět sudo na %s.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Je nám líto, uživatel %s nemá dovoleno spouštět „%s%s%s“ jako %s%s%s na %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: příkaz nenalezen"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2251,12 +2338,12 @@ msgstr "selhání autentizace"
msgid "a password is required"
msgstr "je vyžadováno heslo"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "nelze otevřít soubor protokolu: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "nelze zapsat soubor protokolu: %s"
@@ -2266,7 +2353,7 @@ msgstr "nelze zapsat soubor protokolu: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "součet pro %s (%s) nemá tvar %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2275,7 +2362,7 @@ msgstr ""
"\n"
"Role LDAP: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2283,104 +2370,110 @@ msgstr ""
"\n"
"Položka v sudoers:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAsUsers: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAsGroups: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Volby: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Příkazy:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Odpovídající položky Defaults pro %s na %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Výchozí hodnoty Runas a Command pro %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Uživatel %s smí spustit následující příkazy na %s:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Uživatel %s nemá dovoleno spustit sudo na %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "neúplná definice sudoRole se ignoruje: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "neplatný atribut LDIF: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "neplatné %.*s nenastaveno vnějším rozhraním sudo"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "nelze rozebrat seznam síťových adres"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "uživatelské jméno nenastaveno vnějším rozhraním sudo"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "ID uživatele nenastaveno vnějším rozhraním sudo"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "ID skupiny nenastaveno vnějším rozhraním sudo"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "název počítače nenastaven vnějším rozhraním sudo"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "neplatný pracovní adresář: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "neplatný kořenový adresář: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "nelze vykonat %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: neplatné příznaky souboru od vnějšího rozhraní suda: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Verze modulu s politikami sudoers je %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Verze gramatiky souboru sudoers je %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2389,86 +2482,91 @@ msgstr ""
"\n"
"Cesta sudoers: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "cesta k nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "cesta k ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "cesta k ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "nelze zaregistrovat háček typu %d (verze %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "nelze odhlásit háček typu %d (verze %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "nelze si zapamatovat UID %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "nelze zapamatovat si UID %u, již existuje"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "uživatele %s si nelze zapamatovat"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "nelze zapamatovat si uživatele %s, již existuje"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "GID %u si nelze zapamatovat"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "nelze zapamatovat si GID %u, již existuje"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "skupinu %s si nelze zapamatovat"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "nelze zapamatovat si skupinu %s, již existuje"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "nelze zapamatovat si seznam skupin pro %s, již existuje"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "nelze si zapamatovat seznam skupin pro %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "nelze rozebrat skupiny pro %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "nelze rozebrat čísla GID pro %s"
@@ -2543,135 +2641,139 @@ msgstr "nelze inicializovat zdroj SSS. Je SSSD nainstalován na vašem stroji?"
msgid "unable to find symbol \"%s\" in %s"
msgstr "nelze nalézt symbol „%s“ v %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "problém s položkami defaults"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "nenalezeny žádné platné zdroje sudoers, končí se"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "uživatel nemá dovoleno změnit kořenový adresář na %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "nemáte dovoleno použít přepínač -R s %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "uživatel nemá dovoleno změnit adresář na %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "nemáte dovoleno použít přepínač -D s %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "nezadán žádný příkaz"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers udává, že root nemá dovoleno použít sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "uživatel nemá dovoleno přebít omezení „closefrom“"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "nemáte dovoleno použít přepínač -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "vlastník časového údaje (%s): Takový uživatel neexistuje"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "žádné TTY"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "je nám líto, ale pro spuštění sudo musíte mít TTY"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "neplatný shell pro uživatele %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "příkaz v aktuálním adresáři"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "uživatel nemá dovoleno nastavit časový limit příkazu"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "je nám líto, ale nastavit časový limit nemáte dovoleno"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "uživatel nemá dovoleno zachovat prostředí"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "je nám líto, ale zachovat prostředí nemáte dovoleno"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "příkaz je příliš dlouhý"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit není nutné spouštět přes sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "%s nelze číst"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "nelze zjistit údaje o %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s není běžný soubor"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s je vlastněn UID %u, měl by být vlastněn %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s je zapisovatelný pro všechny"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s je vlastněn GID %u, mělo by být %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "pouze root může použít „-c %s“"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "neznáma přihlašovací třída: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "nelze přeložit název stroje %s"
@@ -2823,11 +2925,11 @@ msgstr ""
" -s, --speed=číslo zrychlí nebo zpomalí výstup\n"
" -V, --version zobrazí údaje o verzi a skončí"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\tstroj se neshoduje"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2835,7 +2937,7 @@ msgstr ""
"\n"
"Příkaz povolen"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2843,7 +2945,7 @@ msgstr ""
"\n"
"Příkaz odepřen"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2857,122 +2959,122 @@ msgid "%s is group writable"
msgstr "%s je zapisovatelný pro skupinu"
# TODO: pluralize
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "nelze zkrátit soubor s časovými údaji na %lld bajtů"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "časový údaj z budoucnosti se ignoruje"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "časový údaj ukazuje příliš do budoucna: %20.20s"
# TODO: pluralize
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "soubor s časovými údaji %s nelze zamknout"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "cesta ke stavům lekce je příliš dlouhý: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit by neměl být uveden s cestou"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "přepínač -x bude v příštím vydání odstraněn"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "prosím, zvažte použití nástroje cvtsudoers"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "pro úpravu %s stiskněte enter: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "zadaný editor (%s) neexistuje"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "žádný editor nenalezen (cesta k editoru = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "chyba zápisu"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "nelze získat údaje o dočasném souboru (%s), %s nezměněno"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "dočasný soubor o nulové velikosti (%s), %s nezměněno"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "editor (%s) selhal, %s nezměněno"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s nezměněno"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "nelze znovu otevřít dočasný soubor (%s), %s nezměněno."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "není možné rozebrat dočasný soubor (%s), neznámá chyba"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "vnitřní chyba, v seznamu nelze nalézt %s!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "nelze nastavit (UID, GID) %s na (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s a %s se nenachází na jednom souborovém systému, pro přejmenování se použije mv"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "příkaz selhal: „'%s %s %s“, %s nezměněno"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "chyba při přejmenování %s, %s nezměněno"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Co teď? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2984,67 +3086,47 @@ msgstr ""
" (x) skončit bez uložení změn do souboru sudoers\n"
" (Q) skončit a uložit změny do souboru sudoers (NEBEZPEČNÉ!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "nelze spustit %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: chybný vlastník (UID, GID), měl by být (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: chybná práva, měla by být 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: rozbor úspěšný\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s je zaneprázdněn, zkuste to později"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "%s nelze uzamknout"
# The code indeed checks for non-localized "y" character.
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Přesto upravit? [y pro ano / N pro ne]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Chyba: %s:%d:%d: smyčka v %s „%s“"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Pozor: %s:%d:%d: smyčka v %s „%s“"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Chyba: %s:%d:%d: %s „%s“ použit, ale nedefinován"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Pozor: %s:%d:%d: %s „%s“ použit, ale nedefinován"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Pozor: %s:%d:%d: nepoužitý %s „%s“"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3053,7 +3135,7 @@ msgstr ""
"%s – bezpečně upraví soubor sudoers\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3074,34 +3156,91 @@ msgstr ""
" -s, --strict přísná kontrola syntaxe\n"
" -V, --version zobrazí údaje o verzi a skončí\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "prázdný řetězec"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "prázdná skupina"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "prázdná síťová skupina"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "neplatné pokračování řádku"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "neplatná IPv6 adresa"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "nečekané zalomení řádku uvnitř řetězce"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "příliš mnoho úrovní zanoření"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u „%s“ nelze rozebrat"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Přepínače:\n"
+#~ " -f, --file cesta ke konfiguračnímu souboru\n"
+#~ " -h, --help zobrazí nápovědu a skončí\n"
+#~ " -n, --no-fork zůstane běžet na popředí\n"
+#~ " -R, --random-drop procentuální pravděpodobnost, že se spojení ztratí\n"
+#~ " -V, --version zobrazí údaje o verzi a skončí\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Přepínače:\n"
+#~ " --help zobrazí nápovědu a skončí\n"
+#~ " -A, --accept zašle pouze událost přijetí (žádný vstup a výstup)\n"
+#~ " -h, --host stroj, kam posílat protokol\n"
+#~ " -i, --iolog_id vzdálený identifikátor vstupně-výstupního protokolu,\n"
+#~ " na který se má navázat\n"
+#~ " -p, --port port, který se použije při připojování na stroj\n"
+#~ " -r, --restart restartuje předchozí přenos vstupně-výstupního\n"
+#~ " protokolu\n"
+#~ " -R, --reject zamítne příkaz se zadaným důvodem\n"
+#~ " -b, --ca-bundle soubor se svazkem certifikátů, proti kterému se\n"
+#~ " bude ověřovat certifikát serveru\n"
+#~ " -c, --cert soubor s certifikátem pro navázání spojení TLS\n"
+#~ " -k, --key soubor se soukromým klíčem\n"
+#~ " -n, --no-verify neověřuje certifikát serveru\n"
+#~ " -t, --test otestuje auditní server zasláním vybraných\n"
+#~ " vstupně-výstupních protokolů n-krát souběžně\n"
+#~ " -V, --version zobrazí údaje o verzi a skončí\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "Přednačíst prázdné spouštěcí funkce obsažené v knihovně sudo_noexec"
diff --git a/plugins/sudoers/po/de.mo b/plugins/sudoers/po/de.mo
index 49ad81dea..c0adc5c82 100644
--- a/plugins/sudoers/po/de.mo
+++ b/plugins/sudoers/po/de.mo
Binary files differ
diff --git a/plugins/sudoers/po/de.po b/plugins/sudoers/po/de.po
index 76a76a8fa..f7dee9c80 100644
--- a/plugins/sudoers/po/de.po
+++ b/plugins/sudoers/po/de.po
@@ -3,13 +3,13 @@
# Todd C. Miller <Todd.Miller@courtesan.com>, 2011-2013
# Hendrik Knackstedt <hendrik.knackstedt@t-online.de>, 2013
# Mario Blättermann <mario.blaettermann@gmail.com>, 2015.
-# Jochen Hein <jochen@jochen.org>, 2001-2020.
+# Jochen Hein <jochen@jochen.org>, 2001-2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-22 05:35+0100\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-03 22:01+0100\n"
"Last-Translator: Jochen Hein <jochen@jochen.org>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "Syntax-Fehler"
@@ -44,426 +44,459 @@ msgstr "*** Sicherheits-Information für %h ***"
msgid "Sorry, try again."
msgstr "Das hat nicht funktioniert, bitte nochmal probieren."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "Es kann kein Speicher mehr alloziert werden"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "Eine Prüfsumme erfordert einen Pfadnamen"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "Werte für »CWD« müssen mit »/«, »~« oder »*« beginnen"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "Werte für »CHROOT« müssen mit »/«, »~« oder »*« beginnen"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "Syntaxfehler, das reservierte Wort »%s« wird als Aliasname verwendet"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "ungültiger Wert für »notbefore«"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "ungültiger Wert für »notafter«"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "Wert für Timeout ist zu groß"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "ungültiger Wert für Timeout"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Alias »%s« ist bereits definiert"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "Interner Fehler, %s-Überlauf"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "Die Standardeingabe kann nicht dupliziert werden: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "%s kann nicht ausgeführt werden: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "Fehler bei fork()"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "Fehler bei fork(): %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "Die Pipe kann nicht geöffnet werden: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (Befehl fortgesetzt) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s existiert, aber ist kein Verzeichnis (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "Das Verzeichnis »%s« kann nicht erstellt werden"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "Ändern des Modus von %s auf 0%o gescheitert"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "JSON_STRING erwartet, aber »%d« bekommen"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "Das JSON_ARRAY ist zu groß"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "Im Name fehlt das doppelte Anführungszeichen"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "JSON_OBJECT fehlt"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "JSON_OBJECT erwartet, aber »%d« bekommen"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "json Stack erschöpft (maximal %u Frames)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "Objekte müssen aus Name:Wert Paaren bestehen"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "Fehlender Separator zwischen den Werten"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "unpassende schließende geschweifte Klammer"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "unerwartetes Array"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "unpassende schließende eckige Klammer"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "unerwartete Zeichenkette"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "fehlender Doppelpunkt nach dem Name"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "unerwarteter boolescher Wert (true/false)"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "unerwartete »null«"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "unerwartete Zahl"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u »%s« kann nicht ausgewertet werden"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "Syntax-Fehler"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: ungültige Protokolldatei"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: Das Feld für den Zeitstempel fehlt"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: Zeitstempel %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: Das Benutzerfeld fehlt"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: Das Feld für den »runas«-Benutzer fehlt"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: Das Feld für die »runas«-Gruppe fehlt"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s existiert, aber ist kein Verzeichnis (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "Das Verzeichnis »%s« kann nicht erstellt werden"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "Ändern des Modus von %s auf 0%o gescheitert"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "Fehler beim Lesen der Zeitdateizeile: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "Ungültige Zeitdateizeile: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "Das Log ist bereits abgeschlossen, kann nicht neu gestartet werden"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "Das Log konnte nicht wieder begonnen werden"
@@ -489,141 +522,141 @@ msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "Der Wiederaufsetz-Punkt [%lld, %ld] in %s/%s kann nicht gefunden werden"
# XXX geht das besser?
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "Fehler der State Machine"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "ungültige AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "Fehler beim Parsen der AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "Fehler beim Erstellen des Ein-/Ausgabe-Protokolls"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "Fehler beim Protokolliereb des Accept-Events"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "ungültige RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "Fehler beim Parsen der RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "Fehler beim Protokollieren des Reject-Events"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "ungültige AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "Fehler beim Parsen der AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "Fehler beim Protokollieren des Alert-Events"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "Protokollfehler"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "Fehler beim Schreiben des IoBuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "Fehler beim Schreiben der ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "Fehler beim Schreiben des CommandSusped"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "unbekannter ClientMessage-Typ"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "Client-Nachricht ist zu groß"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "Die TLS 1.2 Cyphersuite kann nicht auf »%s« gesetzt werden: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "Die TLS 1.3 Cyphersuite kann nicht auf »%s« gesetzt werden: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "Kann die TLS Server Methode nicht bestimmen: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "SSL-Kontext kann nicht erzeugt werden: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "Laden von Zertifikat »%s« fehlgeschlagen"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "Kann das CA-Bundle »%s« nicht laden"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "Laden des privaten Schlüssels »%s« fehlgeschlagen"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "Kann die Diffie-Hellman Parameter nicht setzen: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "Kann die minimale Protokollversion nicht auf TLS 1.2 setzen: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "Kann die entfernte IP-Adresse nicht finden"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Kann die User-Daten nicht an das SSL-Objekt anhängen: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -633,281 +666,290 @@ msgstr "Kann die User-Daten nicht an das SSL-Objekt anhängen: %s"
msgid "unable to add event to queue"
msgstr "Event kann nicht zur Warteschlange hinzugefügt werden"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "Konnte keinen Socket zum »Lauschen« einrichten"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - sende sudo I/O-Log zu einem entfernten Server\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "sudo Log-Server"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Optionen:\n"
-" -f, --file\t\t gibt den Namen der Konfigurationsdatei an\n"
-" -h, --help diese Hilfe anzeigen und beenden\n"
-" -n, --no-fork im Vordergrund laufen\n"
-" -R, --random-drop prozentuale Change, dass die Verbindung abbricht\n"
-" -V, --version Versionsinformation anzeigen und beenden\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Optionen:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "Pfad zur Konfigurationsdatei"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "Hilfe anzeigen und beenden"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "Nicht zum Hintergrundprozess werden, sondern im Vordergrund laufen"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "Wahrscheinlichkeit in Prozent für Verbindungsabbruch"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "Versionsinformation anzeigen und beenden"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C Version 1.3 oder höher ist notwendig"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "ungültiger Wert für »random drop«: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s Version %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS ist nicht unterstützt"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: ist kein voll qualifizierter Pfad"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s: %d »[« ohne schliessende Klammer »]«: %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s/%d Ungültiger Konfigurations-Abschnitt: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s/%d Ungültige Konfigurationszeile: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d erwartetder Section Name: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "Ungültiger Wert für %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d unbekannter Schlüssel: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "Unbekannte Syslog-Facility %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "Unbekannte Syslog-Priorität %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Optionen:\n"
-" --help zeige diese Nachricht und beenden\n"
-" -A, --accept Sende nur einen »accept« Event (kein I/O)\n"
-" -h, --host send Logs an diesen Server\n"
-" -i, --iolog_id entfernte ID des I/O Logs zur Wiederaufnahme\n"
-" -p, --port Port für die Verbindung zum Server\n"
-" -r, --restart restarte vorhergegangene I/O Log Übertragung\n"
-" -R, --reject Lehne das Kommando mit dem angegebenen Grund ab\n"
-" -t, --test teste Audit Server mit dem Senden des ausgewählten I/O Logs mit Parallelität n\n"
-" -b, --ca-bundle Zertificats-Bündel-Datei zum Prüfen des Server-Zertifikats\n"
-" -c, --cert Zertifikatsdatei für TLS-Handshake\n"
-" -k, --key Datei mit dem privaten Schlüssel\n"
-" -n, --no-verify Server-Zertifikate nicht verifizieren\n"
-" -t, --test teste Audit-Server durch Senden vom ausgewählem I/O-Protokoll n Mal parallel\n"
-" -V, --version zeige Versioninformationen und beende\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "sende sudo I/O-Log zu einem entfernten Server"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "Nur einen Accept-Event senden (kein I/O)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "Zertifikatsbündel-Datei zur Verifikation des Server-Zertifikats"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "Zertifikatsdatei für TLS-Handshake"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "Rechner an den die Logs gesendet werden"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "Entfernte ID des I/O-Logs zum Wiederaufnehmen"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "Private Schlüsseldatei"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "Serverzertifikat nicht überprüfen"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "Portnummer für die Verbindung zum Host"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "Restarte die vorhergehende I/O-Log Übertragung"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "Weise das Kommando mit dem angegebenen Grund zurück"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "Teste den Audit-Server durch senden ausgewählter I/O-Logs n-Mal parallel"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "Fehler beim Lookup %s:%s: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "Kann die Server IP-Adresse nicht finden"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "Fehler beim Lesen %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "Client-Nachricht ist zu groß: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: Schreib-Puffer wird bereits verwendet"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "unerwarteter I/O Event %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: unerwarteter Status %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "ungültiges ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "Fehler beim Empfangen der Nachricht vom Server: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "Abbruch-Nachricht vom Server empfangen: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "Kann die ServerNessage nicht auspacken"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: unerwarteter type_case Wert %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "Zeitablauf beim Lesen vom Server"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "unerwartetes Datei-Ende"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "Server-Nachricht ist zu groß: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "Zeitablauf beim Senden an den Server"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "Timeout beim TLS-Handshake erreicht"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "Konnte den Event nicht setzen"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS-Kommunikation fehlgeschlagen: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "SSL-Kontext kann nicht initialisiert werden: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Kann kein SSL-Objekt anlegen: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Kann den Socket nicht an das SSL-Objekt anhängen: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "Sowohl Restart-Punkt als auch die I/O-Log ID sind notwendig"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "Ein Restart-Punkt kann nicht angegeben werden, wenn keine Ein/Ausgabe gesendet ist."
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "Vorzeitig beendet mit Status %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "Abgelaufene Zeit zum Server gesendet [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "Commit Punkt vom Server empfangen [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Alias »%s« ist bereits definiert"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "Die aktuelle Zeit kann nicht ausgelesen werden"
@@ -1014,38 +1056,38 @@ msgstr "%s: TGT kann nicht verifiziert werden! Möglicher Angriff!: %s"
msgid "unable to initialize PAM: %s"
msgstr "PAM kann nicht initialisiert werden: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Fehler bei der PAM-Authentifizierung: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "Fehler bei der Validierung des Kontos, ist das Konto gesperrt?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Konto oder Passwort ist abgelaufen, bitte Passwort zurücksetzen und nochmal probieren"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "Das abgelaufene Passwort kann nicht geändert werden: %s«"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Das Passwort ist abgelaufen, bitte wenden Sie sich an den Systemadministrator"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Das Konto ist abgelaufen oder in der PAM-Konfiguration fehlt der »account«-Abschnitt für sudo. Bitte wenden Sie sich an den Systemadministrator"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Fehler beim PAM-Account-Management: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "Der Benutzer existiert in der %s-Datenbank nicht"
@@ -1118,7 +1160,27 @@ msgstr "Der Audit-Zustand kann nicht bestimmt werden"
msgid "unable to commit audit record"
msgstr "Audit-Satz kann nicht auf Platte geschrieben werden"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "Fehler beim Lesen der Belehrungsdatei %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "Ignoriere Belehrungsdatei %s: es ist keine reguläre Datei"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "Die Datei »%s« kann nicht geöffnet werden"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1138,21 +1200,41 @@ msgstr ""
" #3) Mit großer Macht kommt große Verantwortung.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "Unbekannte Benutzer-ID: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "Unbekannter Benutzer: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Fehler: %s:%d:%d: Zyklus in %s »%s«"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Warnung: %s:%d:%d: Zyklus in %s »%s«"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Fehler: %s:%d:%d: %s »%s« wird verwendet, ist aber nicht definiert"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Warnung: %s:%d:%d: %s »%s« wird verwendet, ist aber nicht definiert"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1168,7 +1250,7 @@ msgstr "Start der Folge: %s: %s"
msgid "order padding: %s: %s"
msgstr "Auffüllen der Folge: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s-Grammatik Version %d\n"
@@ -1188,9 +1270,9 @@ msgstr "Nicht unterstütztes Ausgabeformat %s"
msgid "%s: input and output files must be different"
msgstr "%s: Eingabe- und Ausgabedatei müssen unterschiedlich sein"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "Standardwerte für sudoers können nicht initialisiert werden"
@@ -1219,37 +1301,28 @@ msgstr "ungültiger suppression Typ: %s"
msgid "invalid filter: %s"
msgstr "Ungültiger Filter: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "Die Datei »%s« kann nicht geöffnet werden"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "Analyse der Datei %s gescheitert, unbekannter Fehler"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "Analysefehler in %s nahe Zeile %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "Analysefehler in %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "In die Datei »%s« kann nicht geschrieben werden"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1258,7 +1331,7 @@ msgstr ""
"%s – zwischen sudoers Dateiformaten konvertieren\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1906,6 +1979,15 @@ msgstr "Root-Verzeichnis zur Verwendung, bevor ein Befehl ausgeführt wird: %s"
msgid "The format of logs to produce: %s"
msgstr "Das Format der zu schreibenden Logs: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Schalte SELinux RBAC Support ein"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Pfad zur Datei die beim ersten sudo-Lauf erzeugt wird: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1956,35 +2038,35 @@ msgstr "%s:%d:%d: Der Wert »%s« ist für die Option »%s« ungültig"
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: Der Wert »%s« ist für die Option »%s« ungültig"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: Werte für »%s« müssen mit »/«, »~« oder »*« beginnen"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: Werte für »%s« müssen mit »/«, »~« oder »*« beginnen"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: Werte für »%s« müssen mit einem »/« beginnen"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: Werte für »%s« müssen mit einem »/« beginnen"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: envp ist beschädigt, die Längen passen nicht"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "Das Environment kann nicht neu erstellt werden"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "Leider dürfen die folgenden Umgebungsvariablen nicht gesetzt werden: %s"
@@ -2048,42 +2130,42 @@ msgstr "»%s« ist keine gültige Netzmaske"
msgid "Local IP address and netmask pairs:\n"
msgstr "Lokale IP-Adresse und Netzmaske:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "Unbekannte Gruppe: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "Kann die Sequenz-Datei nicht aktualisieren"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "In die I/O Logdatei kann nicht geschrieben werden: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "Die Datei %s%s kann nicht erstellt werden"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: Interner Fehler, Logdatei für Event %d nicht geöffnet"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "Die Uhrzeit kann nicht ausgelesen werden"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: Interner Fehler, ungültiges Signal %d"
@@ -2111,7 +2193,7 @@ msgstr "LDAP kann nicht initialisiert werden: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls ist angegeben, aber die LDAP-Bibliotheken unterstützen ldap_start_tls_s() und ldap_start_tls_s_np() nicht"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "Ungültiges »sudoOrder« Attribut: %s"
@@ -2130,21 +2212,29 @@ msgstr "LDAP-Adresstyp wird nicht unterstützt: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "ldap- und ldaps-Adressen können nicht zusammen verwendet werden"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "doppelte sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "sudoOption kann nicht konvertiert werden: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "Das Audit-System kann nicht geöffnet werden"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "Die Audit-Nachricht kann nicht gesendet werden"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "Fehler in der Event-Schleife"
@@ -2166,20 +2256,20 @@ msgstr "TLS Initialisierung war nicht erfolgreich"
msgid "TLS handshake was unsuccessful"
msgstr "TLS Handshake war nicht erfolgreich"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: Interner Fehler, ungültiger Exit-Status %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "Verbindung zum Logserver verloren"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "Schreib-Puffer fehlt"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "Verbindung zum Logserver kann nicht aufgebaut werden"
@@ -2215,15 +2305,15 @@ msgstr "Leider darf der Benutzer %s sudo für %s nicht verwenden.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Leider darf der Benutzer %s »%s%s%s« als %s%s%s auf %s nicht ausführen.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: Befehl nicht gefunden"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2247,12 +2337,12 @@ msgstr "Fehler bei der Authentifizierung"
msgid "a password is required"
msgstr "Ein Passwort ist notwendig"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "Die Protokolldatei kann nicht geöffnet werden: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "In die Logdatei kann nicht geschrieben werden: %s"
@@ -2262,7 +2352,7 @@ msgstr "In die Logdatei kann nicht geschrieben werden: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "Prüfsumme für %s (%s) ist nicht in der Form %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2271,7 +2361,7 @@ msgstr ""
"\n"
"LDAP-Rolle: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2279,104 +2369,110 @@ msgstr ""
"\n"
"Sudoers-Eintrag:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAsUsers: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAsGroups: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Optionen: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Befehle:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Passende Defaults-Einträge für %s auf %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Runas und befehlsspezifische Standardwerte für %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Der Benutzer %s darf die folgenden Befehle auf %s ausführen:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Der Benutzer %s darf sudo auf dem Rechner %s nicht ausführen.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "ignoriere die unvollständige sudoRole: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "Ungültiges LDIF-Attribut: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "ungültige Option »%.*s« durch das sudo-Frontend angegeben"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "Die Netzwerkadressliste kann nicht eingelesen werden"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "Benutzername nicht durch das sudo-Frontend angegeben"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "User-ID nicht durch das sudo-Frontend angegeben"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "Gruppen-ID nicht durch das sudo-Frontend angegeben"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "Hostname nicht durch das sudo-Frontend angegeben"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "Ungültiges Arbeitsverzeichnis: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "Ungültiges »chroot« Verzeichnis: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "%s kann nicht ausgeführt werden"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: ungültige Mode-Flags vom sudo-Frontend: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Sudoers-Policy-Plugin Version %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Sudoers-Datei-Grammatik-Version %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2385,86 +2481,91 @@ msgstr ""
"\n"
"Sudoers-Pfad: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch-Pfad: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf-Pfad: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret-Pfad: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "Der Hook vom Typ %d kann nicht registriert werden (Version %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "Der Hook vom Typ %d kann nicht deregistriert werden (Version %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "Die Benutzer-ID %u kann nicht zwischengespeichert werden"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "Die Benutzer-ID %u kann nicht zwischengespeichert werden, sie existiert bereits"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "Der Benutzer %s kann nicht zwischengespeichert werden"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "Der Benutzer %s kann nicht in den Zwischenspeicher aufgenommen werden, er existiert bereits"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "Die Gruppen-ID %u kann nicht in den Zwischenspeicher aufgenommen werden"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "Die Gruppen-ID %u kann nicht in den Zwischenspeicher aufgenommen werden, sie existiert bereits"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "Die Gruppe %s kann nicht zwischengespeichert werden"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "Die Gruppe %s kann nicht in den Zwischenspeicher aufgenommen werden, sie existiert bereits"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "Die Gruppen-Liste für %s kann nicht in den Zwischenspeicher aufgenommen werden, sie existiert bereits"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "Die Gruppenliste für %s können nicht zwischengespeichert werden"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "Die Gruppen für %s können nicht eingelesen werden"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "Die Gruppen für %s können nicht geparst werden"
@@ -2539,135 +2640,139 @@ msgstr "Die SSS-Quelle kann nicht initialisiert werden. Ist SSSD auf dem Rechner
msgid "unable to find symbol \"%s\" in %s"
msgstr "Das Symbol »%s« kann in %s nicht gefunden werden"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "Problem mit den Standard-Einträgen"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "Keine gültige sudoers-Quelle gefunden, Programmende"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "Der Benutzer darf das root-Verzeichnis nicht auf »%s« ändern"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "Sie dürfen die Option -R nicht mit dem Kommando »%s« verwenden"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "Der Benutzer darf das Verzeichnis nicht auf %s ändern"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "Sie dürfen die Option -C nicht mit dem Kommando »%s« verwenden"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "Kein Kommando angegeben"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers gibt an, dass root sudo nicht verwenden darf"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "Der Benutzer darf das »closefrom«-Limit nicht überschreiben"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "Sie dürfen die Option -C nicht verwenden"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "Zeitstempelbesitzer (%s): Benutzer existiert nicht"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "Kein tty"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "Sie müssen ein TTY haben, um sudo zu verwenden"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "Ungültiger Shell für den Benutzer %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "Befehl ist im aktuellen Verzeichnis"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "Der Benutzer darf keinen Kommand-Timeout angeben"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "Sie dürfen keinen Timeout angeben"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "Der Benutzer darf das Environment nicht erhalten"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "Sie dürfen das Environment nicht erhalten"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "Der Befehl ist zu lang"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "»sudoedit« muss nicht mittels »sudo« aufgerufen werden"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "Die Datei »%s« kann nicht gelesen werden"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "stat konnte nicht auf %s angewendet werden"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s ist keine reguläre Datei"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s gehört UID %u, sollte UID %u gehören"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s ist für alle beschreibbar (world writable)"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s gehört GID %u, sollte allerdings %u gehören"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "Nur root kann »-c %s« verwenden"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "Unbekannte Anmeldeklasse: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "Hostname %s kann nicht aufgelöst werden"
@@ -2824,11 +2929,11 @@ msgstr ""
" -V, --version zeigt Versionsinformationen an und beendet\n"
" das Programm"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\tHost stimmt nicht überein"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2836,7 +2941,7 @@ msgstr ""
"\n"
"Befehl erlaubt"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2844,7 +2949,7 @@ msgstr ""
"\n"
"Befehl verweigert"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2857,121 +2962,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s ist für die Gruppe beschreibbar"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "Die Zeitstempeldatei kann nicht auf %lld Bytes abgeschnitten werden"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "Zeitstempel aus der Zukunft wird ignoriert"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "Zeitstempel ist zu weit in der Zukunft: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "Die Zeitstempeldatei »%s« kann nicht gesperrt werden"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "Pfad zur Belehrung ist zu lang: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "»sudoedit« sollte nicht mit einem Pfad angegeben werden"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "Die Option »-x» wird in einer zukünftigen Version entfernt"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "Bitte verwenden Sie stattdessen das Programm »cvtsudoers«"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "Drücken Sie die Eingabetaste, um %s zu bearbeiten: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "Der angegebene Editor (%s) ist nicht vorhanden"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "Kein Editor gefunden (Pfad zum Editor = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "Schreibfehler"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "Anwenden von stat auf die temporäre Datei (%s) gescheitert, %s ist unverändert"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "Leere temporäre Datei (%s), %s ist unverändert"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "Editor-Aufruf (%s) ist gescheitert, %s ist unverändert"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s unverändert"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "Erneutes Öffnen der temporären Datei (%s) gescheitert, %s ist unverändert."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "Analyse der temporären Datei (%s) gescheitert, unbekannter Fehler"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "Interner Fehler, %s in der Liste nicht gefunden!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "Festlegen von (uid, gid) von %s auf (%u, %u) gescheitert"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s und %s befinden sich nicht im gleichen Dateisystem, werden mit mv umbenannt"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "Befehl gescheitert: »%s %s %s«, %s unverändert"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "Fehler beim Umbenennen von %s, %s unverändert"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Was jetzt? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2983,67 +3088,47 @@ msgstr ""
" Beenden, ohne die Änderungen an der sudoers-Datei zu speichern (mit x)\n"
" Beenden und Änderungen an der sudoers-Datei speichern (mit Q, VORSICHT!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "%s konnte nicht ausgeführt werden"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: Falsche Besitzer-(uid, gid), sollte (%u, %u) sein\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: Falsche Zugriffsrechte, sollte Modus 0%o sein\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: Analyse OK\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s ist in Verwendung, versuchen Sie es später erneut"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "Die Datei »%s« kann nicht gesperrt werden"
# XXX
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Trotzdem ändern? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Fehler: %s:%d:%d: Zyklus in %s »%s«"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Warnung: %s:%d:%d: Zyklus in %s »%s«"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Fehler: %s:%d:%d: %s »%s« wird verwendet, ist aber nicht definiert"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Warnung: %s:%d:%d: %s »%s« wird verwendet, ist aber nicht definiert"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Warnung: %s:%d:%d: nicht verwendet: %s »%s«"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3052,7 +3137,7 @@ msgstr ""
"%s – Die sudoers-Datei sicher bearbeiten\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3072,30 +3157,30 @@ msgstr ""
" -s, --strict strikte Syntax-Prüfung\n"
" -V, --version Versionsinformation anzeigen und beenden\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "leere Zeichenkette"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "leere Gruppe"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "leere Netgroup"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "Ungültiger Zeilenfortsetzung"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "Ungültiges IPv6 Adresse: %s"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "unerwarteter Zeilenumbruch in Zeichenkette"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "Zu viele geschachtelte include-Einträge"
diff --git a/plugins/sudoers/po/eo.mo b/plugins/sudoers/po/eo.mo
index bbc18514d..1b44c316c 100644
--- a/plugins/sudoers/po/eo.mo
+++ b/plugins/sudoers/po/eo.mo
Binary files differ
diff --git a/plugins/sudoers/po/eo.po b/plugins/sudoers/po/eo.po
index 05402b917..f631e1169 100644
--- a/plugins/sudoers/po/eo.po
+++ b/plugins/sudoers/po/eo.po
@@ -1,14 +1,14 @@
# Esperanto translations for sudo package.
# This file is distributed under the same license as the sudo package.
-# Keith Bowes <zooplah@gmail.com>, 2012, 2019, 2020.
+# Keith Bowes <zooplah@gmail.com>, 2012, 2019-2021.
# Felipe Castro <fefcas@gmail.com>, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-18 16:11-0500\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-03 17:34-0500\n"
"Last-Translator: Keith Bowes <zooplah@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: eo\n"
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.0.7\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "sintaksa eraro"
@@ -43,426 +43,459 @@ msgstr "*** SEKURECO: informoj por %h ***"
msgid "Sorry, try again."
msgstr "Malĝuste, reprovu."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "ne eblas rezervi memoron"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "resumo postulas vojnomon"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "valoroj por \"CWD\" devas komenciĝi per '/', '~' aŭ '*'"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "valoroj por \"CHROOT\" devas komenciĝi per '/', '~' aŭ '*'"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "sintakseraro: rezervita vorto %s uzata kiel kromnomo"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "malvalida valoro notafter"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "validiga valoro notafter"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "eksvalidiĝo-valoro tro grandas"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "malvalida eksvalidiĝo-valoro"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Kromnomo \"%s\" jam ekzistas"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "interna eraro, troo en %s"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "ne eblas kopii enigon: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "ne eblas plenumigi %s-on: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "ne eblas forki"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "ne eblas forki: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "ne eblas malfermi tubon: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s: %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (komando daŭrigis) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s ekzistas sed ne dosierujo (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "ne eblas mkdir-i: %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "ne eblas ŝanĝi reĝimon de %s al 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "atendita JSON_STRING, %d ricevita"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY tro grandas"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "mankas duobla citilo en nomo"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "mankanta JSON_OBJECT"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "atendita JSON_OBJECT, %d ricevita"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "json-stako eluzita (maksimume %u kandroj)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "objektoj devas konsisti el paroj nomo:valoro"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "mankanta apartigilo inter valoroj"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "'}' sen kongruanta '{'"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "neatendita tabelo"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "']' sen kongruanta '['"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "neatendita ĉeno"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "mankas dupunkto post nomo"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "neatendita bulea valoro"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "neatendita nulo"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "neatendita nombro"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u ne eblas analizi: \"%s\""
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "analiza eraro"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: malvalida protokolo-dosiero"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: mankas temp-indikila kampo"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: temp-indikilo %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: mankas kampo de uzanto"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: mankas kampo de runa uzanto"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: mankas kampo de runa grupo"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s ekzistas sed ne dosierujo (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "ne eblas mkdir-i: %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "ne eblas ŝanĝi reĝimon de %s al 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "nelegebla tempo-registra dosiero: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "malvalida linio en la tempo-registran dosieron: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "protokolo jam estas kompleta, ne eblas restartigi ĝin"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "ne eblas restartigi protokolon"
@@ -487,141 +520,141 @@ msgstr "%s/%s: ne eblas serĉi antaŭen: %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "ne eblas trovi daŭrigan punkton [%lld, %ld] en %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "statmaŝina eraro"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "nevalida AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "neanalizebla AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "malsukcesis kreiĝo de eneliga protokolo"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "malsukcesis protokoli akcepto-eventon"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "nevalida RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "neanalizebla RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "malsukcesis protokoli malakcepto-eventon"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "nevalida AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "neanalizebla AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "malsukcesis protokoli alarmo-eventon"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "protokolo-eraro"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "neskribebla IoBuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "neskribela ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "neskribela CommandSuspend"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "nekonata ClientMessage-tipo"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "klienta mesaĝo tro grandas"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "ne agordi ĉifraron de TLS 1.2 al %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "ne agordi ĉifraron de TLS 1.3 al %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "ne eblas akiri metodon de TLS-servilo: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "ne eblas krei TLS-kuntekston: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "ne eblas ŝargi atestilon %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "Ne eblas ŝargi aŭtoritatan atestilaron: %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "ne eblas ŝarĝi privatŝlosilon %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "ne ablas agordi parametrojn de diffie-hellman: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "ne ablas elekti minimuman eldonon de TLS al 1.2: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "ne eblas atingi foran IP-adreson"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Ne eblas almeti uzanto-datumojn al la SSL-objekto: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -631,280 +664,290 @@ msgstr "Ne eblas almeti uzanto-datumojn al la SSL-objekto: %s"
msgid "unable to add event to queue"
msgstr "ne eblas aldoni eventon al atendovico"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "ne eblas agordi aŭskultan ŝtopilingon"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - sendi sudo-eneligo-protokolon al fora servilo\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "protokolo-servilo de sudo"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Elektoj:\n"
-" -f, --file=sudoers indiki lokon de la dosiero sudoers\n"
-" -h, --help montri helpan mesaĝon kaj eliri\n"
-" -n, --no-fork ne forki, plenumi malfore\n"
-" -R, --random-drop elcenta ŝanco, ke la kontektoj interrompiĝos\n"
-" -V, --version montri eldonon kaj eliri\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Modifiloj:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "vojo al la agordo-dosiero"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "montri helpan mesaĝon kaj finiĝi"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "ne disforkiĝi, plenumiĝi en la malfono"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "elcenta ŝanco, ke konektoj malkonektiĝos"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "montri eldonan informon kaj finiĝi"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C, eldono 1.3 aŭ pli postulata"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "validiga hazarda interrompiĝo-valoro: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s eldono %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS ne regata"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: ne tute kvalifikita vojo"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d '[' sen kongruanta ']': %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d nevalida agordo-sekcio: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d nevalida agordo-dosiera linio: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d atendas sekcian nomon: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "nevalida valoro por %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d nekonata ŝlosilvorto: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "nekonata syslog-instalaĵo: %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "nekonata syslog-prioritato: %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Elektoj:\n"
-" --help montri helpilon kaj fini\n"
-" -A, --accept sendi nur akcepto-eventon (neniun eneligon)\n"
-" -h, --host retnodo al kiu sendi protokolojn\n"
-" -i, --iolog_id fara identigilo de eneliga logo daŭrigota\n"
-" -p, --port pordo uzota dum konektiĝi al retnodo\n"
-" -r, --restart restartigi antaŭan eneligo-protokolan transigon\n"
-" -R, --reject malakcepti la komandon kun donita kialo\n"
-" -b, --ca-bundle atestilara dosiero kontraŭ kiu konstati la atestilon de la servilo\n"
-" -c, --cert atestila dosiero por TLS-manpremo\n"
-" -k, --key privatŝlosila dosiero\n"
-" -n, --no-verify ne konstati la servilan atestilon\n"
-" -t, --test provi kontrolan servilon per sendado de la elektita eneliga protokolo n-foje paralele\n"
-" -V, --version montri eldonon kaj fini\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "%s - sendi eneligo-protokolon de sudo al fora servilo"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "sendi nur akcepto-eventon (neniun eneligon)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "atestilara dosiero kontraŭ kiu aŭtentigi la servilan atestilon"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "atestila dosiero por TLS-manpremo"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "retnodo al kiu sendi protokolojn"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "fora identigilo de eneliga protokolo rekomenciĝonta"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "privatŝlosila dosiero"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "ne aŭtentigi servilan atestilon"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "porto uzoto dum konektiĝi al retnodo"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "restartigi iaman eneligo-protokolan transdonon"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "malakcepti la komandon kun la donita kialo"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "provi revizian servilon per sendado de elektita eneliga logo n-foje paralele"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "ne eblas serĉi je %s:%s %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "ne eblas atingi servilan IP-adreson"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "ne eblas legi je %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "klienta mesaĝo tro grandas: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: skribobufo jam uzata"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "neatendita eneliga evento %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: neatendita stato %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "nevalida ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "erarmesaĝo ricevita el servilo: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "abortiga mesaĝo ricevita el servilo: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "neelpakebla ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s neatendita valoro %d de type_case"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "eksvalidiĝo dum legado el servilo"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "trofrua dosierfino"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "servila mesaĝo tro granda: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "eksvalidiĝo dum skribado al servilo"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "Eksvalidiĝo de TLS-manpremo okazis"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "ne eblas apliki eventon"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS-konekto malsukcesis: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "ne eblas ekigi SSL-kuntekston: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Ne eblas generi SSL-objekton: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Ne eblas almeti ŝtopilingon al la SSL-objekton: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "kaj restartiga punkto kaj iolog-identigilo estas specifendaj"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "ne rajtas estigi restartigan punkton kiam neniu eneligaĵo estas sendita"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "trofrue finiĝis kun stato %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "pasinta tempo sentita al servilo [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "kunsendita punkto ricevita el servilo [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Kromnomo \"%s\" jam ekzistas"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "ne eblas akiri la tempon de la tago"
@@ -1010,38 +1053,38 @@ msgstr "%s: Ne eblas kontroli TGT! Ebla atako!: %s"
msgid "unable to initialize PAM: %s"
msgstr "ne eblas ekigi PAM: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Eraro de aŭtentikiga servilo: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "malsukceso ĉe konta validigo, ĉu via konto estas ŝlosita?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Konto aŭ pasvorto eksvalidiĝis, restarigu vian pasvorton kaj reprovu"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "ne eblas ŝanĝi eksvalidan pasvorton: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Pasvorto eksvalidiĝis, kontaktu vian sistemestron"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Konto eksvalidiĝis aŭ PAM-agordon malhavas sekcion \"account\" por sudo, kontaktu vian sistemestron"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Eraro de administro de konto PAM: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "vi ne ekzistas en la datumbazo %s"
@@ -1114,7 +1157,27 @@ msgstr "Ne eblis determini revizian kondiĉon"
msgid "unable to commit audit record"
msgstr "ne eblis konservi revizian rikordon"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "eraro dum legi prelegan dosieron %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "ignoranta prelegan dosieron %s: ne regula dosiero"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "ne eblas malfermi: %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1134,21 +1197,41 @@ msgstr ""
" #3) Granda povo devigas grandan responson.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "nekonata uid: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "nekonata uzanto: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Eraro: %s:%d:%d: ciklo en %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Averto: %s:%d:%d: ciklo en %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Eraro: %s:%d:%d: %s \"%s\" estas referencita sed ne difinita"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Averto: %s:%d:%d: %s \"%s\" estas referencita sed ne difinita"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1164,7 +1247,7 @@ msgstr "komenca ordo: %s: %s"
msgid "order padding: %s: %s"
msgstr "ŝtopado de ordo: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s gramatika eldono %d\n"
@@ -1184,9 +1267,9 @@ msgstr "nesubtenata elig-formo %s"
msgid "%s: input and output files must be different"
msgstr "%s: eliga kaj eniga dosieroj devas esti malsamaj"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "ne eblas ekigi aŭtomatajn valorojn de sudoers"
@@ -1215,37 +1298,28 @@ msgstr "malvalida demeto-tipo: %s"
msgid "invalid filter: %s"
msgstr "malvalida filtro: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "ne eblas malfermi: %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "malsukcesis analizi dosieron %s, nekonata eraro"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "analiza eraro en %s proksime al linio %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "analiza eraro en %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "ne eblas skribi al %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1254,7 +1328,7 @@ msgstr ""
"%s - konverti inter dosierformoj de sudoers\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1900,6 +1974,15 @@ msgstr "Radika dosierujo ŝanĝota antaŭ ol plenumi la komandon: %s"
msgid "The format of logs to produce: %s"
msgstr "La formato de protokoloj por produkti je %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Aktivigu regon de SELinux-RBAC"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Vojo al la dosiero, kiu estas kreota la unan fojon, kiam sudo estas plenumiĝinta: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1950,35 +2033,35 @@ msgstr "%s:%d:%d: valoro \"%s\" estas malvalida por parametro \"%s\""
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: valoro \"%s\" estas malvalida por parametro \"%s\""
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: valoroj por \"%s\" devas komenciĝi per '/', '~' aŭ '*'"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: valoroj por \"%s\" devas komenciĝi per '/', '~' aŭ '*'"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: valoroj por \"%s\" devas komenciĝi per '/'"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: valoroj por \"%s\" devas komenciĝi per '/'"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: medio tro granda"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "ne eblas rekonstrui la medion"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "bedaŭre vi ne estas permesata valorizi la jenajn medivariablojn: %s"
@@ -2042,42 +2125,42 @@ msgstr "ne eblas trakti retmaskon \"%s\""
msgid "Local IP address and netmask pairs:\n"
msgstr "Loka IP-adresa kaj retmaska paroj:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "nekonata grupo: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "ne eblas ĝisdatigi sinsekvan dosieron"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "ne eblas skribi al eneliga protokoldosiero: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "ne eblas krei: %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: interna eraro, protokola dosiero de en/eligo por evento %d ne estas malferma"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "ne eblas legi la horloĝon"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: interna eraro, malvalida signalo %d"
@@ -2105,7 +2188,7 @@ msgstr "ne eblas ekigi LDAP-on: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls specifita sed LDAP-bibliotekoj ne havas la funkciojn ldap_start_tls_s() kaj ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "malvalida atributo de sudoOrder: %s"
@@ -2124,21 +2207,29 @@ msgstr "nekonata retadresa tipo de LDAP: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "ne eblas miksi sekurajn kaj nesekurajn retadresojn de LDAP"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "ne eblas duobligi sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "ne eblas konverti sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "ne eblas malfermi revizian sistemon"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "ne eblas sendi revizian mesaĝon"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "eraro en evento-iteracio"
@@ -2160,20 +2251,20 @@ msgstr "TLS-komenciĝo malsukcesis"
msgid "TLS handshake was unsuccessful"
msgstr "TLS-manpremo malsukcesis"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: interna eraro, malvalida finiĝo-stato %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "konekto al protokolo-servilo perdita"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "mankanta skribobufo"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "ne eblas konektiĝi al protokolo-servilo"
@@ -2209,15 +2300,15 @@ msgstr "Bedaŭre uzanto %s ne rajtas plenumigi sudo en %s.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Bedaŭre uzanto %s ne rajtas plenumigi '%s%s%s' kiel %s%s%s en %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: komando ne trovita"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2241,12 +2332,12 @@ msgstr "aŭtentiga malsukceso"
msgid "a password is required"
msgstr "pasvorto estas bezonata"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "ne eblas malfermi protokolon: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "ne eblas skribi al protokolo: %s"
@@ -2256,7 +2347,7 @@ msgstr "ne eblas skribi al protokolo: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "resumo por %s (%s) ne estas laŭ la formo %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2265,7 +2356,7 @@ msgstr ""
"\n"
"LDAP-rolo: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2273,104 +2364,110 @@ msgstr ""
"\n"
"Ero en sudoers:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAsUsers: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAsGroups: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Modifiloj: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Komandoj:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Kongruantaj eroj de Defaults: %s en %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Plenumigkiela komando-specifaj aŭtomataĵoj por %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Uzanto %s rajtas plenumigi la jenajn komandojn en %s:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Uzanto %s ne rajtas plenumigi sudo-on en %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "ni preteratentas malkompletan sudoRole: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "malvalida LDIF-atributo: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "malvalida %.*s difinita de sudo-fasado"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "ne eblas trakti reto-adresan liston"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "uzantnomo ne difinita de sudo-fasado"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "uzanto-ID ne difinita de sudo-fasado"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "grupo-ID ne difinita de sudo-fasado"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "gastiganta nomo ne difinita de sudo-fasado"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "nevalida kuranta dosierujo: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "malvalida chroot-dosierujo: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "ne eblas plenumigi: %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: nevalidaj reĝimaj flagoj el la fasado de sudo: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Eldono %s de la konduta kromprogramo\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Eldono %d de la gramatikilo de sudoers\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2379,86 +2476,91 @@ msgstr ""
"\n"
"Vojo de sudoers: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "vojo de nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "vojo de ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "vojo de ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "ne eblas registri hokon el tipo %d (versio %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "ne eblas malregistri hokon el tipo %d (versio %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "ne eblas konservi uid-on %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "ne eblas konservi uid-on %u, jam ekzistas"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "ne eblas krei tenejan uzanton: %s"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "ne eblas konservi uzanton %s, jam ekzistas"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "ne eblas konservi gid-on %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "ne eblas konservi gid-on %u, jam ekzistas"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "ne eblas konservi grupon %s"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "ne eblas konservi grupon %s, jam ekzistas"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "ne eblas konservi grupan liston por %s, jam ekzistas"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "ne eblas konservi grupliston por %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "ne eblas trakti grupon en %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "ne eblas trakti gids por %s"
@@ -2533,135 +2635,139 @@ msgstr "ne eblas ekigi SSS-fonton. Ĉu SSSD estas instalita en via maŝino?"
msgid "unable to find symbol \"%s\" in %s"
msgstr "ne eblas trovi simbolon \"%s\" en %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "problemoj kun aŭtomataj eroj"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "ne validaj fontotekstoj de sudoers trovita, ĉesiganta"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "uzanto ne rajtas ŝanĝi radikan dosierujon al %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "vi ne rajtas uzi la parametron -R kun %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "uzanto ne rajtas ŝanĝi dosierujon al %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "vi ne rajtas uzi la parametron -D kun %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "Neniu komando donita"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers specifas, ke ĉefuzanto ne rajtas sudo-i"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "uzanto ne permesata superregi la limigon de closefrom"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "vi ne rajtas uzi la parametron -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "tempo-indikila posedanto (%s): Nenia uzanto"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "neniu tty"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "bedaŭre vi devas havi tty-on por plenumigi sudo-on"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "nevalida ŝelo por uzanto %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "komando en nuna dosierujo"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "uzanto ne rajtas elekti komando-eksvalidiĝon"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "bedaŭre vi ne rajtas elekti komando-eksvalidiĝon"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "uzanto ne rajtas konservi la medion"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "bedaŭre vi ne rajtas konservi la medion"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "komando tro longas"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit ne devas plenumiĝi per sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "ne eblas legi %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "ne eblas apliki stat al %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s ne estas normala dosiero"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s estas estrita de uid %u, devas esti %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s estas skribebla de ĉiuj"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s estas estrita de gid %u, devas esti %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "nur ĉefuzanto rajtas uzi \"-c %s\""
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "nekonata ensaluta klaso: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "ne eblas trovi gastiganton %s"
@@ -2811,11 +2917,11 @@ msgstr ""
" -s, --speed=num rapidigi aŭ malrapidigi eligon\n"
" -V, --version eligi eldonan informon kaj eliri"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\thost sen egalo"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2823,7 +2929,7 @@ msgstr ""
"\n"
"Komando permesata"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2831,7 +2937,7 @@ msgstr ""
"\n"
"Komando rifuzata"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2844,121 +2950,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s estas skribebla de la grupo"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "ne eblas mallongigi tempo-indikilan dosieron ĝis %lld bajtoj"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "ignoranta tempo-indikilon el la estonteco"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "tempo-indikilo tro estonte: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "ne eblas ŝlosi tempo-indikilan dosieron %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "vojo de prelega stato tro longas: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit plej bone ne specifiĝu kun vojo"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "la domifilo -x estos forigita en posta eldono"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "bonvolu konsideri uzi la utilaĵon cvtsudoers anstataŭe"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "premu enen-klavon por redakti %s-on: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "specifita tekstoredaktilo (%s) ne ekzistas"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "neniu tekstoredaktilo trovita (vojo = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "skriba eraro"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "ne eblas apliki stat al provizora dosiero (%s), %s neŝanĝita"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "nul-longa provizora dosiero (%s), %s neŝanĝita"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "redaktilo (%s) malsukcesis, %s neŝanĝita"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s neŝanĝita"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "ne eblas remalfermi provizoran dosieron (%s), %s neŝanĝita."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "ne eblas analizi provizoran dosieron (%s), nekonata eraro"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "interna eraro, ne eblas trovi %s en listo!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "ne eblas ŝanĝi (uid, gid) de %s al (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s kaj %s ne estas la sama dosiersistemo, uzanta mv-on por alinomi"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "komando malsukcesis: '%s %s %s', %s neŝanĝita"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "eraro dum alinomi %s-on; %s neŝanĝita"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Kion nun? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2970,66 +3076,46 @@ msgstr ""
" (x) eliri sen konservi ŝanĝojn al sudoers-dosiero\n"
" (Q) Eliri kaj konservi ŝanĝojn al sudoers-dosiero (DANĜERA!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "ne eblas plenumigi: %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: malĝusta estro (uid, gid) devas esti (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: misaj permesoj, devas esti reĝimo 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: analizita senerare\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s okupata, reprovu pli malfrue"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "ne eblas ŝlosi: %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Ĉu redakti ja? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Eraro: %s:%d:%d: ciklo en %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Averto: %s:%d:%d: ciklo en %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Eraro: %s:%d:%d: %s \"%s\" estas referencita sed ne difinita"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Averto: %s:%d:%d: %s \"%s\" estas referencita sed ne difinita"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Averto: %s:%d:%d: neuzata %s \"%s\""
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3038,7 +3124,7 @@ msgstr ""
"%s - sekure redakti la dosieron sudoers\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3058,30 +3144,30 @@ msgstr ""
" -s, --strict severa kontrolado de sintakso\n"
" -V, --version montri eldonon kaj eliri\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "malplena ĉeno"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "malplena grupo"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "malplena retgrupo"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "malvalida linio-daŭrigo"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "malvalida IPv6-adreso"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "neatendita linirompo en ĉeno"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "tro da niveloj de inkluzivaĵoj"
diff --git a/plugins/sudoers/po/fi.mo b/plugins/sudoers/po/fi.mo
index b9253c443..ef762b2ab 100644
--- a/plugins/sudoers/po/fi.mo
+++ b/plugins/sudoers/po/fi.mo
Binary files differ
diff --git a/plugins/sudoers/po/fi.po b/plugins/sudoers/po/fi.po
index 7de0c7e6c..38e7a10e0 100644
--- a/plugins/sudoers/po/fi.po
+++ b/plugins/sudoers/po/fi.po
@@ -2,14 +2,14 @@
# This file is put in the public domain.
# This file is distributed under the same license as the sudo package.
# Jorma Karvonen <karvonen.jorma@gmail.com>, 2011-2017.
-# Lauri Nurmi <lanurmi@iki.fi>, 2019.
+# Lauri Nurmi <lanurmi@iki.fi>, 2019-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.2rc1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-06-24 05:35-0600\n"
-"PO-Revision-Date: 2020-08-14 19:19+0300\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-07 01:00+0200\n"
"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
@@ -18,9 +18,9 @@ msgstr ""
"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 2.4.1\n"
+"X-Generator: Poedit 2.4.2\n"
-#: confstr.sh:1
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "syntaksivirhe"
@@ -44,805 +44,918 @@ msgstr "*** TURVALLISUUStietoa %h-koneelta ***"
msgid "Sorry, try again."
msgstr "Yritä uudelleen."
-#: gram.y:203 gram.y:251 gram.y:258 gram.y:265 gram.y:272 gram.y:279
-#: gram.y:295 gram.y:319 gram.y:326 gram.y:333 gram.y:340 gram.y:347
-#: gram.y:410 gram.y:419 gram.y:430 gram.y:463 gram.y:470 gram.y:477
-#: gram.y:484 gram.y:511 gram.y:583 gram.y:590 gram.y:599 gram.y:608
-#: gram.y:625 gram.y:737 gram.y:744 gram.y:752 gram.y:758 gram.y:858
-#: gram.y:865 gram.y:872 gram.y:879 gram.y:886 gram.y:912 gram.y:919
-#: gram.y:926 gram.y:1068 gram.y:1347 lib/iolog/iolog_fileio.c:1101
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:283
-#: lib/iolog/iolog_json.c:313 lib/iolog/iolog_json.c:435
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/sendlog.c:443 plugins/sudoers/alias.c:125
-#: plugins/sudoers/alias.c:132 plugins/sudoers/alias.c:148
-#: plugins/sudoers/audit.c:108 plugins/sudoers/audit.c:212
-#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118
-#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669
-#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:161
-#: plugins/sudoers/cvtsudoers.c:178 plugins/sudoers/cvtsudoers.c:189
-#: plugins/sudoers/cvtsudoers.c:301 plugins/sudoers/cvtsudoers.c:429
-#: plugins/sudoers/cvtsudoers.c:562 plugins/sudoers/cvtsudoers.c:579
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:765 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
+#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
-#: plugins/sudoers/cvtsudoers_ldif.c:426 plugins/sudoers/cvtsudoers_ldif.c:434
-#: plugins/sudoers/cvtsudoers_ldif.c:451 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:607 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:382
-#: plugins/sudoers/iolog_client.c:559 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:586 plugins/sudoers/logging.c:723
-#: plugins/sudoers/logging.c:1083 plugins/sudoers/match_command.c:243
-#: plugins/sudoers/match_command.c:391 plugins/sudoers/match_command.c:438
-#: plugins/sudoers/match_command.c:509 plugins/sudoers/match_digest.c:80
-#: plugins/sudoers/parse.c:193 plugins/sudoers/parse.c:205
-#: plugins/sudoers/parse.c:220 plugins/sudoers/parse.c:232
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
-#: plugins/sudoers/sssd.c:146 plugins/sudoers/sssd.c:409
-#: plugins/sudoers/sssd.c:472 plugins/sudoers/sssd.c:516
-#: plugins/sudoers/sssd.c:563 plugins/sudoers/sssd.c:755
-#: plugins/sudoers/stubs.c:96 plugins/sudoers/stubs.c:104
-#: plugins/sudoers/sudoers.c:316 plugins/sudoers/sudoers.c:327
-#: plugins/sudoers/sudoers.c:337 plugins/sudoers/sudoers.c:380
-#: plugins/sudoers/sudoers.c:720 plugins/sudoers/sudoers.c:849
-#: plugins/sudoers/sudoers.c:894 plugins/sudoers/sudoers.c:1198
-#: plugins/sudoers/sudoreplay.c:553 plugins/sudoers/sudoreplay.c:556
-#: plugins/sudoers/sudoreplay.c:1260 plugins/sudoers/sudoreplay.c:1470
-#: plugins/sudoers/sudoreplay.c:1474 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:146
-#: plugins/sudoers/visudo.c:322 plugins/sudoers/visudo.c:328
-#: plugins/sudoers/visudo.c:438 plugins/sudoers/visudo.c:616
-#: plugins/sudoers/visudo.c:936 plugins/sudoers/visudo.c:1024
-#: plugins/sudoers/visudo.c:1121 toke.l:864 toke.l:981 toke.l:1039
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "muistin varaaminen epäonnistui"
-#: gram.y:505
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "tiiviste vaatii polkunimen"
-#: gram.y:638
+#: gram.y:643
+msgid "values for \"CWD\" must start with a '/', '~', or '*'"
+msgstr "”CWD”-muuttujan arvon on alettava merkillä ’/’, ’~’ tai ’*’"
+
+#: gram.y:655
+msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
+msgstr "”CHROOT”-muuttujan arvon on alettava merkillä ’/’, ’~’ tai ’*’"
+
+#: gram.y:786
+#, c-format
+msgid "syntax error, reserved word %s used as an alias name"
+msgstr "syntaksivirhe, varattua sanaa %s käytetty aliaksen nimenä"
+
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "virheellinen notbefore-arvo"
-#: gram.y:646
+#: gram.y:818
msgid "invalid notafter value"
msgstr "virheellinen notafter-arvo"
-#: gram.y:655 plugins/sudoers/policy.c:306
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "aikakatkaisuarvo on liian suuri"
-#: gram.y:657 plugins/sudoers/policy.c:308
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
-msgstr "virheellinen aikavalvonta-arvo"
-
-#: gram.y:1347 lib/iolog/iolog_fileio.c:1101 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:282 lib/iolog/iolog_json.c:313
-#: lib/iolog/iolog_json.c:435 lib/iolog/iolog_json.c:713
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196
-#: logsrvd/eventlog.c:223 logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1221
-#: logsrvd/logsrvd.c:1266 logsrvd/sendlog.c:443 logsrvd/sendlog.c:1302
-#: logsrvd/sendlog.c:1309 logsrvd/sendlog.c:1727 plugins/sudoers/audit.c:108
-#: plugins/sudoers/audit.c:212 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:120 plugins/sudoers/cvtsudoers.c:160
-#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
-#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
-#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
-#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/cvtsudoers.c:757
-#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1179
-#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1285
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:425 plugins/sudoers/cvtsudoers_ldif.c:433
-#: plugins/sudoers/cvtsudoers_ldif.c:450 plugins/sudoers/cvtsudoers_ldif.c:459
-#: plugins/sudoers/cvtsudoers_ldif.c:606 plugins/sudoers/defaults.c:626
-#: plugins/sudoers/defaults.c:919 plugins/sudoers/defaults.c:1052
-#: plugins/sudoers/editor.c:66 plugins/sudoers/editor.c:84
-#: plugins/sudoers/editor.c:95 plugins/sudoers/env.c:261
+msgstr "virheellinen aikakatkaisuarvo"
+
+#: gram.y:1185
+#, c-format
+msgid "%s:%d:%d: %s\n"
+msgstr "%s:%d:%d: %s\n"
+
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Alias ”%s” on jo määritelty"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:132
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:483
-#: plugins/sudoers/iolog_client.c:105 plugins/sudoers/iolog_client.c:215
-#: plugins/sudoers/iolog_client.c:236 plugins/sudoers/iolog_client.c:249
-#: plugins/sudoers/iolog_client.c:382 plugins/sudoers/iolog_client.c:678
-#: plugins/sudoers/iolog_client.c:696 plugins/sudoers/iolog_client.c:1176
-#: plugins/sudoers/iolog_client.c:1405 plugins/sudoers/iolog_client.c:1723
-#: plugins/sudoers/iolog_client.c:1751 plugins/sudoers/ldap.c:183
-#: plugins/sudoers/ldap.c:421 plugins/sudoers/ldap.c:431
-#: plugins/sudoers/ldap.c:436 plugins/sudoers/ldap.c:440
-#: plugins/sudoers/ldap.c:452 plugins/sudoers/ldap.c:743
-#: plugins/sudoers/ldap.c:907 plugins/sudoers/ldap.c:1279
-#: plugins/sudoers/ldap.c:1706 plugins/sudoers/ldap.c:1743
-#: plugins/sudoers/ldap.c:1824 plugins/sudoers/ldap.c:1959
-#: plugins/sudoers/ldap.c:2060 plugins/sudoers/ldap.c:2076
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
-#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/linux_audit.c:83
-#: plugins/sudoers/logging.c:103 plugins/sudoers/logging.c:192
-#: plugins/sudoers/logging.c:519 plugins/sudoers/logging.c:545
-#: plugins/sudoers/logging.c:585 plugins/sudoers/logging.c:1083
-#: plugins/sudoers/match_command.c:242 plugins/sudoers/match_command.c:390
-#: plugins/sudoers/match_command.c:437 plugins/sudoers/match_command.c:509
-#: plugins/sudoers/match_digest.c:80 plugins/sudoers/parse.c:192
-#: plugins/sudoers/parse.c:204 plugins/sudoers/parse.c:219
-#: plugins/sudoers/parse.c:231 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
+#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:120 plugins/sudoers/policy.c:129
-#: plugins/sudoers/policy.c:138 plugins/sudoers/policy.c:164
-#: plugins/sudoers/policy.c:291 plugins/sudoers/policy.c:306
-#: plugins/sudoers/policy.c:308 plugins/sudoers/policy.c:337
-#: plugins/sudoers/policy.c:346 plugins/sudoers/policy.c:389
-#: plugins/sudoers/policy.c:399 plugins/sudoers/policy.c:408
-#: plugins/sudoers/policy.c:417 plugins/sudoers/policy.c:491
-#: plugins/sudoers/policy.c:823 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:191 plugins/sudoers/pwutil.c:262
-#: plugins/sudoers/pwutil.c:340 plugins/sudoers/pwutil.c:514
-#: plugins/sudoers/pwutil.c:578 plugins/sudoers/pwutil.c:649
-#: plugins/sudoers/pwutil.c:808 plugins/sudoers/pwutil.c:865
-#: plugins/sudoers/pwutil.c:909 plugins/sudoers/pwutil.c:967
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:145
-#: plugins/sudoers/sssd.c:409 plugins/sudoers/sssd.c:472
-#: plugins/sudoers/sssd.c:516 plugins/sudoers/sssd.c:563
-#: plugins/sudoers/sssd.c:755 plugins/sudoers/stubs.c:96
-#: plugins/sudoers/stubs.c:104 plugins/sudoers/sudoers.c:316
-#: plugins/sudoers/sudoers.c:327 plugins/sudoers/sudoers.c:337
-#: plugins/sudoers/sudoers.c:380 plugins/sudoers/sudoers.c:720
-#: plugins/sudoers/sudoers.c:849 plugins/sudoers/sudoers.c:894
-#: plugins/sudoers/sudoers.c:1198 plugins/sudoers/sudoreplay.c:553
-#: plugins/sudoers/sudoreplay.c:556 plugins/sudoers/sudoreplay.c:1260
-#: plugins/sudoers/sudoreplay.c:1470 plugins/sudoers/sudoreplay.c:1474
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:581
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:146 plugins/sudoers/visudo.c:322
-#: plugins/sudoers/visudo.c:328 plugins/sudoers/visudo.c:438
-#: plugins/sudoers/visudo.c:616 plugins/sudoers/visudo.c:936
-#: plugins/sudoers/visudo.c:1024 plugins/sudoers/visudo.c:1121 toke.l:864
-#: toke.l:981 toke.l:1039
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/iolog/iolog_fileio.c:157
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s on olemassa, mutta ei ole hakemisto (0%o)"
+msgid "internal error, %s overflow"
+msgstr "sisäinen virhe, %s-ylivuoto"
-#: lib/iolog/iolog_fileio.c:187 lib/iolog/iolog_fileio.c:233
-#: plugins/sudoers/timestamp.c:205
+#: lib/eventlog/eventlog.c:324
#, c-format
-msgid "unable to mkdir %s"
-msgstr "käskyn mkdir %s suorittaminen epäonnistui"
+msgid "unable to dup stdin: %m"
+msgstr "funktion dup kutsuminen vakiosyötteellä epäonnistui: %m"
-#: lib/iolog/iolog_fileio.c:237 plugins/sudoers/visudo.c:733
-#: plugins/sudoers/visudo.c:744
+#: lib/eventlog/eventlog.c:366
#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "tilan %s vaihtaminen arvoon 0%o epäonnistui"
+msgid "unable to execute %s: %m"
+msgstr "käskyn %s suorittaminen epäonnistui: %m"
+
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
+msgid "unable to fork"
+msgstr "haarauttaminen epäonnistui"
-#: lib/iolog/iolog_json.c:114
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
+#, c-format
+msgid "unable to fork: %m"
+msgstr "fork-funktion kutsuminen epäonnistui: %m"
+
+#: lib/eventlog/eventlog.c:459
+#, c-format
+msgid "unable to open pipe: %m"
+msgstr "putken avaaminen epäonnistui: %m"
+
+#: lib/eventlog/eventlog.c:882
+#, c-format
+msgid "%8s : %s"
+msgstr "%8s : %s"
+
+#: lib/eventlog/eventlog.c:911
+#, c-format
+msgid "%8s : (command continued) %s"
+msgstr "%8s: (komento jatkui) %s"
+
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "odotettiin JSON_STRINGiä, saatiin %d"
-#: lib/iolog/iolog_json.c:305
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY liian suuri"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
-msgstr ""
+msgstr "nimestä puuttuu lainausmerkki"
+
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "puuttuva JSON_OBJECT"
-#: lib/iolog/iolog_json.c:392
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "odotettiin JSON_OBJECTia, saatiin %d"
-#: lib/iolog/iolog_json.c:441 lib/iolog/iolog_json.c:444
-#: lib/iolog/iolog_json.c:446 lib/iolog/iolog_json.c:538
-#: logsrvd/eventlog.c:228 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:563
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:435 plugins/sudoers/iolog.c:561
-#: plugins/sudoers/iolog.c:577 plugins/sudoers/ldap.c:516
-#: plugins/sudoers/ldap.c:747 plugins/sudoers/ldap.c:1080
-#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
-#: plugins/sudoers/linux_audit.c:89 plugins/sudoers/logging.c:1088
-#: plugins/sudoers/policy.c:521 plugins/sudoers/policy.c:668
-#: plugins/sudoers/policy.c:678 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:916 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/iolog/iolog_json.c:599
#, c-format
-msgid "internal error, %s overflow"
-msgstr "sisäinen virhe, %s-ylivuoto"
+msgid "json stack exhausted (max %u frames)"
+msgstr "json-pino täyttyi (enintään %u kehystä)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "objektien on oltava nimi:arvo-pareja"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "arvojen välinen erotin puuttuu"
-#: lib/iolog/iolog_json.c:607 lib/iolog/iolog_json.c:731
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
-msgstr ""
+msgstr "pariton sulkeva aaltosulje"
-#: lib/iolog/iolog_json.c:616
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "odottamaton taulukko"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:733
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
-msgstr ""
+msgstr "pariton sulkeva kulmasulje"
-#: lib/iolog/iolog_json.c:637
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "odottamaton merkkijono"
-#: lib/iolog/iolog_json.c:647
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "puuttuva kaksoispiste nimen jälkeen"
-#: lib/iolog/iolog_json.c:658 lib/iolog/iolog_json.c:673
-#: lib/iolog/iolog_json.c:688
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "odottamaton totuusarvo"
-#: lib/iolog/iolog_json.c:704
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "odottamaton null"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "odottamaton lukuarvo"
-# Ensimmäinen parametri on auth name
-#: lib/iolog/iolog_json.c:741
-#, fuzzy, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s: todentamisnimen ’%s’ jäsentäminen epäonnistui: %s"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "jäsennysvirhe"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: virheellinen lokitiedosto"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: aikaleimakenttä puuttuu"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: aikaleima %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: käyttäjäkenttä puuttuu"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: suorita käyttäjänä-kenttä puuttuu"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: suorita ryhmänä-kenttä puuttuu"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
#, c-format
-msgid "error reading timing file: %s"
-msgstr "virhe luettaessa ajoitustiedostoa: %s"
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s on olemassa, mutta ei ole hakemisto (0%o)"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
#, c-format
-msgid "invalid timing file line: %s"
-msgstr "virheellinen ajoitustiedostorivi: %s"
+msgid "unable to mkdir %s"
+msgstr "käskyn mkdir %s suorittaminen epäonnistui"
-#: logsrvd/eventlog.c:430 plugins/sudoers/logging.c:112
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
#, c-format
-msgid "%8s : %s"
-msgstr "%8s : %s"
+msgid "unable to change mode of %s to 0%o"
+msgstr "tilan %s vaihtaminen arvoon 0%o epäonnistui"
-#: logsrvd/eventlog.c:459 plugins/sudoers/logging.c:136
+#: lib/iolog/iolog_timing.c:255
#, c-format
-msgid "%8s : (command continued) %s"
-msgstr "%8s: (komento jatkui) %s"
+msgid "error reading timing file: %s"
+msgstr "virhe luettaessa ajoitustiedostoa: %s"
+
+#: lib/iolog/iolog_timing.c:262
+#, c-format
+msgid "invalid timing file line: %s"
+msgstr "virheellinen ajoitustiedostorivi: %s"
-#: logsrvd/iolog_writer.c:936
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "loki on jo valmis, ei voi aloittaa uudelleen"
-#: logsrvd/iolog_writer.c:967
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "lokia ei voi aloittaa uudelleen"
# Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf
-#: logsrvd/logsrv_util.c:98 logsrvd/logsrv_util.c:105
-#: plugins/sudoers/sudoreplay.c:353 plugins/sudoers/sudoreplay.c:359
+#: logsrvd/logsrv_util.c:99 logsrvd/logsrv_util.c:106
+#: plugins/sudoers/sudoreplay.c:352 plugins/sudoers/sudoreplay.c:358
#, c-format
msgid "unable to open %s/%s"
msgstr "ei voi avata tiedostoa %s/%s"
-#: logsrvd/logsrv_util.c:132
+#: logsrvd/logsrv_util.c:133
#, c-format
msgid "missing I/O log file %s/%s"
msgstr "puuttuva siirräntälokitiedosto %s/%s"
# Ensimmäinen parametri on auth name
-#: logsrvd/logsrv_util.c:139
-#, fuzzy, c-format
+#: logsrvd/logsrv_util.c:140
+#, c-format
msgid "%s/%s: unable to seek forward %zu"
-msgstr "%s: todentamisnimen ’%s’ jäsentäminen epäonnistui: %s"
+msgstr "%s/%s: siirtyminen %zu tavua eteenpäin epäonnistui"
-# parametrina on path
-#: logsrvd/logsrv_util.c:149
-#, fuzzy, c-format
+#: logsrvd/logsrv_util.c:150
+#, c-format
msgid "unable to find resume point [%lld, %ld] in %s/%s"
-msgstr "symbolin ”%s” löytäminen polusta %s epäonnistui"
+msgstr "jatkopistettä [%lld, %ld] ei löydy tiedostosta %s/%s"
-#: logsrvd/logsrvd.c:230 logsrvd/logsrvd.c:299 logsrvd/logsrvd.c:343
-#: logsrvd/logsrvd.c:398 logsrvd/logsrvd.c:445 logsrvd/logsrvd.c:496
-#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:560
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "tilakoneen virhe"
-#: logsrvd/logsrvd.c:239
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "virheellinen AcceptMessage"
-#: logsrvd/logsrvd.c:250
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "virhe jäsennettäessä AcceptMessagea"
-#: logsrvd/logsrvd.c:257
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "virhe luotaessa siirräntälokia"
-#: logsrvd/logsrvd.c:265
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "virhe hyväksymistapahtuman lokiin kirjaamisessa"
-#: logsrvd/logsrvd.c:308
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "virheellinen RejectMessage"
-#: logsrvd/logsrvd.c:319
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "virhe jäsennettäessä RejectMessagea"
-#: logsrvd/logsrvd.c:325
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "virhe hylkäystapahtuman lokiin kirjaamisessa"
-#: logsrvd/logsrvd.c:430
+#: logsrvd/logsrvd.c:490
+msgid "invalid AlertMessage"
+msgstr "virheellinen AlertMessage"
+
+#: logsrvd/logsrvd.c:499
+msgid "error parsing AlertMessage"
+msgstr "virhe jäsennettäessä AlertMessagea"
+
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "virhe hälytystapahtuman lokiin kirjaamisessa"
-#: logsrvd/logsrvd.c:451 logsrvd/logsrvd.c:502 logsrvd/logsrvd.c:534
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "protokollavirhe"
-#: logsrvd/logsrvd.c:461
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "virhe kirjoitettaessa IoBufferia"
-#: logsrvd/logsrvd.c:513
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "virhe kirjoitettaessa ChangeWindowSizeä"
-#: logsrvd/logsrvd.c:545
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "virhe kirjoitettaessa CommandSuspendia"
-#: logsrvd/logsrvd.c:630
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "tunnistamaton ClientMessage-tyyppi"
-#: logsrvd/logsrvd.c:895
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "asiakassanoma on liian suuri"
-#: logsrvd/logsrvd.c:1125 logsrvd/logsrvd.c:1133
-#, fuzzy, c-format
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
+#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
-msgstr "komennon %s suorittaminen epäonnistui: %s"
+msgstr "ei voida asettaa TLS 1.2 -algoritmisarjaksi %s: %s"
-#: logsrvd/logsrvd.c:1153 logsrvd/logsrvd.c:1161
-#, fuzzy, c-format
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
+#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
-msgstr "komennon %s suorittaminen epäonnistui: %s"
+msgstr "ei voida asettaa TLS 1.3 -algoritmisarjaksi %s: %s"
-#: logsrvd/logsrvd.c:1197
-#, fuzzy, c-format
+#: logsrvd/logsrvd.c:1280
+#, c-format
msgid "unable to get TLS server method: %s"
-msgstr "tietokoneen %s ratkaiseminen epäonnistui"
+msgstr "TLS-palvelinmenetelmää ei saada noudettua: %s"
-#: logsrvd/logsrvd.c:1202
-#, fuzzy, c-format
+#: logsrvd/logsrvd.c:1285
+#, c-format
msgid "unable to create TLS context: %s"
-msgstr "Ssl-kontekstia ei voi alustaa: %s"
+msgstr "TLS-kontekstia ei voi luoda: %s"
-#: logsrvd/logsrvd.c:1209 plugins/sudoers/iolog_client.c:237
-#, fuzzy, c-format
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
+#, c-format
msgid "unable to load certificate %s"
-msgstr "kohteen %s lataaminen epäonnistui: %s"
+msgstr "sertifikaatin %s lataaminen epäonnistui"
-#: logsrvd/logsrvd.c:1222 plugins/sudoers/iolog_client.c:217
-#, fuzzy, c-format
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
+#, c-format
msgid "unable to load certificate authority bundle %s"
-msgstr "Varmennetta ei voi ladata ssl-kontekstiin: %s"
+msgstr "varmenteen myöntäjän pakettia %s ei voitu ladata"
-#: logsrvd/logsrvd.c:1267 plugins/sudoers/iolog_client.c:250
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "yksityistä avainta %s ei voi ladata"
-#: logsrvd/logsrvd.c:1284 logsrvd/logsrvd.c:1293
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "diffie-hellman-parametreja ei voi asettaa: %s"
-#: logsrvd/logsrvd.c:1306
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "protokollaversion vähimmäisversiota ei voi asettaa TLS 1.2:ksi: %s"
-#: logsrvd/logsrvd.c:1491
-#, fuzzy
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
-msgstr "vaihtaminen root gid -tunnisteeksi epäonnistui"
+msgstr "vastapään IP-osoitteen noutaminen ei onnistu"
-#: logsrvd/logsrvd.c:1519 plugins/sudoers/iolog_client.c:264
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Käyttäjätietoja ei voi liittää ssl-objektiin: %s"
-#: logsrvd/logsrvd.c:1527 logsrvd/logsrvd.c:1649 logsrvd/logsrvd.c:1749
-#: logsrvd/sendlog.c:1106 logsrvd/sendlog.c:1462 logsrvd/sendlog.c:1477
-#: logsrvd/sendlog.c:1535 plugins/sudoers/iolog.c:921
-#: plugins/sudoers/iolog.c:1054 plugins/sudoers/iolog.c:1152
-#: plugins/sudoers/iolog_client.c:109 plugins/sudoers/iolog_client.c:325
-#: plugins/sudoers/iolog_client.c:341 plugins/sudoers/iolog_client.c:387
-#: plugins/sudoers/iolog_client.c:567 plugins/sudoers/iolog_client.c:574
-#: plugins/sudoers/iolog_client.c:1150 plugins/sudoers/iolog_client.c:1186
-#: plugins/sudoers/iolog_client.c:1194 plugins/sudoers/iolog_client.c:1254
-#: plugins/sudoers/iolog_client.c:1361 plugins/sudoers/iolog_client.c:1477
-#: plugins/sudoers/iolog_client.c:1759 plugins/sudoers/iolog_client.c:1767
-#: plugins/sudoers/sudoreplay.c:513 plugins/sudoers/sudoreplay.c:560
-#: plugins/sudoers/sudoreplay.c:792 plugins/sudoers/sudoreplay.c:904
-#: plugins/sudoers/sudoreplay.c:994 plugins/sudoers/sudoreplay.c:1009
-#: plugins/sudoers/sudoreplay.c:1016 plugins/sudoers/sudoreplay.c:1023
-#: plugins/sudoers/sudoreplay.c:1030 plugins/sudoers/sudoreplay.c:1037
-#: plugins/sudoers/sudoreplay.c:1164
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
+#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
+#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
+#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
+#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
+#: plugins/sudoers/sudoreplay.c:1015 plugins/sudoers/sudoreplay.c:1022
+#: plugins/sudoers/sudoreplay.c:1029 plugins/sudoers/sudoreplay.c:1036
+#: plugins/sudoers/sudoreplay.c:1163
msgid "unable to add event to queue"
msgstr "tapahtuman lisääminen jonoon epäonnistui"
-#: logsrvd/logsrvd.c:1703 logsrvd/logsrvd.c:1937
-#, fuzzy
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
-msgstr "asetustodentaminen epäonnistui"
+msgstr "kuuntelusoketin valmistelu epäonnistui"
-#: logsrvd/logsrvd.c:1843 logsrvd/sendlog.c:123
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - lähetä sudon siirräntäloki etäpalvelimelle\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "sudo-lokipalvelin"
-#: logsrvd/logsrvd.c:1846
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Valitsimet:\n"
-" -f, --file asetustiedoston polku\n"
-" -h, --help näytä opaste ja poistu\n"
-" -n, --no-fork älä haarauta, vaan suorita edustalla\n"
-" -R, --random-drop yhteyden katkeamisen todennäköisyys-%\n"
-" -V, --version näytä versiotiedot ja poistu\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Valitsimet:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "asetustiedoston polku"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "näytä opasteviesti ja poistu"
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "älä haarauta, vaan suorita edustalla"
-#: logsrvd/logsrvd.c:1898 logsrvd/sendlog.c:1700
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "prosentin mahdollisuus yhteyksien katkeamiseen"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "näytä versiotiedot ja poistu"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C:n versio 1.3 tai uudempi vaaditaan"
-#: logsrvd/logsrvd.c:1916
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "virheellinen satunnaispudotusarvo: %s"
-#: logsrvd/logsrvd.c:1920 logsrvd/sendlog.c:1750
-#: plugins/sudoers/cvtsudoers.c:229 plugins/sudoers/sudoreplay.c:300
-#: plugins/sudoers/visudo.c:178
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
+#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s versio %s\n"
-#: logsrvd/logsrvd_conf.c:393
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS ei ole tuettu"
-#: logsrvd/logsrvd_conf.c:405
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:471 logsrvd/logsrvd_conf.c:715
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: ei ole täydellinen polku"
# Ensimmäinen parametri on auth name
-#: logsrvd/logsrvd_conf.c:829
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d täsmäämätön ”[”: %s"
-#: logsrvd/logsrvd_conf.c:840
-#, fuzzy, c-format
+#: logsrvd/logsrvd_conf.c:781
+#, c-format
msgid "%s:%d invalid config section: %s"
-msgstr "virheellinen suodatinvalitsin: %s"
+msgstr "%s:%d: virheellinen asetusosio: %s"
-#: logsrvd/logsrvd_conf.c:848
-#, fuzzy, c-format
+#: logsrvd/logsrvd_conf.c:789
+#, c-format
msgid "%s:%d invalid configuration line: %s"
-msgstr "virheellinen ajoitustiedostorivi: %s"
+msgstr "%s:%d virheellinen asetusrivi: %s"
-#: logsrvd/logsrvd_conf.c:854
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
-msgstr ""
+msgstr "%s:%d odotettiin osion nimeä: %s"
-#: logsrvd/logsrvd_conf.c:868
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "virheellinen %s-arvo: %s"
-#: logsrvd/logsrvd_conf.c:876
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d tuntematon avain: %s"
-#: logsrvd/logsrvd_conf.c:1032
-#, fuzzy, c-format
+#: logsrvd/logsrvd_conf.c:1006
+#, c-format
msgid "unknown syslog facility %s"
-msgstr "tuntematon kirjautumisluokka: %s"
+msgstr "tuntematon syslog-lähde %s"
-#: logsrvd/logsrvd_conf.c:1036 logsrvd/logsrvd_conf.c:1040
-#: logsrvd/logsrvd_conf.c:1044
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "tuntematon syslog-prioriteetti %s"
-#: logsrvd/sendlog.c:126
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "%s - lähetä sudon siirräntäloki etäpalvelimelle"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "lähetä vain hyväksyntätapahtuma (ei siirräntää)"
-#: logsrvd/sendlog.c:163 plugins/sudoers/iolog_client.c:433
-#, fuzzy, c-format
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "varmennepakettitiedosto, jolla palvelimen varmenne tarkistetaan"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "TLS-kättelyn varmennetiedosto"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "kone, johon lokit lähetetään"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "jatkettavan I/O-lokin etätunnus"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "salainen avain"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "älä tarkista palvelinvarmennetta"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "koneeseen yhteyttä muodostettaessa käytettävä portti"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "käynnistä aiempi siirräntälokin siirto uudelleen"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "hylkää komento annetulla syyllä"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "testaa audit-palvelinta lähettämällä valittu siirräntäloki n kertaa rinnakkain"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
+#, c-format
msgid "unable to look up %s:%s: %s"
-msgstr "kohteen %s lataaminen epäonnistui: %s"
+msgstr "kohteen %s:%s nimenselvitys epäonnistui: %s"
-#: logsrvd/sendlog.c:186
-#, fuzzy
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
-msgstr "vaihtaminen root gid -tunnisteeksi epäonnistui"
+msgstr "palvelimen IP-osoitteen noutaminen ei onnistu"
-#: logsrvd/sendlog.c:240 plugins/sudoers/sudoreplay.c:852
-#, fuzzy, c-format
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
+#, c-format
msgid "unable to read %s/%s: %s"
-msgstr "kohteen %s lataaminen epäonnistui: %s"
+msgstr "tiedostosta %s/%s lukeminen epäonnistui: %s"
-#: logsrvd/sendlog.c:261 plugins/sudoers/iolog_client.c:684
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "asiakassanoma on liian suuri: %zu"
-#: logsrvd/sendlog.c:791
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: kirjoituspuskuri on jo käytössä"
-#: logsrvd/sendlog.c:843 plugins/sudoers/iolog.c:845
-#: plugins/sudoers/iolog.c:914
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "odottamaton siirräntätapahtuma %d"
-#: logsrvd/sendlog.c:889 logsrvd/sendlog.c:906 logsrvd/sendlog.c:940
-#: plugins/sudoers/iolog_client.c:1155 plugins/sudoers/iolog_client.c:1225
-#: plugins/sudoers/iolog_client.c:1273
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: odottamaton tila %d"
-#: logsrvd/sendlog.c:912 plugins/sudoers/iolog_client.c:1231
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "virheellinen ServerHello"
-#: logsrvd/sendlog.c:976 plugins/sudoers/iolog_client.c:1317
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "virhesanoma vastaanotettu palvelimelta: %s"
-#: logsrvd/sendlog.c:989 plugins/sudoers/iolog_client.c:1330
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "keskeytyssanoma vastaanotettu palvelimelta: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/iolog_client.c:1349
-#, fuzzy
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
-msgstr "audit-viestin lähettäminen epäonnistui"
+msgstr "ServerMessage-viestiä ei voi purkaa"
-#: logsrvd/sendlog.c:1048 plugins/sudoers/iolog_client.c:1382
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: odottamaton type_case-arvo %d"
-#: logsrvd/sendlog.c:1077
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "aikakatkaisu luettaessa palvelimelta"
-#: logsrvd/sendlog.c:1155
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "ennenaikainen tiedoston loppu"
-#: logsrvd/sendlog.c:1168 plugins/sudoers/iolog_client.c:1536
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "palvelinsanoma on liian suuri: %u"
-#: logsrvd/sendlog.c:1219
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "aikakatkaisu kirjoitettaessa palvelimelle"
-#: logsrvd/sendlog.c:1438 plugins/sudoers/iolog_client.c:297
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "TLS-kättelyn aikakatkaisu tapahtui"
-#: logsrvd/sendlog.c:1457 logsrvd/sendlog.c:1472
-#: plugins/sudoers/iolog_client.c:319 plugins/sudoers/iolog_client.c:335
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
+#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "tapahtuman asettaminen ei onnistu"
-#: logsrvd/sendlog.c:1482 logsrvd/sendlog.c:1486
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS-yhteys epäonnistui: %s"
-#: logsrvd/sendlog.c:1519
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Ssl-kontekstia ei voi alustaa: %s"
-#: logsrvd/sendlog.c:1524 plugins/sudoers/iolog_client.c:259
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Ssl-objektia ei voi varata: %s"
-#: logsrvd/sendlog.c:1529
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Sokettia ei voi liittää SSL-objektiin: %s"
-#: logsrvd/sendlog.c:1773
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "sekä aloituspiste että iolog-tunnus on annettava"
-#: logsrvd/sendlog.c:1777
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "uudelleenkäynnistyspistettä ei ehkä aseteta, kun I/O:ta ei lähetetä"
-#: logsrvd/sendlog.c:1852
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "poistui ennenaikaisesti tilalla %d"
-#: logsrvd/sendlog.c:1853
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "kulunut aika lähetetty palvelimelle [%lld, %ld]"
-#: logsrvd/sendlog.c:1855
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "toimituspiste vastaanotettu palvelimelta [%lld, %ld]"
-#: plugins/sudoers/alias.c:144
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Alias ”%s” on jo määritelty"
-
-#: plugins/sudoers/auth/aix_auth.c:198 plugins/sudoers/logging.c:784
-msgid "unable to fork"
-msgstr "haarauttaminen epäonnistui"
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
+msgid "unable to get time of day"
+msgstr "kellonajan noutaminen epäonnistui"
-#: plugins/sudoers/auth/aix_auth.c:278
+#: plugins/sudoers/auth/aix_auth.c:277
#, c-format
msgid "unable to change password for %s"
msgstr "%s-käyttäjän salasanan vaihtaminen epäonnistui"
@@ -864,11 +977,11 @@ msgstr "virheellinen todennustyyppi"
msgid "unable to initialize BSD authentication"
msgstr "BSD-todennuksen alustaminen epäonnistui"
-#: plugins/sudoers/auth/bsdauth.c:180
+#: plugins/sudoers/auth/bsdauth.c:179
msgid "your account has expired"
msgstr "tilisi on vanhentunut"
-#: plugins/sudoers/auth/bsdauth.c:182
+#: plugins/sudoers/auth/bsdauth.c:181
msgid "approval failed"
msgstr "hyväksyntä epäonnistui"
@@ -908,7 +1021,7 @@ msgstr "%s: todentamisnimen ’%s’ jäsentäminen epäonnistui: %s"
#: plugins/sudoers/auth/kerb5.c:169
#, c-format
msgid "%s: unable to resolve credential cache: %s"
-msgstr "%s: valtuustietovälimuistin ratkaiseminen epäonnistui: %s"
+msgstr "%s: valtuustietovälimuistin nimenselvitys epäonnistui: %s"
#: plugins/sudoers/auth/kerb5.c:216
#, c-format
@@ -945,38 +1058,38 @@ msgstr "%s: TGT-lipun todentaminen epäonnistui! Mahdollinen hyökkäys!: %s"
msgid "unable to initialize PAM: %s"
msgstr "PAMin alustaminen epäonnistui: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "PAM-todentamisvirhe: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "tilikelpuutushäiriö, onko tilisi lukittu?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Tili tai salasana on vanhentunut, nollaa salasanasi tai yritä uudelleen"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "vanhentuneen salasanan vaihtaminen epäonnistui: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Salasana vanhentunut, ota yhteyttä järjestelmän ylläpitäjään"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Tili vanhentunut tai PAM-asetuksista puuttuu ”account”-lohko sudo-komennolle, ota yhteyttä järjestelmän ylläpitäjään"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
-#, fuzzy, c-format
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
+#, c-format
msgid "PAM account management error: %s"
-msgstr "PAM-todentamisvirhe: %s"
+msgstr "PAM-tilin hallintavirhe: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:242
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "ei ole olemassa %s-tietokannassa"
@@ -995,25 +1108,25 @@ msgstr "Käyttäjätunniste lukittu SecurID-todennukselle"
#: plugins/sudoers/auth/securid5.c:111 plugins/sudoers/auth/securid5.c:162
msgid "invalid username length for SecurID"
-msgstr "virheellinen käyttäjänimipituus kohteelle SecurID"
+msgstr "virheellinen SecurID-käyttäjänimen pituus"
#: plugins/sudoers/auth/securid5.c:115 plugins/sudoers/auth/securid5.c:167
msgid "invalid Authentication Handle for SecurID"
-msgstr "virheellinen todentamiskäsittelijä kohteelle SecurID"
+msgstr "virheellinen SecurID-todennuskahva"
#: plugins/sudoers/auth/securid5.c:119
msgid "SecurID communication failed"
msgstr "SecurID-viestintä epäonnistui"
-#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:212
+#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210
msgid "unknown SecurID error"
msgstr "tuntematon SecurID-virhe"
#: plugins/sudoers/auth/securid5.c:157
msgid "invalid passcode length for SecurID"
-msgstr "virheellinen salasanakoodipituus kohteelle SecurID"
+msgstr "virheellinen SecurID-salasanan pituus"
-#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:124
+#: plugins/sudoers/auth/sia.c:69 plugins/sudoers/auth/sia.c:123
msgid "unable to initialize SIA session"
msgstr "SIA-istunnon alustaminen epäonnistui"
@@ -1037,7 +1150,7 @@ msgstr "Sudo-ohjelmaan ei ole käännetty todentamismenelmiä! Jos haluat kään
msgid "Unable to initialize authentication methods."
msgstr "Todentamismenetelmien alustaminen epäonnistui."
-#: plugins/sudoers/auth/sudo_auth.c:473
+#: plugins/sudoers/auth/sudo_auth.c:471
msgid "Authentication methods:"
msgstr "Todennusmenetelmät:"
@@ -1049,7 +1162,28 @@ msgstr "Audit-ehdon määrittely epäonnistui"
msgid "unable to commit audit record"
msgstr "commit-toiminnon suorittaminen audit-tietueelle epäonnistui"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "virhe luettaessa saarnatiedostoa: %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "ohitetaan saarnatiedosto %s: ei ole tavallinen tiedosto"
+
+# Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "kohteen %s avaaminen epäonnistui"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1069,127 +1203,139 @@ msgstr ""
" #3) Suuren voiman mukana tulee suuri vastuu.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:763 plugins/sudoers/sudoers.c:811
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "tuntematon uid-käyttäjätunniste: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/iolog.c:117
-#: plugins/sudoers/policy.c:1037 plugins/sudoers/sudoers.c:387
-#: plugins/sudoers/sudoers.c:388 plugins/sudoers/sudoers.c:1240
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:392
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "tuntematon käyttäjä: %s"
-#: plugins/sudoers/cvtsudoers.c:195
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Virhe: %s:%d:%d: %s ”%s” on kiertävä"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Varoitus: %s:%d:%d: %s ”%s” on kiertävä"
+
+# Toiseksi viimeinen %s on esim. ""Host_Alias" ja viimeinen sen nimi.
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Virhe: %s:%d:%d määrittelemätön %s ”%s” viitattuna"
+
+# Toiseksi viimeinen %s on esim. ""Host_Alias" ja viimeinen sen nimi.
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Varoitus: %s:%d:%d määrittelemätön %s ”%s” viitattuna mutta määrittelemättä"
+
+#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
-msgstr ""
+msgstr "järjestyksen kasvatus: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:211
+#: plugins/sudoers/cvtsudoers.c:210
#, c-format
msgid "starting order: %s: %s"
msgstr "aloitusjärjestys: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:221
+#: plugins/sudoers/cvtsudoers.c:220
#, c-format
msgid "order padding: %s: %s"
-msgstr ""
+msgstr "järjestyksen tasaus: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:231 plugins/sudoers/visudo.c:180
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s kielioppiversio %d\n"
-#: plugins/sudoers/cvtsudoers.c:248 plugins/sudoers/testsudoers.c:167
+#: plugins/sudoers/cvtsudoers.c:247 plugins/sudoers/testsudoers.c:167
#, c-format
msgid "unsupported input format %s"
msgstr "syötemuotoa %s ei tueta"
-#: plugins/sudoers/cvtsudoers.c:263
+#: plugins/sudoers/cvtsudoers.c:262
#, c-format
msgid "unsupported output format %s"
msgstr "tuotosmuotoa %s ei tueta"
-#: plugins/sudoers/cvtsudoers.c:315
+#: plugins/sudoers/cvtsudoers.c:314
#, c-format
msgid "%s: input and output files must be different"
msgstr "%s: syöte- ja tulostetiedostojen on oltava erilaiset"
-#: plugins/sudoers/cvtsudoers.c:331 plugins/sudoers/sudoers.c:181
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:248
-#: plugins/sudoers/visudo.c:604 plugins/sudoers/visudo.c:927
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "sudoers-oletusarvojen alustaminen epäonnistui"
-#: plugins/sudoers/cvtsudoers.c:417 plugins/sudoers/ldap_conf.c:431
+#: plugins/sudoers/cvtsudoers.c:416 plugins/sudoers/ldap_conf.c:431
#, c-format
msgid "%s: %s: %s: %s"
msgstr "%s: %s: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:476
+#: plugins/sudoers/cvtsudoers.c:475
#, c-format
msgid "%s: unknown key word: %s"
msgstr "%s: tuntematon avainsana: %s"
-#: plugins/sudoers/cvtsudoers.c:522
+#: plugins/sudoers/cvtsudoers.c:521
#, c-format
msgid "invalid defaults type: %s"
msgstr "virheellisten oletusarvojen tyyppi: %s"
-#: plugins/sudoers/cvtsudoers.c:545
+#: plugins/sudoers/cvtsudoers.c:544
#, c-format
msgid "invalid suppression type: %s"
msgstr "virheellinen vaiennustyyppi: %s"
-#: plugins/sudoers/cvtsudoers.c:585 plugins/sudoers/cvtsudoers.c:599
+#: plugins/sudoers/cvtsudoers.c:584 plugins/sudoers/cvtsudoers.c:598
#, c-format
msgid "invalid filter: %s"
msgstr "virheellinen suodatin: %s"
-# Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf
-#: plugins/sudoers/cvtsudoers.c:618 plugins/sudoers/cvtsudoers.c:635
-#: plugins/sudoers/cvtsudoers.c:1245 plugins/sudoers/cvtsudoers_json.c:861
-#: plugins/sudoers/cvtsudoers_ldif.c:680 plugins/sudoers/sudoers.c:986
-#: plugins/sudoers/sudoreplay.c:1436 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:923
-#, c-format
-msgid "unable to open %s"
-msgstr "kohteen %s avaaminen epäonnistui"
-
-#: plugins/sudoers/cvtsudoers.c:638 plugins/sudoers/visudo.c:932
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "tiedoston %s jäsentäminen epäonnistui, tuntematon virhe"
-#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/visudo.c:949
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "jäsentämisvirhe tiedostossa %s lähellä riviä %d\n"
-#: plugins/sudoers/cvtsudoers.c:649 plugins/sudoers/visudo.c:952
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "jäsentämisvirhe tiedostossa %s\n"
# Kirjoittamisen kohde voi olla timestamp file tai pathbuf
-#: plugins/sudoers/cvtsudoers.c:1292 plugins/sudoers/sudoreplay.c:1125
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "kohteeseen %s kirjoittaminen epäonnistui"
-#: plugins/sudoers/cvtsudoers.c:1315
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
"\n"
msgstr "%s - muunna sudoers-tiedostomuotojen välillä\n"
-#: plugins/sudoers/cvtsudoers.c:1317
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1210,683 +1356,736 @@ msgid ""
" -s, --suppress=sections suppress output of certain sections\n"
" -V, --version display version information and exit"
msgstr ""
+"\n"
+"Options:\n"
+" -b, --base=dn LDAP-kyselyiden DN-perusnimi\n"
+" -c, --config=asetustied asetustiedoston polku\n"
+" -d, --defaults=deftyypit muunna vain annettujen tyyppien Defaults-arvot\n"
+" -e, --expand-aliases lavenna aliakset muuntaessa\n"
+" -f, --output-format=muoto aseta tulostemuoto: JSON, LDIF tai sudoers\n"
+" -i, --input-format=muoto aseta syötemuoto: LDIF tai sudoers\n"
+" -I, --increment=määrä kutakin sudoOrderia kasvattava määrä\n"
+" -h, --help näytä ohjeviesti ja poistu\n"
+" -m, --match=suodatin muunna vain suodattimeen täsmäävät kohdat\n"
+" -M, --match-local täsmäyssuodatin käyttää passwd and group -tietokantoja\n"
+" -o, --output=tulostied kirjoita muunnetut sudoers-tiedot tulostiedostoon\n"
+" -O, --order-start=luku ensimmäisen sudoOrderin aloituspiste\n"
+" -p, --prune-matches karsi täsmäämättömät käyttäjät, ryhmät ja koneet\n"
+" -P, --padding=luku sudoOrder-kasvatuksen perustasaus\n"
+" -s, --suppress=osiot vaienna tiettyjen osioiden tuloste\n"
+" -V, --version näytä versiotiedot ja poistu"
#: plugins/sudoers/cvtsudoers_json.c:480 plugins/sudoers/cvtsudoers_json.c:514
-#: plugins/sudoers/cvtsudoers_json.c:702
+#: plugins/sudoers/cvtsudoers_json.c:713
#, c-format
msgid "unknown defaults entry \"%s\""
msgstr "tuntematon oletusrivi \"%s\""
-#: plugins/sudoers/cvtsudoers_json.c:640 plugins/sudoers/cvtsudoers_json.c:653
-#: plugins/sudoers/cvtsudoers_ldif.c:345 plugins/sudoers/cvtsudoers_ldif.c:356
-#: plugins/sudoers/ldap.c:502
+#: plugins/sudoers/cvtsudoers_json.c:651 plugins/sudoers/cvtsudoers_json.c:664
+#: plugins/sudoers/cvtsudoers_ldif.c:346 plugins/sudoers/cvtsudoers_ldif.c:357
+#: plugins/sudoers/ldap.c:503
msgid "unable to get GMT time"
msgstr "GMT-ajan noutaminen epäonnistui"
-#: plugins/sudoers/cvtsudoers_json.c:643 plugins/sudoers/cvtsudoers_json.c:656
-#: plugins/sudoers/cvtsudoers_ldif.c:348 plugins/sudoers/cvtsudoers_ldif.c:359
-#: plugins/sudoers/ldap.c:508
+#: plugins/sudoers/cvtsudoers_json.c:654 plugins/sudoers/cvtsudoers_json.c:667
+#: plugins/sudoers/cvtsudoers_ldif.c:349 plugins/sudoers/cvtsudoers_ldif.c:360
+#: plugins/sudoers/ldap.c:509
msgid "unable to format timestamp"
msgstr "aikaleiman muotoileminen epäonnistui"
-#: plugins/sudoers/cvtsudoers_ldif.c:632
+#: plugins/sudoers/cvtsudoers_ldif.c:640
#, c-format
msgid "too many sudoers entries, maximum %u"
msgstr "liian monta sudoers-merkintää, enimmäismäärä %u"
-#: plugins/sudoers/cvtsudoers_ldif.c:675
+#: plugins/sudoers/cvtsudoers_ldif.c:683
msgid "the SUDOERS_BASE environment variable is not set and the -b option was not specified."
msgstr "SUDOERS_BASE-ympäristömuuttujaa ei ole määritelty eikä -b-valitsinta annettu."
-#: plugins/sudoers/def_data.c:42
+#: plugins/sudoers/def_data.c:50
#, c-format
msgid "Syslog facility if syslog is being used for logging: %s"
msgstr "Syslog-apuneuvo, jos syslog-lokia käytetään kirjautumista varten: %s"
-#: plugins/sudoers/def_data.c:46
+#: plugins/sudoers/def_data.c:54
#, c-format
msgid "Syslog priority to use when user authenticates successfully: %s"
msgstr "Käytettävä syslog-prioriteetti, kun käyttäjä todennetaan onnistuneesti: %s"
-#: plugins/sudoers/def_data.c:50
+#: plugins/sudoers/def_data.c:58
#, c-format
msgid "Syslog priority to use when user authenticates unsuccessfully: %s"
msgstr "Käytettävä syslog-prioriteetti, kun käyttäjän todennus epäonnistui: %s"
-#: plugins/sudoers/def_data.c:54
+#: plugins/sudoers/def_data.c:62
msgid "Put OTP prompt on its own line"
msgstr "Laita OPT-kehote omalle rivilleen"
-#: plugins/sudoers/def_data.c:58
+#: plugins/sudoers/def_data.c:66
msgid "Ignore '.' in $PATH"
msgstr "Ohita ’.’ $PATHissa"
-#: plugins/sudoers/def_data.c:62
+#: plugins/sudoers/def_data.c:70
msgid "Always send mail when sudo is run"
msgstr "Lähetä aina sähköpostia, kun sudo suoritetaan"
-#: plugins/sudoers/def_data.c:66
+#: plugins/sudoers/def_data.c:74
msgid "Send mail if user authentication fails"
msgstr "Lähetä sähköpostia, jos käyttäjän todennus epäonnistuu"
-#: plugins/sudoers/def_data.c:70
+#: plugins/sudoers/def_data.c:78
msgid "Send mail if the user is not in sudoers"
msgstr "Lähetä sähköpostia, jos käyttäjä ei ole sudoers-määrittelyssä"
-#: plugins/sudoers/def_data.c:74
+#: plugins/sudoers/def_data.c:82
msgid "Send mail if the user is not in sudoers for this host"
msgstr "Lähetä sähköpostia, jos käyttäjä ei ole tällä tietokoneella sudoers-määrittelyssä"
-#: plugins/sudoers/def_data.c:78
+#: plugins/sudoers/def_data.c:86
msgid "Send mail if the user is not allowed to run a command"
msgstr "Lähetä sähköpostia, jos käyttäjän ei sallita suorittaa komentoa"
-#: plugins/sudoers/def_data.c:82
+#: plugins/sudoers/def_data.c:90
msgid "Send mail if the user tries to run a command"
msgstr "Lähetä sähköpostia, jos käyttäjä yrittää suorittaa komennon"
-#: plugins/sudoers/def_data.c:86
+#: plugins/sudoers/def_data.c:94
msgid "Use a separate timestamp for each user/tty combo"
msgstr "Käytä erillistä aikaleimaa jokaiselle käyttäjä/tty -yhdistelmälle"
-#: plugins/sudoers/def_data.c:90
+#: plugins/sudoers/def_data.c:98
msgid "Lecture user the first time they run sudo"
-msgstr "Saarnaa ensimmäistä kertaa sudo-ohjelmaa käyttävälle"
+msgstr "Saarnaa sudoa ensimmäistä kertaa käyttävälle"
-#: plugins/sudoers/def_data.c:94
+#: plugins/sudoers/def_data.c:102
#, c-format
msgid "File containing the sudo lecture: %s"
msgstr "Sudo-saarnan sisältävä tiedosto: %s"
-#: plugins/sudoers/def_data.c:98
+#: plugins/sudoers/def_data.c:106
msgid "Require users to authenticate by default"
msgstr "Vaadi käyttäjien todennus oletuksena"
-#: plugins/sudoers/def_data.c:102
+#: plugins/sudoers/def_data.c:110
msgid "Root may run sudo"
msgstr "Root voi suorittaa sudo-ohjelman"
-#: plugins/sudoers/def_data.c:106
+#: plugins/sudoers/def_data.c:114
msgid "Log the hostname in the (non-syslog) log file"
msgstr "Kirjaa tietokonenimi (ei-syslog)lokitiedostoon"
-#: plugins/sudoers/def_data.c:110
+#: plugins/sudoers/def_data.c:118
msgid "Log the year in the (non-syslog) log file"
msgstr "Kirjaa vuosi (ei-syslog)lokitiedostoon"
-#: plugins/sudoers/def_data.c:114
+#: plugins/sudoers/def_data.c:122
msgid "If sudo is invoked with no arguments, start a shell"
msgstr "Jos sudo-ohjelmaa kutsutaan ilman argumentteja, käynnistä käyttöjärjestelmäkuori"
-#: plugins/sudoers/def_data.c:118
+#: plugins/sudoers/def_data.c:126
msgid "Set $HOME to the target user when starting a shell with -s"
msgstr "Aseta $HOME-muuttujaksi kohdekäyttäjä kun käyttöjärjestelmäkuori käynnistetään valitsimella -s"
-#: plugins/sudoers/def_data.c:122
+#: plugins/sudoers/def_data.c:130
msgid "Always set $HOME to the target user's home directory"
msgstr "Aseta $HOME-muuttujaksi aina kohdekäyttäjän kotihakemisto"
-#: plugins/sudoers/def_data.c:126
+#: plugins/sudoers/def_data.c:134
msgid "Allow some information gathering to give useful error messages"
msgstr "Salli jotain tietojenkeräystä hyödyllisten virheilmoitusten tarjoamiseksi"
-#: plugins/sudoers/def_data.c:130
+#: plugins/sudoers/def_data.c:138
msgid "Require fully-qualified hostnames in the sudoers file"
msgstr "Vaadi täysin rakennettu tietokonenimi suoders-tiedostossa"
-#: plugins/sudoers/def_data.c:134
+#: plugins/sudoers/def_data.c:142
msgid "Insult the user when they enter an incorrect password"
msgstr "Solvaa käyttäjiä, kun he kirjoittavat väärän salasanan"
-#: plugins/sudoers/def_data.c:138
+#: plugins/sudoers/def_data.c:146
msgid "Only allow the user to run sudo if they have a tty"
msgstr "Salli käyttäjien suorittaa sudo-ohjelma vain jos heillä on tty"
-#: plugins/sudoers/def_data.c:142
+#: plugins/sudoers/def_data.c:150
msgid "Visudo will honor the EDITOR environment variable"
msgstr "Visudo noudattaa EDITOR-ympäristömuuttujaa"
-#: plugins/sudoers/def_data.c:146
+#: plugins/sudoers/def_data.c:154
msgid "Prompt for root's password, not the users's"
msgstr "Kysy root-käyttäjän salasana, ei käyttäjän"
-#: plugins/sudoers/def_data.c:150
+#: plugins/sudoers/def_data.c:158
msgid "Prompt for the runas_default user's password, not the users's"
msgstr "Kysy runas_default-käyttäjän salasana, ei käyttäjän"
-#: plugins/sudoers/def_data.c:154
+#: plugins/sudoers/def_data.c:162
msgid "Prompt for the target user's password, not the users's"
msgstr "Kysy kohdekäyttäjän salasana, ei käyttäjän"
-#: plugins/sudoers/def_data.c:158
+#: plugins/sudoers/def_data.c:166
msgid "Apply defaults in the target user's login class if there is one"
msgstr "Käytä oletuksia kohdekäyttäjän kirjautumisluokassa, jos siinä on yhtään"
-#: plugins/sudoers/def_data.c:162
+#: plugins/sudoers/def_data.c:170
msgid "Set the LOGNAME and USER environment variables"
msgstr "Aseta LOGNAME- ja USER-ympäristömuuttujat"
-#: plugins/sudoers/def_data.c:166
+#: plugins/sudoers/def_data.c:174
msgid "Only set the effective uid to the target user, not the real uid"
msgstr "Aseta vain voimassa oleva uid-käyttäjätunniste kohdekäyttäjälle, ei oikeaa uid-tunnistetta"
-#: plugins/sudoers/def_data.c:170
+#: plugins/sudoers/def_data.c:178
msgid "Don't initialize the group vector to that of the target user"
msgstr "Älä alusta ryhmävektoria kohdekäyttäjän vastaavaan arvoon"
-#: plugins/sudoers/def_data.c:174
+#: plugins/sudoers/def_data.c:182
#, c-format
msgid "Length at which to wrap log file lines (0 for no wrap): %u"
msgstr "Pituus, jossa pitkät lokitiedostorivit jaetaan seuraavalle riville (0 ei jaeta): %u"
-#: plugins/sudoers/def_data.c:178
+#: plugins/sudoers/def_data.c:186
#, c-format
msgid "Authentication timestamp timeout: %.1f minutes"
-msgstr "Todennusaikaleiman aikavalvonta: %.1f minuuttia"
+msgstr "Todennusaikaleiman aikakatkaisu: %.1f minuuttia"
-#: plugins/sudoers/def_data.c:182
+#: plugins/sudoers/def_data.c:190
#, c-format
msgid "Password prompt timeout: %.1f minutes"
-msgstr "Salasanakehotteen aikavalvonta: %.1f minuuttia"
+msgstr "Salasanakehotteen aikakatkaisu: %.1f minuuttia"
-#: plugins/sudoers/def_data.c:186
+#: plugins/sudoers/def_data.c:194
#, c-format
msgid "Number of tries to enter a password: %u"
msgstr "Salasanayritysten lukumäärä: %u"
-#: plugins/sudoers/def_data.c:190
+#: plugins/sudoers/def_data.c:198
#, c-format
msgid "Umask to use or 0777 to use user's: 0%o"
msgstr "Käytettävä umask-määrittely tai 0777 käytettäväksi käyttäjän umask-määrittelyksi: 0%o"
-#: plugins/sudoers/def_data.c:194
+#: plugins/sudoers/def_data.c:202
#, c-format
msgid "Path to log file: %s"
msgstr "Polku lokitiedostoon: %s"
-#: plugins/sudoers/def_data.c:198
+#: plugins/sudoers/def_data.c:206
#, c-format
msgid "Path to mail program: %s"
msgstr "Sähköpostiohjelman polku: %s"
-#: plugins/sudoers/def_data.c:202
+#: plugins/sudoers/def_data.c:210
#, c-format
msgid "Flags for mail program: %s"
msgstr "Sähköpostiohjelman liput: %s"
-#: plugins/sudoers/def_data.c:206
+#: plugins/sudoers/def_data.c:214
#, c-format
msgid "Address to send mail to: %s"
msgstr "Sähköpostin vastaanottajan osoite: %s"
-#: plugins/sudoers/def_data.c:210
+#: plugins/sudoers/def_data.c:218
#, c-format
msgid "Address to send mail from: %s"
msgstr "Sähköpostin lähettäjän osoite: %s"
-#: plugins/sudoers/def_data.c:214
+#: plugins/sudoers/def_data.c:222
#, c-format
msgid "Subject line for mail messages: %s"
msgstr "Sähköpostiviestien aihe-rivi: %s"
-#: plugins/sudoers/def_data.c:218
+#: plugins/sudoers/def_data.c:226
#, c-format
msgid "Incorrect password message: %s"
msgstr "Virheellinen salasanaviesti: %s"
-#: plugins/sudoers/def_data.c:222
+#: plugins/sudoers/def_data.c:230
#, c-format
msgid "Path to lecture status dir: %s"
-msgstr "Polku luentotilahakemistoon: %s"
+msgstr "Polku saarnatilan hakemistoon: %s"
-#: plugins/sudoers/def_data.c:226
+#: plugins/sudoers/def_data.c:234
#, c-format
msgid "Path to authentication timestamp dir: %s"
msgstr "Polku todennusaikaleimahakemistoon: %s"
-#: plugins/sudoers/def_data.c:230
+#: plugins/sudoers/def_data.c:238
#, c-format
msgid "Owner of the authentication timestamp dir: %s"
msgstr "Todennusaikaleimahakemiston omistaja: %s"
-#: plugins/sudoers/def_data.c:234
+#: plugins/sudoers/def_data.c:242
#, c-format
msgid "Users in this group are exempt from password and PATH requirements: %s"
msgstr "Käyttäjät tässä ryhmässä on vapautettu salasana- ja PATH-vaatimuksista: %s"
-#: plugins/sudoers/def_data.c:238
+#: plugins/sudoers/def_data.c:246
#, c-format
msgid "Default password prompt: %s"
msgstr "Oletussalasanakehote: %s"
-#: plugins/sudoers/def_data.c:242
+#: plugins/sudoers/def_data.c:250
msgid "If set, passprompt will override system prompt in all cases."
msgstr "Jos asetettu, salasanakehote korvaa järjestelmäkehotteen kaikissa tapauksissa."
# Tämä on tekemisessä runas_default -määrittelyn kanssa
-#: plugins/sudoers/def_data.c:246
+#: plugins/sudoers/def_data.c:254
#, c-format
msgid "Default user to run commands as: %s"
msgstr "Oletuskäyttäjä suorittaa komennot käyttäjänä: %s"
-#: plugins/sudoers/def_data.c:250
+#: plugins/sudoers/def_data.c:258
#, c-format
msgid "Value to override user's $PATH with: %s"
msgstr "Arvo, jolla korvataan käyttäjän $PATH-asetus: %s"
-#: plugins/sudoers/def_data.c:254
+#: plugins/sudoers/def_data.c:262
#, c-format
msgid "Path to the editor for use by visudo: %s"
msgstr "Visudo-editorin käyttämä polku: %s"
-#: plugins/sudoers/def_data.c:258
+#: plugins/sudoers/def_data.c:266
#, c-format
msgid "When to require a password for 'list' pseudocommand: %s"
msgstr "Kun vaaditaan salasana ’list’-näennäiskomennolle: %s"
-#: plugins/sudoers/def_data.c:262
+#: plugins/sudoers/def_data.c:270
#, c-format
msgid "When to require a password for 'verify' pseudocommand: %s"
msgstr "Kun vaaditaan salasana ’verify’-näennäiskomennolle: %s"
-#: plugins/sudoers/def_data.c:266
-msgid "Preload the dummy exec functions contained in the sudo_noexec library"
-msgstr "Esilataa vale-exec-funktiot, jotka sisältyvät sudo_noexec-kirjastoon"
+#: plugins/sudoers/def_data.c:274
+msgid "Preload the sudo_noexec library which replaces the exec functions"
+msgstr "Esilataa sudo_noexec-kirjasto, joka korvaa exec-funtiot"
-#: plugins/sudoers/def_data.c:270
+#: plugins/sudoers/def_data.c:278
msgid "If LDAP directory is up, do we ignore local sudoers file"
msgstr "Jos LDAP-hakemisto on ylhäällä, ohitammeko paikallisen sudoers-tiedoston"
-#: plugins/sudoers/def_data.c:274
+#: plugins/sudoers/def_data.c:282
#, c-format
msgid "File descriptors >= %d will be closed before executing a command"
msgstr "Tiedostokuvaajat >= %d suljetaan ennen komennon suoritusta"
-#: plugins/sudoers/def_data.c:278
+#: plugins/sudoers/def_data.c:286
msgid "If set, users may override the value of \"closefrom\" with the -C option"
msgstr "Jos asetettu, käyttäjä voi korvata ”closefrom”-arvon valitsimella -C"
-#: plugins/sudoers/def_data.c:282
+#: plugins/sudoers/def_data.c:290
msgid "Allow users to set arbitrary environment variables"
msgstr "Salli käyttäjien asettaa mielivaltaisia ympäristömuuttujia"
-#: plugins/sudoers/def_data.c:286
+#: plugins/sudoers/def_data.c:294
msgid "Reset the environment to a default set of variables"
msgstr "Nollaa ympäristö muuttujien oletusjoukoksi"
-#: plugins/sudoers/def_data.c:290
-msgid "Environment variables to check for sanity:"
-msgstr "Ympäristömuuttujat, joille tehdään järkevyystarkistus:"
+#: plugins/sudoers/def_data.c:298
+msgid "Environment variables to check for safety:"
+msgstr "Turvallisuustarkastettavat ympäristömuuttujat:"
-#: plugins/sudoers/def_data.c:294
+#: plugins/sudoers/def_data.c:302
msgid "Environment variables to remove:"
msgstr "Poistettavat ympäristömuuttujat:"
-#: plugins/sudoers/def_data.c:298
+#: plugins/sudoers/def_data.c:306
msgid "Environment variables to preserve:"
msgstr "Säilytettävät ympäristömuuttujat:"
-#: plugins/sudoers/def_data.c:302
+#: plugins/sudoers/def_data.c:310
#, c-format
msgid "SELinux role to use in the new security context: %s"
msgstr "Uudessa turva-asiayhteydessä käytettävä SELinux-rooli: %s"
-#: plugins/sudoers/def_data.c:306
+#: plugins/sudoers/def_data.c:314
#, c-format
msgid "SELinux type to use in the new security context: %s"
msgstr "Uudessa turva-asiayhteydessä käytettävä SELinux-tyyppi: %s"
-#: plugins/sudoers/def_data.c:310
+#: plugins/sudoers/def_data.c:318
#, c-format
msgid "Path to the sudo-specific environment file: %s"
msgstr "Polku sudo-kohtaiseen ympäristötiedostoon: %s"
-#: plugins/sudoers/def_data.c:314
+#: plugins/sudoers/def_data.c:322
#, c-format
msgid "Path to the restricted sudo-specific environment file: %s"
msgstr "Polku rajoitettuun sudo-kohtaiseen ympäristötiedostoon: %s"
-#: plugins/sudoers/def_data.c:318
+#: plugins/sudoers/def_data.c:326
#, c-format
msgid "Locale to use while parsing sudoers: %s"
msgstr "Locale-asetus, jota käytetään sudoers-jäsentämisessä: %s"
-#: plugins/sudoers/def_data.c:322
+#: plugins/sudoers/def_data.c:330
msgid "Allow sudo to prompt for a password even if it would be visible"
msgstr "Salli sudo-ohjelman kysyä salasana vieläpä jos se olisi näkyvä"
-#: plugins/sudoers/def_data.c:326
+#: plugins/sudoers/def_data.c:334
msgid "Provide visual feedback at the password prompt when there is user input"
msgstr "Tarjoa visuaalista palautetta salasanakehotteelta silloin kun on käyttäjäsyöte"
-#: plugins/sudoers/def_data.c:330
+#: plugins/sudoers/def_data.c:338
msgid "Use faster globbing that is less accurate but does not access the filesystem"
msgstr "Käyttää nopeampaa jokerimerkkien korvausta, joka on epätarkempi, mutta ei lue tiedostojärjestelmää"
-#: plugins/sudoers/def_data.c:334
+#: plugins/sudoers/def_data.c:342
msgid "The umask specified in sudoers will override the user's, even if it is more permissive"
msgstr "Sudoers umask korvaa käyttäjän umask-määrittelyn, vieläpä jos se on sallivampi"
-#: plugins/sudoers/def_data.c:338
+#: plugins/sudoers/def_data.c:346
msgid "Log user's input for the command being run"
msgstr "Kirjaa lokiin käyttäjän syöte suoritettavalle komennolle"
-#: plugins/sudoers/def_data.c:342
+#: plugins/sudoers/def_data.c:350
msgid "Log the output of the command being run"
msgstr "Kirjaa lokiin suoritettavan komennon tuloste"
-#: plugins/sudoers/def_data.c:346
+#: plugins/sudoers/def_data.c:354
msgid "Compress I/O logs using zlib"
msgstr "Tiivistä siirräntälokit käyttäen zlib-ohjelmaa"
-#: plugins/sudoers/def_data.c:350
+#: plugins/sudoers/def_data.c:358
msgid "Always run commands in a pseudo-tty"
msgstr "Suorita aina komennot näennäis-tty:ssä"
-#: plugins/sudoers/def_data.c:354
+#: plugins/sudoers/def_data.c:362
#, c-format
msgid "Plugin for non-Unix group support: %s"
msgstr "Lisäosa ei-Unix-ryhmätuelle: %s"
-#: plugins/sudoers/def_data.c:358
+#: plugins/sudoers/def_data.c:366
#, c-format
msgid "Directory in which to store input/output logs: %s"
msgstr "Hakemisto, johon tallennetaan syöte-/tulostelokit: %s"
-#: plugins/sudoers/def_data.c:362
+#: plugins/sudoers/def_data.c:370
#, c-format
msgid "File in which to store the input/output log: %s"
msgstr "Tiedosto, johon tallennetaan syöte-/tulosteloki: %s"
-#: plugins/sudoers/def_data.c:366
+#: plugins/sudoers/def_data.c:374
msgid "Add an entry to the utmp/utmpx file when allocating a pty"
msgstr "Lisää rivi utmp-/utmpx-tiedostoon, kun varataan pty"
-#: plugins/sudoers/def_data.c:370
+#: plugins/sudoers/def_data.c:378
msgid "Set the user in utmp to the runas user, not the invoking user"
msgstr "Aseta käyttäjäksi utmp-tiedostoon suorittava käyttäjä, ei kutsuva käyttäjä"
-#: plugins/sudoers/def_data.c:374
+#: plugins/sudoers/def_data.c:382
#, c-format
msgid "Set of permitted privileges: %s"
msgstr "Sallittujen käyttöoikeuksien joukko: %s"
-#: plugins/sudoers/def_data.c:378
+#: plugins/sudoers/def_data.c:386
#, c-format
msgid "Set of limit privileges: %s"
msgstr "Rajoitettujen käyttöoikeuksien joukko: %s"
-#: plugins/sudoers/def_data.c:382
+#: plugins/sudoers/def_data.c:390
msgid "Run commands on a pty in the background"
msgstr "Suorita komentoja pty:llä taustalla"
-#: plugins/sudoers/def_data.c:386
+#: plugins/sudoers/def_data.c:394
#, c-format
msgid "PAM service name to use: %s"
msgstr "Käytettävä PAM-palvelunimi: %s"
-#: plugins/sudoers/def_data.c:390
+#: plugins/sudoers/def_data.c:398
#, c-format
msgid "PAM service name to use for login shells: %s"
msgstr "Kirjautumiskomentotulkeille käytettävä PAM-palvelunimi: %s"
-#: plugins/sudoers/def_data.c:394
+#: plugins/sudoers/def_data.c:402
msgid "Attempt to establish PAM credentials for the target user"
msgstr "Yritys perustaa PAM-valtuustiedot kohdekäyttäjälle"
-#: plugins/sudoers/def_data.c:398
+#: plugins/sudoers/def_data.c:406
msgid "Create a new PAM session for the command to run in"
msgstr "Luo uusi PAM-istunto suoritettavalle komennolle"
-#: plugins/sudoers/def_data.c:402
+#: plugins/sudoers/def_data.c:410
msgid "Perform PAM account validation management"
-msgstr ""
+msgstr "Suorita PAM-tilinvahvistuksen hallintaa"
-#: plugins/sudoers/def_data.c:406
-#, fuzzy, c-format
+#: plugins/sudoers/def_data.c:414
+#, c-format
msgid "Maximum I/O log sequence number: %s"
-msgstr "Suurin siirräntälokin sarjanumero: %u"
+msgstr "Suurin siirräntälokin sarjanumero: %s"
-#: plugins/sudoers/def_data.c:410
+#: plugins/sudoers/def_data.c:418
msgid "Enable sudoers netgroup support"
msgstr "Ota käyttöön sudoers-verkkoryhmätuki"
-#: plugins/sudoers/def_data.c:414
+#: plugins/sudoers/def_data.c:422
msgid "Check parent directories for writability when editing files with sudoedit"
msgstr "Tarkista yläpuolella olevan hakemistojen kirjoituskelpoisuus kun tiedostoja muokataan sudoedit-ohjelmalla"
-#: plugins/sudoers/def_data.c:418
+#: plugins/sudoers/def_data.c:426
msgid "Follow symbolic links when editing files with sudoedit"
msgstr "Seuraa symbolisia linkejä kun tiedostoja muokataan sudoedit-ohjelmalla"
-#: plugins/sudoers/def_data.c:422
+#: plugins/sudoers/def_data.c:430
msgid "Query the group plugin for unknown system groups"
msgstr "Kysy ryhmälisäosaa tuntemattomille järjestelmäryhmille"
-#: plugins/sudoers/def_data.c:426
+#: plugins/sudoers/def_data.c:434
msgid "Match netgroups based on the entire tuple: user, host and domain"
msgstr "Täsmäävät verkkoryhmät perustuen koko monikolle: käyttäjä, tietokone ja verkkotunnus"
-#: plugins/sudoers/def_data.c:430
+#: plugins/sudoers/def_data.c:438
msgid "Allow commands to be run even if sudo cannot write to the audit log"
msgstr "Salli komentojen suorittaminen silloinkin kun sudo ei kykene kirjoittamaan valvontatarkastuslokiin"
-#: plugins/sudoers/def_data.c:434
+#: plugins/sudoers/def_data.c:442
msgid "Allow commands to be run even if sudo cannot write to the I/O log"
msgstr "Salli komentojen suorittaminen silloinkin kun sudo ei kykene kirjoittamaan siirtolokiin"
-#: plugins/sudoers/def_data.c:438
+#: plugins/sudoers/def_data.c:446
msgid "Allow commands to be run even if sudo cannot write to the log file"
msgstr "Salli komentojen suorittaminen silloinkin kun sudo ei kykene kirjoittamaan lokitiedostoon"
-#: plugins/sudoers/def_data.c:442
+#: plugins/sudoers/def_data.c:450
msgid "Resolve groups in sudoers and match on the group ID, not the name"
msgstr "Ratkaise sudoers-ryhmät ja täsmäytä ryhmätunnisteeseen, ei nimeen"
-#: plugins/sudoers/def_data.c:446
+#: plugins/sudoers/def_data.c:454
#, c-format
msgid "Log entries larger than this value will be split into multiple syslog messages: %u"
msgstr "Lokirivit, jotka ovat pitempiä kuin tämä arvo, jaetaan useisiin syslog-viesteihin: %u"
-#: plugins/sudoers/def_data.c:450
+#: plugins/sudoers/def_data.c:458
#, c-format
msgid "User that will own the I/O log files: %s"
msgstr "Käyttäjä, joka omistaa siirräntälokitiedostot: %s"
-#: plugins/sudoers/def_data.c:454
+#: plugins/sudoers/def_data.c:462
#, c-format
msgid "Group that will own the I/O log files: %s"
msgstr "Ryhmä, joka omistaa siirräntälokitiedostot: %s"
-#: plugins/sudoers/def_data.c:458
+#: plugins/sudoers/def_data.c:466
#, c-format
msgid "File mode to use for the I/O log files: 0%o"
msgstr "Tiedostotila käytettäväksi siirräntälokitiedostoissa: 0%o"
-#: plugins/sudoers/def_data.c:462
+#: plugins/sudoers/def_data.c:470
#, c-format
msgid "Execute commands by file descriptor instead of by path: %s"
msgstr "Suorita komentoja tiedostokuvaan avulla eikä polun avulla: %s"
-#: plugins/sudoers/def_data.c:466
+#: plugins/sudoers/def_data.c:474
msgid "Ignore unknown Defaults entries in sudoers instead of producing a warning"
msgstr "Ohita tuntemattomat Defaults-rivit sudoers-tiedostossa sen sijaan että tuottaisit varoituksia"
-#: plugins/sudoers/def_data.c:470
+#: plugins/sudoers/def_data.c:478
#, c-format
msgid "Time in seconds after which the command will be terminated: %u"
msgstr "Sekuntimäärä, jossa komento päätetään: %u"
-#: plugins/sudoers/def_data.c:474
+#: plugins/sudoers/def_data.c:482
msgid "Allow the user to specify a timeout on the command line"
-msgstr "Salli käyttäjän määritellä aikavalvonta komentorivillä"
+msgstr "Salli käyttäjän määritellä aikakatkaisu komentorivillä"
-#: plugins/sudoers/def_data.c:478
+#: plugins/sudoers/def_data.c:486
msgid "Flush I/O log data to disk immediately instead of buffering it"
msgstr "Tyhjennä siirräntälokitiedot levylle välittömästi sen sijaan että puskuroisit ne"
-#: plugins/sudoers/def_data.c:482
+#: plugins/sudoers/def_data.c:490
msgid "Include the process ID when logging via syslog"
msgstr "Sisällytä prosessitunniste, kun kirjataan syslog-tiedostoon"
-#: plugins/sudoers/def_data.c:486
+#: plugins/sudoers/def_data.c:494
#, c-format
msgid "Type of authentication timestamp record: %s"
msgstr "Todennusaikaleimatietueen tyyppi: %s"
-#: plugins/sudoers/def_data.c:490
+#: plugins/sudoers/def_data.c:498
#, c-format
msgid "Authentication failure message: %s"
-msgstr "todentamisen virheviesti: %s"
+msgstr "Todentamisen virheviesti: %s"
-#: plugins/sudoers/def_data.c:494
+#: plugins/sudoers/def_data.c:502
msgid "Ignore case when matching user names"
msgstr "Älä huomioi kirjainkokoa käyttäjänimien täsmäyksessä"
-#: plugins/sudoers/def_data.c:498
+#: plugins/sudoers/def_data.c:506
msgid "Ignore case when matching group names"
msgstr "Älä huomioi kirjainkokoa ryhmänimien täsmäyksessä"
-#: plugins/sudoers/def_data.c:502
+#: plugins/sudoers/def_data.c:510
msgid "Log when a command is allowed by sudoers"
msgstr "Kirjaa lokiin, kun sudoers sallii komennon"
-#: plugins/sudoers/def_data.c:506
+#: plugins/sudoers/def_data.c:514
msgid "Log when a command is denied by sudoers"
msgstr "Kirjaa lokiin, kun sudoers kieltää komennon"
-#: plugins/sudoers/def_data.c:510
+#: plugins/sudoers/def_data.c:518
msgid "Sudo log server(s) to connect to with optional port"
-msgstr ""
+msgstr "Sudo-lokipalvelimet, joihin yhdistetään valinnaiseen porttiin"
-#: plugins/sudoers/def_data.c:514
+#: plugins/sudoers/def_data.c:522
#, c-format
msgid "Sudo log server timeout in seconds: %u"
-msgstr ""
+msgstr "Sudo-lokipalvelimen aikakatkaisu sekunteina: %u"
-#: plugins/sudoers/def_data.c:518
+#: plugins/sudoers/def_data.c:526
msgid "Enable SO_KEEPALIVE socket option on the socket connected to the logserver"
msgstr "Ota SO_KEEPALIVE-valinta käyttöön lokipalvelimeen yhdistetylle soketille"
-#: plugins/sudoers/def_data.c:522
-#, fuzzy, c-format
+#: plugins/sudoers/def_data.c:530
+#, c-format
msgid "Path to the audit server's CA bundle file: %s"
-msgstr "Polku sudo-kohtaiseen ympäristötiedostoon: %s"
+msgstr "Valvontapalvelimen CA-pakettitiedoston polku: %s"
-#: plugins/sudoers/def_data.c:526
+#: plugins/sudoers/def_data.c:534
#, c-format
msgid "Path to the sudoers certificate file: %s"
msgstr "Sudoers-varmennetiedoston polku: %s"
-#: plugins/sudoers/def_data.c:530
+#: plugins/sudoers/def_data.c:538
#, c-format
msgid "Path to the sudoers private key file: %s"
msgstr "Sudoersin yksityisen avaintiedoston polku: %s"
-#: plugins/sudoers/def_data.c:534
-#, fuzzy
+#: plugins/sudoers/def_data.c:542
msgid "Verify that the log server's certificate is valid"
-msgstr "Sudoers-varmennetiedoston polku: %s"
+msgstr "Varmista, että lokipalvelimen varmenne on kelvollinen"
-#: plugins/sudoers/def_data.c:538
+#: plugins/sudoers/def_data.c:546
msgid "Allow the use of unknown runas user and/or group ID"
-msgstr ""
+msgstr "Salli tuntemattoman runas-käyttäjän ja/tai ryhmä-id:n käyttö"
-#: plugins/sudoers/def_data.c:542
+#: plugins/sudoers/def_data.c:550
msgid "Only permit running commands as a user with a valid shell"
msgstr "Salli komentojen suorittaminen vain käyttäjänä, jolla on kelvollinen kuori"
-#: plugins/sudoers/def_data.c:546
+#: plugins/sudoers/def_data.c:554
msgid "Set the pam remote user to the user running sudo"
-msgstr ""
+msgstr "Aseta pam-etäkäyttäjä sudoa käyttäväksi käyttäjäksi"
-#: plugins/sudoers/def_data.c:550
+#: plugins/sudoers/def_data.c:558
msgid "Set the pam remote host to the local host name"
-msgstr ""
+msgstr "Aseta pam-etäkone paikalliseksi konenimeksi"
-#: plugins/sudoers/defaults.c:183
+#: plugins/sudoers/def_data.c:562
#, c-format
-msgid "%s:%d unknown defaults entry \"%s\""
-msgstr "%s:%d tuntematon oletusrivi ”%s”"
+msgid "Working directory to change to before executing the command: %s"
+msgstr "Työhakemisto, johon vaihdetaan ennen komennon suorittamista: %s"
-#: plugins/sudoers/defaults.c:186
+#: plugins/sudoers/def_data.c:566
+#, c-format
+msgid "Root directory to change to before executing the command: %s"
+msgstr "Juurihakemisto, johon vaihdetaan ennen komennon suorittamista: %s"
+
+#: plugins/sudoers/def_data.c:570
+#, c-format
+msgid "The format of logs to produce: %s"
+msgstr "Lokien muoto: %s"
+
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Ota SELinux RBAC -tuki käyttöön"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Polku tiedostoon, joka luodaan sudon ensimmäisellä suorituskerralla: %s"
+
+#: plugins/sudoers/defaults.c:185
+#, c-format
+msgid "%s:%d:%d: unknown defaults entry \"%s\""
+msgstr "%s:%d:%d: tuntematon oletusrivi ”%s”"
+
+#: plugins/sudoers/defaults.c:188
#, c-format
msgid "%s: unknown defaults entry \"%s\""
msgstr "%s: tuntematon oletusrivi ”%s”"
# parametrinä on variable
-#: plugins/sudoers/defaults.c:229
+#: plugins/sudoers/defaults.c:234
#, c-format
-msgid "%s:%d no value specified for \"%s\""
-msgstr "%s:%d arvoa ei ole määritelty muuttujalle ”%s”"
+msgid "%s:%d:%d: no value specified for \"%s\""
+msgstr "%s:%d:%d: arvoa ei ole määritelty muuttujalle ”%s”"
# parametrinä on variable
-#: plugins/sudoers/defaults.c:232
+#: plugins/sudoers/defaults.c:237
#, c-format
msgid "%s: no value specified for \"%s\""
msgstr "%s: arvoa ei ole määritelty muuttujalle ”%s”"
-# Parametri on muuttuja
-#: plugins/sudoers/defaults.c:252
+#: plugins/sudoers/defaults.c:275
#, c-format
-msgid "%s:%d values for \"%s\" must start with a '/'"
-msgstr "%s:%d muuttujan ”%s” arvojen on alettava merkillä ’/’"
+msgid "%s:%d:%d: option \"%s\" does not take a value"
+msgstr "%s:%d:%d: valitsin ”%s” ei ota arvoa"
-# Parametri on muuttuja
-#: plugins/sudoers/defaults.c:255
-#, c-format
-msgid "%s: values for \"%s\" must start with a '/'"
-msgstr "%s: muuttujan ”%s” arvojen on alettava merkillä ’/’"
-
-#: plugins/sudoers/defaults.c:277
-#, c-format
-msgid "%s:%d option \"%s\" does not take a value"
-msgstr "%s:%d valitsin ”%s” ei ota arvoa"
-
-#: plugins/sudoers/defaults.c:280
+#: plugins/sudoers/defaults.c:278
#, c-format
msgid "%s: option \"%s\" does not take a value"
msgstr "%s: valitsin ”%s” ei ota arvoa"
-#: plugins/sudoers/defaults.c:305
+#: plugins/sudoers/defaults.c:303
#, c-format
-msgid "%s:%d invalid Defaults type 0x%x for option \"%s\""
-msgstr "%s:%d virheellinen Defaults-tyyppi 0x%x valitsimelle ”%s”"
+msgid "%s:%d:%d: invalid Defaults type 0x%x for option \"%s\""
+msgstr "%s:%d:%d: virheellinen Defaults-tyyppi 0x%x valitsimelle ”%s”"
-#: plugins/sudoers/defaults.c:308
+#: plugins/sudoers/defaults.c:306
#, c-format
msgid "%s: invalid Defaults type 0x%x for option \"%s\""
msgstr "%s: virheellinen Defaults-tyyppi 0x%x valitsimelle ”%s”"
-#: plugins/sudoers/defaults.c:318
+#: plugins/sudoers/defaults.c:316
#, c-format
-msgid "%s:%d value \"%s\" is invalid for option \"%s\""
-msgstr "%s:%d arvo ”%s” on virheellinen valitsimelle ”%s”"
+msgid "%s:%d:%d: value \"%s\" is invalid for option \"%s\""
+msgstr "%s:%d:%d: arvo ”%s” on virheellinen valitsimelle ”%s”"
-#: plugins/sudoers/defaults.c:321
+#: plugins/sudoers/defaults.c:319
#, c-format
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: arvo ”%s” on virheellinen valitsimelle ”%s”"
-#: plugins/sudoers/env.c:404
+# Parametri on muuttuja
+#: plugins/sudoers/defaults.c:1040
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s:%d:%d: ”%s”-muuttujan arvojen on alettava merkillä ’/’, ’~’ tai ’*’"
+
+# Parametri on muuttuja
+#: plugins/sudoers/defaults.c:1044
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
+msgstr "%s: ”%s”-muuttujan arvojen on alettava merkillä ’/’, ’~’ tai ’*’"
+
+# Parametri on muuttuja
+#: plugins/sudoers/defaults.c:1055
+#, c-format
+msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
+msgstr "%s:%d:%d: ”%s”-muuttujan arvojen on alettava merkillä ’/’"
+
+# Parametri on muuttuja
+#: plugins/sudoers/defaults.c:1059
+#, c-format
+msgid "%s: values for \"%s\" must start with a '/'"
+msgstr "%s: ”%s”-muuttujan arvon on alettava merkillä ’/’"
+
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: rikkoutunut envp, pituus ei täsmää"
-#: plugins/sudoers/env.c:1131
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "ympäristön rakentaminen uudelleen epäonnistui"
-#: plugins/sudoers/env.c:1205
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
-msgstr "seuraavia ympäristömuuttujia ei ole lupa asettaa: %s"
+msgstr "sinun ei ole sallittua asettaa seuraavia ympäristömuuttujia: %s"
-#: plugins/sudoers/file.c:104
+#: plugins/sudoers/file.c:107
#, c-format
msgid "parse error in %s near line %d"
msgstr "jäsentämisvirhe tiedostossa %s lähellä riviä %d"
-#: plugins/sudoers/file.c:107
+#: plugins/sudoers/file.c:110
#, c-format
msgid "parse error in %s"
msgstr "jäsentämisvirhe tiedostossa %s"
@@ -1894,7 +2093,7 @@ msgstr "jäsentämisvirhe tiedostossa %s"
#: plugins/sudoers/filedigest.c:49
#, c-format
msgid "unsupported digest type %d for %s"
-msgstr "tukematon tiivistetyyppi %d kohteelle %s"
+msgstr "ei-tuettu tiivistetyyppi %d tiedostolle %s"
#: plugins/sudoers/filedigest.c:78
#, c-format
@@ -1911,7 +2110,7 @@ msgstr "%s-omistajan on oltava uid %d"
msgid "%s must only be writable by owner"
msgstr "%s on vain omistajan kirjoitettava"
-#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:571
+#: plugins/sudoers/group_plugin.c:96 plugins/sudoers/sssd.c:569
#, c-format
msgid "unable to load %s: %s"
msgstr "kohteen %s lataaminen epäonnistui: %s"
@@ -1932,7 +2131,6 @@ msgstr "%s: yhteensopimaton ryhmälisäosan major-versio %d, odotettiin %d"
msgid "unable to parse IP address \"%s\""
msgstr "verkko-osoitteen ”%s” jäsentäminen epäonnistui"
-# Parametri on sudoers file
#: plugins/sudoers/interfaces.c:85 plugins/sudoers/interfaces.c:102
#, c-format
msgid "unable to parse netmask \"%s\""
@@ -1942,123 +2140,79 @@ msgstr "verkkopeitteen ”%s” jäsentäminen epäonnistui"
msgid "Local IP address and netmask pairs:\n"
msgstr "Paikallinen verkko-osoite ja verkkopeiteparit:\n"
-#: plugins/sudoers/iolog.c:142 plugins/sudoers/sudoers.c:393
-#: plugins/sudoers/sudoers.c:394 plugins/sudoers/sudoers.c:1274
-#: plugins/sudoers/testsudoers.c:416
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "tuntematon ryhmä: %s"
-#: plugins/sudoers/iolog.c:517 plugins/sudoers/iolog.c:807
-#: plugins/sudoers/iolog.c:959 plugins/sudoers/iolog.c:966
-#: plugins/sudoers/iolog.c:1087 plugins/sudoers/iolog.c:1094
-#: plugins/sudoers/iolog.c:1193 plugins/sudoers/iolog.c:1200
+#: plugins/sudoers/iolog.c:635
+msgid "unable to update sequence file"
+msgstr "sekvenssitiedostoa ei voi päivittää"
+
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "siirtolokitiedostoon: %s kirjoittaminen epäonnistui"
-#: plugins/sudoers/iolog.c:566
-msgid "unable to update sequence file"
-msgstr "sekvenssitiedostoa ei voi päivittää"
-
# Parametrina on pathbuf
-#: plugins/sudoers/iolog.c:605
-#, fuzzy, c-format
+#: plugins/sudoers/iolog.c:674
+#, c-format
msgid "unable to create %s/%s"
-msgstr "hakemistopolun %s luominen epäonnistui"
-
-#: plugins/sudoers/iolog.c:631
-msgid "unable to connect to log server"
-msgstr "yhteyden muodostaminen lokipalvelimeen ei onnistu"
+msgstr "tiedostoa %s/%s ei voida luoda"
-#: plugins/sudoers/iolog.c:851
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: sisäinen virhe, tapahtuman %d siirräntälokitiedosto ei ole avoin"
-#: plugins/sudoers/iolog.c:944 plugins/sudoers/iolog.c:1072
-#: plugins/sudoers/iolog.c:1177 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:492
-#: plugins/sudoers/visudo.c:498
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "kellon lukeminen epäonnistui"
-#: plugins/sudoers/iolog.c:1169 plugins/sudoers/iolog_client.c:977
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: sisäinen virhe, virheellinen signaali %d"
-#: plugins/sudoers/iolog_client.c:113 plugins/sudoers/iolog_client.c:392
-#: plugins/sudoers/iolog_client.c:1200 plugins/sudoers/iolog_client.c:1775
-msgid "error in event loop"
-msgstr "virhe tapahtumasilmukassa"
-
-#: plugins/sudoers/iolog_client.c:194
-#, c-format
-msgid "Creation of new SSL_CTX object failed: %s"
-msgstr "Uuden SSL_CTX-objektin luominen epäonnistui: %s"
-
-#: plugins/sudoers/iolog_client.c:346 plugins/sudoers/iolog_client.c:351
-#, c-format
-msgid "TLS connection to %s:%s failed: %s"
-msgstr ""
-
-#: plugins/sudoers/iolog_client.c:496
-msgid "TLS initialization was unsuccessful"
-msgstr "TLS-alustus epäonnistui"
-
-#: plugins/sudoers/iolog_client.c:505
-msgid "TLS handshake was unsuccessful"
-msgstr "TLS-kättely epäonnistui"
-
-#: plugins/sudoers/iolog_client.c:767 plugins/sudoers/iolog_client.c:959
-msgid "unable to get time of day"
-msgstr "kellonajan noutaminen epäonnistui"
-
-#: plugins/sudoers/iolog_client.c:986
-#, c-format
-msgid "%s: internal error, invalid exit status %d"
-msgstr "%s: sisäinen virhe, virheellinen lopetustila %d"
-
-#: plugins/sudoers/iolog_client.c:1523
-msgid "lost connection to log server"
-msgstr "yhteys lokipalvelimeen katkesi"
-
-#: plugins/sudoers/iolog_client.c:1600
-msgid "missing write buffer"
-msgstr "puuttuva kirjoituspuskuri"
-
-#: plugins/sudoers/ldap.c:176 plugins/sudoers/ldap_conf.c:291
+#: plugins/sudoers/ldap.c:177 plugins/sudoers/ldap_conf.c:291
msgid "starttls not supported when using ldaps"
msgstr "starttls ei ole tuettu ldaps-käytössä"
-#: plugins/sudoers/ldap.c:247
+#: plugins/sudoers/ldap.c:248
#, c-format
msgid "unable to initialize SSL cert and key db: %s"
msgstr "SSL-varmenne- ja avaintietokannan alustaminen epäonnistui: %s"
-#: plugins/sudoers/ldap.c:250
+#: plugins/sudoers/ldap.c:251
#, c-format
msgid "you must set TLS_CERT in %s to use SSL"
msgstr "kohteessa %s TLS_CERT on asetettava käyttämään SSL:ää"
-#: plugins/sudoers/ldap.c:1658
+#: plugins/sudoers/ldap.c:1660
#, c-format
msgid "unable to initialize LDAP: %s"
msgstr "kohteen LDAP alustaminen epäonnistui: %s"
-#: plugins/sudoers/ldap.c:1694
+#: plugins/sudoers/ldap.c:1697
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls määritelty, mutta LDAP-kirjastot ei tue funktiota ldap_start_tls_s() tai funktiota ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1831 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "virheellinen sudoOrder-attribuutti: %s"
#: plugins/sudoers/ldap_conf.c:200
-msgid "sudo_ldap_conf_add_ports: port too large"
-msgstr "sudo_ldap_conf_add_ports: portti on liian suuri"
+#, c-format
+msgid "%s: port too large"
+msgstr "%s: portti liian suuri"
# URL on verkko-osoite, loogisesti URI on verkkoresurssi(osoite)
#: plugins/sudoers/ldap_conf.c:260
@@ -2070,124 +2224,147 @@ msgstr "tukematon LDAP-verkkoresurssin tunnustyyppi: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "ldap:n ja ldap-verkkoresurssitunnuksien sekoittaminen epäonnistui"
-#: plugins/sudoers/ldap_util.c:548 plugins/sudoers/ldap_util.c:550
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "kahdentunut sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "sudoOptionia ei voi muuntaa: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "audit-järjestelmän avaaminen epäonnistui"
-#: plugins/sudoers/linux_audit.c:100
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "audit-viestin lähettäminen epäonnistui"
-#: plugins/sudoers/logging.c:167
+#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
+msgid "error in event loop"
+msgstr "virhe tapahtumasilmukassa"
+
+#: plugins/sudoers/log_client.c:193
#, c-format
-msgid "unable to open log file: %s"
-msgstr "lokitiedoston avaaminen epäonnistui: %s"
+msgid "Creation of new SSL_CTX object failed: %s"
+msgstr "Uuden SSL_CTX-objektin luominen epäonnistui: %s"
-#: plugins/sudoers/logging.c:175
+#: plugins/sudoers/log_client.c:345 plugins/sudoers/log_client.c:350
#, c-format
-msgid "unable to lock log file: %s"
-msgstr "lokitiedoston lukitseminen epäonnistui: %s"
+msgid "TLS connection to %s:%s failed: %s"
+msgstr "TLS-yhteys kohteeseen %s:%s epäonnistui: %s"
-#: plugins/sudoers/logging.c:208
+#: plugins/sudoers/log_client.c:519
+msgid "TLS initialization was unsuccessful"
+msgstr "TLS-alustus epäonnistui"
+
+#: plugins/sudoers/log_client.c:528
+msgid "TLS handshake was unsuccessful"
+msgstr "TLS-kättely epäonnistui"
+
+#: plugins/sudoers/log_client.c:1208
#, c-format
-msgid "unable to write log file: %s"
-msgstr "lokitiedostoon: %s kirjoittaminen epäonnistui"
+msgid "%s: internal error, invalid exit status %d"
+msgstr "%s: sisäinen virhe, virheellinen lopetustila %d"
-#: plugins/sudoers/logging.c:241
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
+msgid "lost connection to log server"
+msgstr "yhteys lokipalvelimeen katkesi"
+
+#: plugins/sudoers/log_client.c:1825
+msgid "missing write buffer"
+msgstr "puuttuva kirjoituspuskuri"
+
+#: plugins/sudoers/log_client.c:1972
+msgid "unable to connect to log server"
+msgstr "yhteyden muodostaminen lokipalvelimeen ei onnistu"
+
+#: plugins/sudoers/logging.c:244
msgid "user NOT in sudoers"
msgstr "käyttäjä EI ole sudoers-tiedostossa"
-#: plugins/sudoers/logging.c:243
+#: plugins/sudoers/logging.c:246
msgid "user NOT authorized on host"
msgstr "käyttäjä ei ole varmennettu tietokoneella"
-#: plugins/sudoers/logging.c:245
+#: plugins/sudoers/logging.c:248
msgid "command not allowed"
msgstr "komento ei ole sallittu"
-#: plugins/sudoers/logging.c:288
+#: plugins/sudoers/logging.c:269
#, c-format
msgid "%s is not in the sudoers file. This incident will be reported.\n"
msgstr "%s ei ole sudoers-tiedostossa. Tästä tehdään ilmoitus.\n"
-#: plugins/sudoers/logging.c:291
+#: plugins/sudoers/logging.c:272
#, c-format
msgid "%s is not allowed to run sudo on %s. This incident will be reported.\n"
msgstr "%s ei saa suorittaa sudoa %s-koneella. Tästä tehdään ilmoitus.\n"
-#: plugins/sudoers/logging.c:295
+#: plugins/sudoers/logging.c:276
#, c-format
msgid "Sorry, user %s may not run sudo on %s.\n"
msgstr "Käyttäjä %s ei saa suorittaa sudoa %s-koneella.\n"
-#: plugins/sudoers/logging.c:298
+#: plugins/sudoers/logging.c:279
#, c-format
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Käyttäjä %s ei saa suorittaa komentoa ”%s%s%s” käyttäjänä %s%s%s koneella %s.\n"
-#: plugins/sudoers/logging.c:335 plugins/sudoers/sudoers.c:512
-#: plugins/sudoers/sudoers.c:514 plugins/sudoers/sudoers.c:516
-#: plugins/sudoers/sudoers.c:518 plugins/sudoers/sudoers.c:665
-#: plugins/sudoers/sudoers.c:667
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: komentoa ei löytynyt"
-#: plugins/sudoers/logging.c:337 plugins/sudoers/sudoers.c:508
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
"Use \"sudo ./%s\" if this is the \"%s\" you wish to run."
msgstr ""
-"ohitetaan komento ”%s”, joka löytyi kohteesta ’.’\n"
-"Käytä ”sudo ./%s”, jos tämä on ”%s”-komento, joka halutaan suorittaa."
-
-#: plugins/sudoers/logging.c:354
-msgid "authentication failure"
-msgstr "todentamishäiriö"
-
-#: plugins/sudoers/logging.c:380
-msgid "a password is required"
-msgstr "vaaditaan salasana"
+"ohitetaan ”.”-hakemistosta löytynyt ”%s”\n"
+"Käytä komentoa ”sudo ./%s”, jos juuri tämä ”%s” halutaan suoritettavan."
-#: plugins/sudoers/logging.c:450
+#: plugins/sudoers/logging.c:337
#, c-format
msgid "%u incorrect password attempt"
msgid_plural "%u incorrect password attempts"
msgstr[0] "%u väärä salasanayritys"
msgstr[1] "%u väärää salasanayritystä"
-#: plugins/sudoers/logging.c:714
-#, c-format
-msgid "unable to dup stdin: %m"
-msgstr "funktion dup kutsuminen vakiosyötteellä epäonnistui: %m"
+#: plugins/sudoers/logging.c:393
+msgid "authentication failure"
+msgstr "todentamishäiriö"
-#: plugins/sudoers/logging.c:751
-#, c-format
-msgid "unable to execute %s: %m"
-msgstr "käskyn %s suorittaminen epäonnistui: %m"
+#: plugins/sudoers/logging.c:433 plugins/sudoers/logging.c:453
+msgid "a password is required"
+msgstr "vaaditaan salasana"
-#: plugins/sudoers/logging.c:792 plugins/sudoers/logging.c:848
+#: plugins/sudoers/logging.c:739
#, c-format
-msgid "unable to fork: %m"
-msgstr "fork-funktion kutsuminen epäonnistui: %m"
+msgid "unable to open log file: %s"
+msgstr "lokitiedoston avaaminen epäonnistui: %s"
-#: plugins/sudoers/logging.c:838
+#: plugins/sudoers/logging.c:772
#, c-format
-msgid "unable to open pipe: %m"
-msgstr "putken avaaminen epäonnistui: %m"
+msgid "unable to write log file: %s"
+msgstr "lokitiedostoon: %s kirjoittaminen epäonnistui"
-#: plugins/sudoers/match_digest.c:116
+#: plugins/sudoers/match_digest.c:129
#, c-format
msgid "digest for %s (%s) is not in %s form"
-msgstr "tiiviste kohteelle %s (%s) ei ole %s-muodossa"
+msgstr "tiedoston %s tiiviste (%s) ei ole %s-muodossa"
-#: plugins/sudoers/parse.c:442
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2196,8 +2373,7 @@ msgstr ""
"\n"
"LDAP-rooli: %s\n"
-#: plugins/sudoers/parse.c:445
-#, c-format
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2205,99 +2381,111 @@ msgstr ""
"\n"
"Sudoers-rivi:\n"
-#: plugins/sudoers/parse.c:447
-#, c-format
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " SuoritaKäyttäjänä: "
-#: plugins/sudoers/parse.c:462
-#, c-format
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " SuoritaRyhmänä: "
-#: plugins/sudoers/parse.c:472
-#, c-format
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Valitsimet: "
-#: plugins/sudoers/parse.c:522
-#, c-format
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Komennot:\n"
-#: plugins/sudoers/parse.c:713
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
-msgstr "Täsmäävät Defaults-rivit kohteelle %s kohteella %s:\n"
+msgstr "Täsmäävät Defaults-rivit käyttäjälle %s koneella %s:\n"
-#: plugins/sudoers/parse.c:731
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
-msgstr "Runas- ja Command-kohtaiset oletukset kohteelle %s:\n"
+msgstr "Runas- ja Command-kohtaiset oletukset käyttäjälle %s:\n"
-#: plugins/sudoers/parse.c:749
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
-msgstr "Käyttäjä %s voi suorittaa seuraavat komennot kohteella %s:\n"
+msgstr "Käyttäjä %s voi suorittaa seuraavat komennot koneella %s:\n"
-#: plugins/sudoers/parse.c:764
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Käyttäjä %s ei saa suorittaa komentoa sudo tietokoneella %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "jätetään huomiotta epätäydellinen sudoRole: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "virheellinen LDIF-määrite: %s"
-#: plugins/sudoers/policy.c:77 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
-msgstr ""
+msgstr "virheellinen sudo-edustaohjelman asettama %.*s"
-#: plugins/sudoers/policy.c:281 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "verkko-osoiteluettelon jäsentäminen epäonnistui"
-#: plugins/sudoers/policy.c:426
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "sudo-edustaohjelma ei määritellyt käyttäjänimeä"
-#: plugins/sudoers/policy.c:430
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "sudo-edustaohjelma ei määritellyt käyttäjä-ID:tä"
-#: plugins/sudoers/policy.c:434
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "sudo-edustaohjelma ei määritellyt ryhmä-ID:tä"
-#: plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "sudo-edustaohjelma ei määritellyt konenimeä"
+#: plugins/sudoers/policy.c:660
+#, c-format
+msgid "invalid working directory: %s"
+msgstr "virheellinen työhakemisto: %s"
+
+#: plugins/sudoers/policy.c:828
+#, c-format
+msgid "invalid chroot directory: %s"
+msgstr "virheellinen chroot-hakemisto: %s"
+
# Parametri on path, mutta saattaa sisältää suoritettavan ohjelman
-#: plugins/sudoers/policy.c:896 plugins/sudoers/visudo.c:230
-#: plugins/sudoers/visudo.c:861
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "kohteen %s suorittaminen epäonnistui"
-#: plugins/sudoers/policy.c:1060
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: virheelliset tilaliput sudo-edustaohjelmalta: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Sudoers-menettelytapalisäosaversio %s\n"
-#: plugins/sudoers/policy.c:1062
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Sudoers-tiedostokielioppiversio %d\n"
-#: plugins/sudoers/policy.c:1066
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2306,100 +2494,101 @@ msgstr ""
"\n"
"Sudoers-polku: %s\n"
-#: plugins/sudoers/policy.c:1069
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch-polku: %s\n"
-#: plugins/sudoers/policy.c:1071
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf-polku: %s\n"
-#: plugins/sudoers/policy.c:1072
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret-polku: %s\n"
-#: plugins/sudoers/policy.c:1105
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
-msgstr "kytkentätyypin %d (version %d.%d) rekisteröiminen epäonnistui"
+msgstr "%d-tyyppisen kytkennän (versio %d.%d) rekisteröiminen epäonnistui"
+
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "%d-tyyppisen kytkennän (versio %d.%d) rekisteröinnin poisto epäonnistui"
-#: plugins/sudoers/pwutil.c:214 plugins/sudoers/pwutil.c:232
-#, fuzzy, c-format
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
+#, c-format
msgid "unable to cache uid %u"
-msgstr "käyttäjän uid %u laittaminen välimuistiin epäonnistui, muistia ei riittävästi"
+msgstr "käyttäjä-id:n %u välimuistittaminen epäonnistui"
-#: plugins/sudoers/pwutil.c:226
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
-msgstr "käyttäjän uid %u laittaminen välimuistiin epäonnistui, käyttäjä on jo siellä"
+msgstr "käyttäjä-id:n %u välimuistittaminen epäonnistui, on jo olemassa"
# Parametrina on pathbuf
-#: plugins/sudoers/pwutil.c:286 plugins/sudoers/pwutil.c:304
-#: plugins/sudoers/pwutil.c:367 plugins/sudoers/pwutil.c:412
-#, fuzzy, c-format
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
+#, c-format
msgid "unable to cache user %s"
-msgstr "hakemistopolun %s luominen epäonnistui"
+msgstr "%s-käyttäjän välimuistittaminen epäonnistui"
-#: plugins/sudoers/pwutil.c:299
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
-msgstr "käyttäjän %s laittaminen välimuistiin epäonnistui, käyttäjä on jo siellä"
+msgstr "%s-käyttäjän välimuistittaminen epäonnistui, on jo olemassa"
-#: plugins/sudoers/pwutil.c:531 plugins/sudoers/pwutil.c:549
-#, fuzzy, c-format
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
+#, c-format
msgid "unable to cache gid %u"
-msgstr "ryhmän gid %u laittaminen välimuistiin epäonnistui, muistia ei riittävästi"
+msgstr "ryhmä-id:n %u välimuistittaminen epäonnistui"
-#: plugins/sudoers/pwutil.c:543
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
-msgstr "ryhmän gid %u laittaminen välimuistiin epäonnistui, ryhmä on jo siellä"
+msgstr "ryhmä-id:n %u välimuistittaminen epäonnistui, on jo olemassa"
-# Parametri on sudoers file
-#: plugins/sudoers/pwutil.c:596 plugins/sudoers/pwutil.c:614
-#: plugins/sudoers/pwutil.c:662 plugins/sudoers/pwutil.c:704
-#, fuzzy, c-format
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
+#, c-format
msgid "unable to cache group %s"
-msgstr "ryhmien jäsentäminen tiedostossa %s epäonnistui"
+msgstr "%s-ryhmän välimuistittaminen epäonnistui"
-#: plugins/sudoers/pwutil.c:609
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
-msgstr "ryhmän %s laittaminen välimuistiin epäonnistui, ryhmä on jo siellä"
+msgstr "%s-ryhmän välimuistittaminen epäonnistui, on jo olemassa"
-#: plugins/sudoers/pwutil.c:831 plugins/sudoers/pwutil.c:883
-#: plugins/sudoers/pwutil.c:933 plugins/sudoers/pwutil.c:986
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
-msgstr "ryhmäluettelon laittaminen välimuistiin tiedostossa %s epäonnistui, ryhmäluettelo on jo siellä"
+msgstr "%s-käyttäjän ryhmäluettelon välimuistittaminen epäonnistui, on jo olemassa"
-# Parametri on sudoers file
-#: plugins/sudoers/pwutil.c:837 plugins/sudoers/pwutil.c:888
-#: plugins/sudoers/pwutil.c:939 plugins/sudoers/pwutil.c:991
-#, fuzzy, c-format
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
+#, c-format
msgid "unable to cache group list for %s"
-msgstr "ryhmien jäsentäminen tiedostossa %s epäonnistui"
+msgstr "%s-käyttäjän ryhmäluettelon välimuistittaminen epäonnistui"
-# Parametri on sudoers file
-#: plugins/sudoers/pwutil.c:877
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
-msgstr "ryhmien jäsentäminen tiedostossa %s epäonnistui"
+msgstr "%s-käyttäjän ryhmien jäsentäminen epäonnistui"
-# Parametri on sudoers file
-#: plugins/sudoers/pwutil.c:980
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
-msgstr "ryhmätunnisteiden jäsentäminen tiedostolle %s epäonnistui"
+msgstr "%s-käyttäjän ryhmä-id:iden jäsentäminen epäonnistui"
#: plugins/sudoers/set_perms.c:114 plugins/sudoers/set_perms.c:441
#: plugins/sudoers/set_perms.c:844 plugins/sudoers/set_perms.c:1150
#: plugins/sudoers/set_perms.c:1444
msgid "perm stack overflow"
-msgstr "käyttöoikeuspinoylivuoto"
+msgstr "käyttöoikeuspinon ylivuoto"
#: plugins/sudoers/set_perms.c:122 plugins/sudoers/set_perms.c:372
#: plugins/sudoers/set_perms.c:449 plugins/sudoers/set_perms.c:711
@@ -2407,7 +2596,7 @@ msgstr "käyttöoikeuspinoylivuoto"
#: plugins/sudoers/set_perms.c:1158 plugins/sudoers/set_perms.c:1377
#: plugins/sudoers/set_perms.c:1452 plugins/sudoers/set_perms.c:1542
msgid "perm stack underflow"
-msgstr "käyttöoikeuspinovajaus"
+msgstr "käyttöoikeuspinon alivuoto"
#: plugins/sudoers/set_perms.c:181 plugins/sudoers/set_perms.c:495
#: plugins/sudoers/set_perms.c:1211 plugins/sudoers/set_perms.c:1485
@@ -2454,241 +2643,265 @@ msgstr "typistetty audit-polku user_cmnd: %s"
msgid "truncated audit path argv[0]: %s"
msgstr "typistetty audit-polku argv[0]: %s"
-#: plugins/sudoers/sssd.c:573
+#: plugins/sudoers/sssd.c:572
msgid "unable to initialize SSS source. Is SSSD installed on your machine?"
msgstr "lähteen SSS alustaminen epäonnistui. Onko SSSD asennettu tietokoneeseesi?"
# parametrina on path
-#: plugins/sudoers/sssd.c:581 plugins/sudoers/sssd.c:590
-#: plugins/sudoers/sssd.c:599 plugins/sudoers/sssd.c:608
-#: plugins/sudoers/sssd.c:617
+#: plugins/sudoers/sssd.c:580 plugins/sudoers/sssd.c:589
+#: plugins/sudoers/sssd.c:598 plugins/sudoers/sssd.c:607
+#: plugins/sudoers/sssd.c:616
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "symbolin ”%s” löytäminen polusta %s epäonnistui"
-#: plugins/sudoers/sudoers.c:217 plugins/sudoers/sudoers.c:943
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "oletusrivien pulma"
-#: plugins/sudoers/sudoers.c:221
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "ei löytynyt kelvollisia sudoers-lähteitä, poistutaan"
-#: plugins/sudoers/sudoers.c:297
+#: plugins/sudoers/sudoers.c:291
+#, c-format
+msgid "user not allowed to change root directory to %s"
+msgstr "käyttäjällä ei ole lupaa vaihtaa juurihakemistoksi %s"
+
+#: plugins/sudoers/sudoers.c:293
+#, c-format
+msgid "you are not permitted to use the -R option with %s"
+msgstr "sinulla ei ole lupaa käyttää valitsinta -R komennolle %s"
+
+#: plugins/sudoers/sudoers.c:318
+#, c-format
+msgid "user not allowed to change directory to %s"
+msgstr "käyttäjällä ei ole lupaa vaihtaa hakemistoksi %s"
+
+#: plugins/sudoers/sudoers.c:319
+#, c-format
+msgid "you are not permitted to use the -D option with %s"
+msgstr "sinulla ei ole lupaa käyttää valitsinta -D komennolle %s"
+
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "komentoa ei annettu"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers määrittelee, että root ei saa suorittaa sudo-komentoa"
-#: plugins/sudoers/sudoers.c:357
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
-msgstr ""
+msgstr "käyttäjällä ei ole lupaa syrjäyttää closefrom-rajaa"
-#: plugins/sudoers/sudoers.c:358
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
-msgstr "ei käyttöoikeuksia valitsimelle -C"
+msgstr "sinulla ei ole lupaa käyttää valitsinta -C"
-#: plugins/sudoers/sudoers.c:420
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "aikaleimaomistaja (%s): Tuntematon käyttäjä"
-#: plugins/sudoers/sudoers.c:435
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "ei tty:tä"
-#: plugins/sudoers/sudoers.c:436
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "sudo-komennon suorittamiseksi on oltava tty"
-#: plugins/sudoers/sudoers.c:442 plugins/sudoers/sudoers.c:444
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "virheellinen kuori käyttäjälle %s: %s"
-#: plugins/sudoers/sudoers.c:507
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "komento nykyisessä hakemistossa"
-#: plugins/sudoers/sudoers.c:525
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "käyttäjä ei saa asettaa komennon aikakatkaisua"
-#: plugins/sudoers/sudoers.c:526
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
-msgstr "komennon aikavalvonnan asettaminen ei ole sallittua"
+msgstr "komennon aikakatkaisun asettaminen ei ole sallittua sinulle"
-#: plugins/sudoers/sudoers.c:534
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "käyttäjä ei saa säilyttää ympäristöä"
-#: plugins/sudoers/sudoers.c:535
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
-msgstr "ympäristöä ei ole lupa säilyttää"
+msgstr "sinun ei ole sallittua säilöä ympäristöä"
-#: plugins/sudoers/sudoers.c:878
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "komento on liian pitkä"
-#: plugins/sudoers/sudoers.c:936
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoeditiä ei tarvitse ajaa sudon kautta"
# Parametrinä on sudoers-tiedosto tai pathbuf
-#: plugins/sudoers/sudoers.c:990 plugins/sudoers/sudoreplay.c:1548
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "kohteen %s lukeminen epäonnistui"
-#: plugins/sudoers/sudoers.c:1015 plugins/sudoers/visudo.c:431
-#: plugins/sudoers/visudo.c:727
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "funktion stat %s kutsuminen epäonnistui"
-#: plugins/sudoers/sudoers.c:1019 plugins/sudoers/visudo.c:1037
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s ei ole tavallinen tiedosto"
-#: plugins/sudoers/sudoers.c:1023 plugins/sudoers/timestamp.c:252 toke.l:1060
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s on uid %u -käyttäjän omistama, pitäisi olla %u"
-#: plugins/sudoers/sudoers.c:1027 toke.l:1065
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s on yleiskirjoitettava"
-#: plugins/sudoers/sudoers.c:1031 toke.l:1068
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s on gid %u -ryhmän omistama, pitäisi olla %u"
-#: plugins/sudoers/sudoers.c:1064
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "vain root-käyttäjä voi käyttää valitsinta ”-c %s”"
-#: plugins/sudoers/sudoers.c:1083
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "tuntematon kirjautumisluokka: %s"
-#: plugins/sudoers/sudoers.c:1168 plugins/sudoers/sudoers.c:1183
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
-msgstr "tietokoneen %s ratkaiseminen epäonnistui"
+msgstr "konenimen %s selvitys epäonnistui"
-#: plugins/sudoers/sudoreplay.c:258
+#: plugins/sudoers/sudoreplay.c:257
#, c-format
msgid "invalid filter option: %s"
msgstr "virheellinen suodatinvalitsin: %s"
-#: plugins/sudoers/sudoreplay.c:274
+#: plugins/sudoers/sudoreplay.c:273
#, c-format
msgid "invalid max wait: %s"
msgstr "virheellinen enimmäisodotusaika: %s"
-#: plugins/sudoers/sudoreplay.c:297
+#: plugins/sudoers/sudoreplay.c:296
#, c-format
msgid "invalid speed factor: %s"
msgstr "virheellinen nopeustekijä: %s"
-#: plugins/sudoers/sudoreplay.c:333
+#: plugins/sudoers/sudoreplay.c:332
#, c-format
msgid "%s/%.2s/%.2s/%.2s: %s"
msgstr "%s/%.2s/%.2s/%.2s: %s"
-#: plugins/sudoers/sudoreplay.c:338
+#: plugins/sudoers/sudoreplay.c:337
#, c-format
msgid "%s/timing: %s"
msgstr "%s/ajoitus: %s"
-#: plugins/sudoers/sudoreplay.c:342
+#: plugins/sudoers/sudoreplay.c:341
#, c-format
msgid "%s/%s: %s"
msgstr "%s/%s: %s"
-#: plugins/sudoers/sudoreplay.c:366
+#: plugins/sudoers/sudoreplay.c:365
#, c-format
msgid "Replaying sudo session: %s"
msgstr "Toistetaan sudo-istunto: %s"
-#: plugins/sudoers/sudoreplay.c:628
+#: plugins/sudoers/sudoreplay.c:627
msgid "unable to set tty to raw mode"
msgstr "tty:n asettaminen raakatilaan epäonnistui"
-#: plugins/sudoers/sudoreplay.c:679
+#: plugins/sudoers/sudoreplay.c:678
msgid "Warning: your terminal is too small to properly replay the log.\n"
msgstr "Varoitus: pääteikkunasi on liian pieni tämän lokin toistamiseksi oikein.\n"
-#: plugins/sudoers/sudoreplay.c:680
+#: plugins/sudoers/sudoreplay.c:679
#, c-format
msgid "Log geometry is %d x %d, your terminal's geometry is %d x %d."
msgstr "Lokigeometria on %d x %d, pääteikkunasi geometria on %d x %d."
-#: plugins/sudoers/sudoreplay.c:708
+#: plugins/sudoers/sudoreplay.c:707
msgid "Replay finished, press any key to restore the terminal."
msgstr "Toistaminen päättyi, palaa pääteikkunaan painamalla mitä tahansa näppäintä."
-#: plugins/sudoers/sudoreplay.c:1198 plugins/sudoers/sudoreplay.c:1228
+#: plugins/sudoers/sudoreplay.c:1197 plugins/sudoers/sudoreplay.c:1227
#, c-format
msgid "ambiguous expression \"%s\""
-msgstr "monimerkityksellinen lauseke ”%s”"
+msgstr "moniselitteinen lauseke \"%s\""
-#: plugins/sudoers/sudoreplay.c:1250
+#: plugins/sudoers/sudoreplay.c:1249
msgid "unmatched ')' in expression"
msgstr "täsmäämätön ’)’ lausekkeessa"
-#: plugins/sudoers/sudoreplay.c:1254
+#: plugins/sudoers/sudoreplay.c:1253
#, c-format
msgid "unknown search term \"%s\""
msgstr "tuntematon hakutermi ”%s”"
-#: plugins/sudoers/sudoreplay.c:1269
+#: plugins/sudoers/sudoreplay.c:1268
#, c-format
msgid "%s requires an argument"
msgstr "%s vaatii argumentin"
-#: plugins/sudoers/sudoreplay.c:1272 plugins/sudoers/sudoreplay.c:1524
+#: plugins/sudoers/sudoreplay.c:1271 plugins/sudoers/sudoreplay.c:1523
#, c-format
msgid "invalid regular expression: %s"
msgstr "virheellinen säännöllinen lauseke: %s"
-#: plugins/sudoers/sudoreplay.c:1277
+#: plugins/sudoers/sudoreplay.c:1276
#, c-format
msgid "could not parse date \"%s\""
msgstr "päivämäärän ”%s” jäsentäminen epäonnistui"
-#: plugins/sudoers/sudoreplay.c:1286
+#: plugins/sudoers/sudoreplay.c:1285
msgid "unmatched '(' in expression"
msgstr "täsmäämätön ’(’ lausekkeessa"
-#: plugins/sudoers/sudoreplay.c:1288
+#: plugins/sudoers/sudoreplay.c:1287
msgid "illegal trailing \"or\""
msgstr "virheellinen jäljessä oleva ”or”"
-#: plugins/sudoers/sudoreplay.c:1290
+#: plugins/sudoers/sudoreplay.c:1289
msgid "illegal trailing \"!\""
msgstr "virheellinen jäljessä oleva ”!”"
-#: plugins/sudoers/sudoreplay.c:1348
+#: plugins/sudoers/sudoreplay.c:1347
#, c-format
msgid "unknown search type %d"
msgstr "tuntematon hakutyyppi %d"
-#: plugins/sudoers/sudoreplay.c:1615
+#: plugins/sudoers/sudoreplay.c:1614
#, c-format
msgid "usage: %s [-hnRS] [-d dir] [-m num] [-s num] ID\n"
msgstr "käyttö: %s [-hnRS] [-d hakemisto] [-m numero] [-s numero] tunniste\n"
-#: plugins/sudoers/sudoreplay.c:1618
+#: plugins/sudoers/sudoreplay.c:1617
#, c-format
msgid "usage: %s [-h] [-d dir] -l [search expression]\n"
msgstr "käyttö: %s [-h] [-d hakemisto] -l [hakulauseke]\n"
-#: plugins/sudoers/sudoreplay.c:1627
+#: plugins/sudoers/sudoreplay.c:1626
#, c-format
msgid ""
"%s - replay sudo session logs\n"
@@ -2697,7 +2910,7 @@ msgstr ""
"%s - toista sudo-istuntolokit\n"
"\n"
-#: plugins/sudoers/sudoreplay.c:1629
+#: plugins/sudoers/sudoreplay.c:1628
msgid ""
"\n"
"Options:\n"
@@ -2726,11 +2939,11 @@ msgstr ""
" -s, --speed=luku nopeuta tai hidasta tulostusta\n"
" -V, --version näytä versiotiedot ja poistu"
-#: plugins/sudoers/testsudoers.c:354
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\ttietokone täsmäämätön"
-#: plugins/sudoers/testsudoers.c:357
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2738,7 +2951,7 @@ msgstr ""
"\n"
"Komento sallittu"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2746,7 +2959,7 @@ msgstr ""
"\n"
"Komento kielletty"
-#: plugins/sudoers/testsudoers.c:358
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2759,121 +2972,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s on ryhmäkirjoitettava"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "aikaleimatiedoston typistäminen %lld-tavun kokoiseksi epäonnistui"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "ohitetaan aikaleima tulevaisuudesta"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "aikaleima liian kaukana tulevaisuudessa: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "aikaleimatiedoston %s lukitseminen epäonnistui"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
-msgstr "luentotilapolku on liian pitkä: %s/%s"
+msgstr "saarnatilan polku on liian pitkä: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoeditiä ei tule käynnistää polun kanssa"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "valitsin -x poistetaan jossakin tulevassa versiossa"
-#: plugins/sudoers/visudo.c:227
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "harkitse cvtsudoers-apuohjelman käyttöä"
-#: plugins/sudoers/visudo.c:278 plugins/sudoers/visudo.c:660
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "muokkaa %s painamalla enter-painiketta: "
-#: plugins/sudoers/visudo.c:339
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "määritelty editori (%s) ei ole olemassa"
-#: plugins/sudoers/visudo.c:341
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "editoria ei löytynyt (editoripolku = %s)"
-#: plugins/sudoers/visudo.c:451 plugins/sudoers/visudo.c:459
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "kirjoitusvirhe"
-#: plugins/sudoers/visudo.c:505
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
-msgstr "funktion stat kutsuminen tilapäiselle tiedostolle (%s) epäonnistui, %s ennallaan"
+msgstr "tilapäistiedoston (%s) tilan lukeminen epäonnistui, %s ennallaan"
-#: plugins/sudoers/visudo.c:512
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "nollapituinen tilapäinen tiedosto (%s), %s ennallaan"
-#: plugins/sudoers/visudo.c:518
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "editori (%s) epäonnistui, %s ennallaan"
-#: plugins/sudoers/visudo.c:540
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s ennallaan"
-#: plugins/sudoers/visudo.c:599
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "tilapäisen tiedoston (%s) avaaminen uudelleen epäonnistui, %s ennallaan."
-#: plugins/sudoers/visudo.c:611
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "tilapäisen tiedoston (%s) jäsentäminen epäonnistui, tuntematon virhe"
-#: plugins/sudoers/visudo.c:649
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "sisäinen virhe, kohteen %s löytäminen luettelosta epäonnistui!"
-#: plugins/sudoers/visudo.c:729 plugins/sudoers/visudo.c:738
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "kohteen %s (uid, gid) asettaminen arvoihin (%u, %u) epäonnistui"
-#: plugins/sudoers/visudo.c:761
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s ja %s eivät ole samassa tiedostojärjestelmässä, käytetään komentoa mv uudelleennimeämiseen"
-#: plugins/sudoers/visudo.c:775
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "komento epäonnistui: ’%s %s %s’, %s ennallaan"
-#: plugins/sudoers/visudo.c:785
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "virhe nimettäessä %s uudelleen, %s ennallaan"
-#: plugins/sudoers/visudo.c:806
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Mitä nyt? "
-#: plugins/sudoers/visudo.c:820
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2886,67 +3099,47 @@ msgstr ""
" (Q) poistu ja tallenna muutokset sudoers-tiedostoon (VAARA!)\n"
# Parametri on path, mutta saattaa sisältää suoritettavan ohjelman
-#: plugins/sudoers/visudo.c:866
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "kohteen %s suorittaminen epäonnistui"
-#: plugins/sudoers/visudo.c:896
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: väärä omistaja (uid, gid), pitäisi olla (%u, %u)\n"
-#: plugins/sudoers/visudo.c:903
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: väärät käyttöoikeudet, pitäisi olla tila 0%o\n"
-#: plugins/sudoers/visudo.c:960 plugins/sudoers/visudo.c:967
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: jäsentäminen valmis\n"
-#: plugins/sudoers/visudo.c:986
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s varattu, yritä myöhemmin uudelleen"
# Avaamisen kohde voi olla timestamp file, sudoers file tai pathbuf
-#: plugins/sudoers/visudo.c:989
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "kohteen %s lukitseminen epäonnistui"
-#: plugins/sudoers/visudo.c:990
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Muokataanko silti? [y/N]"
-#: plugins/sudoers/visudo.c:1083
-#, c-format
-msgid "Error: %s:%d cycle in %s \"%s\""
-msgstr "Virhe: %s:%d jakso kohteessa %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1084
-#, c-format
-msgid "Warning: %s:%d cycle in %s \"%s\""
-msgstr "Varoitus: %s:%d jakso kohteessa %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1088
-#, c-format
-msgid "Error: %s:%d %s \"%s\" referenced but not defined"
-msgstr "Virhe: %s:%d %s \"%s\" uudelleenviitattu, mutta ei määritelty"
-
-#: plugins/sudoers/visudo.c:1089
-#, c-format
-msgid "Warning: %s:%d %s \"%s\" referenced but not defined"
-msgstr "Varoitus: %s:%d %s \"%s\" uudelleenviitattu, mutta ei määritelty"
-
-#: plugins/sudoers/visudo.c:1180
+#: plugins/sudoers/visudo.c:1067
#, c-format
-msgid "Warning: %s:%d unused %s \"%s\""
-msgstr "Varoitus: %s:%d käyttämätön %s \"%s\""
+msgid "Warning: %s:%d:%d: unused %s \"%s\""
+msgstr "Varoitus: %s:%d:%d: käyttämätön %s \"%s\""
-#: plugins/sudoers/visudo.c:1295
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -2955,7 +3148,7 @@ msgstr ""
"%s - muokkaa sudoers-tiedostoa turvallisesti\n"
"\n"
-#: plugins/sudoers/visudo.c:1297
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -2975,10 +3168,65 @@ msgstr ""
" -s, --strict tiukka syntaksitarkistus\n"
" -V, --version näytä versiotiedot ja poistu\n"
-#: toke.l:1032
+#: toke.l:187
+msgid "empty string"
+msgstr "tyhjä merkkijono"
+
+#: toke.l:199 toke.l:503
+msgid "empty group"
+msgstr "tyhjä ryhmä"
+
+#: toke.l:209 toke.l:501
+msgid "empty netgroup"
+msgstr "tyhjä verkkoryhmä"
+
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
+msgid "invalid line continuation"
+msgstr "virheellinen rivin jatko"
+
+#: toke.l:540 toke.l:552
+msgid "invalid IPv6 address"
+msgstr "virheellinen IPv6-osoite"
+
+#: toke.l:779
+msgid "unexpected line break in string"
+msgstr "odottamaton rivinkatkaisu merkkijonossa"
+
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "liian monta include-tasoa"
+# Ensimmäinen parametri on auth name
+#, fuzzy
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s: todentamisnimen ’%s’ jäsentäminen epäonnistui: %s"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Valitsimet:\n"
+#~ " -f, --file asetustiedoston polku\n"
+#~ " -h, --help näytä opaste ja poistu\n"
+#~ " -n, --no-fork älä haarauta, vaan suorita edustalla\n"
+#~ " -R, --random-drop yhteyden katkeamisen todennäköisyys-%\n"
+#~ " -V, --version näytä versiotiedot ja poistu\n"
+
+#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
+#~ msgstr "Esilataa vale-exec-funktiot, jotka sisältyvät sudo_noexec-kirjastoon"
+
+#~ msgid "sudo_ldap_conf_add_ports: port too large"
+#~ msgstr "sudo_ldap_conf_add_ports: portti on liian suuri"
+
+#~ msgid "unable to lock log file: %s"
+#~ msgstr "lokitiedoston lukitseminen epäonnistui: %s"
+
#~ msgid "SSL_connect failed: ssl_error=%d, stack=%s\n"
#~ msgstr "SSL_connect epäonnistui: ssl_error=%d, pino=%s\n"
@@ -3224,10 +3472,6 @@ msgstr "liian monta include-tasoa"
#~ msgid "fixed mode on %s"
#~ msgstr "korjattu tila tiedostossa %s"
-# Parametri on suoders file
-#~ msgid "set group on %s"
-#~ msgstr "aseta ryhmä tiedostossa %s"
-
#~ msgid "unable to fix mode on %s"
#~ msgstr "tilan korjaaminen tiedostossa %s epäonnistui"
diff --git a/plugins/sudoers/po/fr.mo b/plugins/sudoers/po/fr.mo
index 859281f78..9094ed725 100644
--- a/plugins/sudoers/po/fr.mo
+++ b/plugins/sudoers/po/fr.mo
Binary files differ
diff --git a/plugins/sudoers/po/fr.po b/plugins/sudoers/po/fr.po
index a6f73047f..8ff05e60a 100644
--- a/plugins/sudoers/po/fr.po
+++ b/plugins/sudoers/po/fr.po
@@ -2,13 +2,13 @@
# This file is distributed under the same license as the sudo package.
#
# Frédéric Hantrais <fhantrais@gmail.com>, 2014, 2015, 2016.
-# Frédéric Marchal <fmarchal@perso.be>, 2020
+# Frédéric Marchal <fmarchal@perso.be>, 2021
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-24 07:29+0100\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-04 13:23+0100\n"
"Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
@@ -18,7 +18,7 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n >= 2);\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "erreur de syntaxe"
@@ -42,426 +42,459 @@ msgstr "*** Informations de sécurité pour %h ***"
msgid "Sorry, try again."
msgstr "Désolé, essayez de nouveau."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "impossible d'allouer la mémoire"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "un résumé (digest) nécessite un chemin d'accès"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "les valeurs de « CWD » doivent commencer par « / », « ~ » ou « * »"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "les valeurs de « CHROOT » doivent commencer par « / », « ~ » ou « * »"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "erreur de syntaxe, le mot réservé %s est utilisé comme un nom de synonyme"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "valeur « notbefore » (pas avant) invalide"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "valeur « notafter » (pas après) invalide"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "valeur trop grande pour le délai d'expiration"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "valeur invalide pour le délai d'expiration"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "L'alias « %s » est déjà défini"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s : %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "erreur interne, dépassement de %s"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "duplication (dup) de stdin impossible : %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "exécution de %s impossible : %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "création du processus fils impossible"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "création du processus fils impossible : %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "ouverture du tube impossible : %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (suite de la commande) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s existe mais n'est pas un répertoire (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "création du répertoire (mkdir) %s impossible"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "impossible de changer le mode de %s pour lui affecter 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "JSON_STRING attendue, %d obtenu"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY trop grand"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "guillemet manquante dans le nom"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "JSON_OBJECT manquant"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "JSON_OBJECT attendu, %d obtenu"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "pile json épuisée (max %u trames)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "les objets doivent être des paires nom:valeur"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "séparateur manquant entre les valeurs"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "accolade fermante non appariée"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "tableau attendu"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "crochet fermant non apparié"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "chaîne inattendue"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "deux points manquants après le nom"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "booléen inattendu"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "nul inattendu"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "nombre inattendu"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u analyse grammaticale (parse) de « %s » impossible"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "erreur d'analyse grammaticale"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: fichier de journalisation incorrect"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: il manque le champ d'horodatage"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: horodatage %s : %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: il manque le champ utilisateur"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: il manque le champ précisant l'utilisateur effectif (runas)"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: il manque le champ précisant le groupe effectif (runas)"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s existe mais n'est pas un répertoire (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "création du répertoire (mkdir) %s impossible"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "impossible de changer le mode de %s pour lui affecter 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "erreur de lecture dans le fichier de timing : %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "ligne invalide dans le fichier de timing : %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "l'enregistrement du journal est déjà terminé, impossible de redémarrer"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "impossible de redémarrer l'enregistrement du journal"
@@ -486,141 +519,141 @@ msgstr "%s/%s : impossible d'examiner vers l'avant de %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "impossible de trouver le point de redémarrage [%lld, %ld] dans %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "erreur de la machine à états"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "AcceptMessage invalide"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "erreur de l'analyse de AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "erreur lors de la création du journal des E/S"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "erreur en écrivant l'événement d'acceptation dans le journal"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "RejectMessage invalide"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "erreur de l'analyse de RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "erreur en écrivant l'événement de rejet dans le journal"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "AlertMessage invalide"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "erreur de l'analyse de AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "erreur lors de l'écriture de l'événement d'alerte dans le journal"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "erreur protocole"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "erreur d'écriture dans IoBuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "erreur de l'écriture de ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "erreur de l'écriture de CommandSuspend"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "type de ClientMessage non reconnu"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "message client trop grand"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "impossible de sélectionner la suite de chiffrement %s pour TLS 1.2 : %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "impossible de sélectionner la suite de chiffrement %s pour TLS 1.3 : %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "impossible d'obtenir la méthode TLS du serveur : %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "impossible de créer le contexte TLS : %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "impossible de charger le certificat %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "impossible de charger le paquet de l'autorité du certificat %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "impossible de charger la clé privée %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "impossible de définir les paramètres diffie-hellman : %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "impossible de définir TLS 1.2 comme étant la version minimale du protocole : %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "impossible d'obtenir l'adresse IP distante"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Impossible d'attacher les données utilisateur à l'objet ssl : %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -630,280 +663,290 @@ msgstr "Impossible d'attacher les données utilisateur à l'objet ssl : %s"
msgid "unable to add event to queue"
msgstr "impossible d'ajouter l'événement à la queue"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "configuration du socket d'écoute impossible"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - envoyer le journal des E/S de sudo au serveur distant\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "serveur de journalisation de sudo"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Options :\n"
-" -f, --file chemin vers le fichier de configuration\n"
-" -h, --help affiche l'aide puis termine l'exécution\n"
-" -n, --no-fork ne pas démarrer une branche, exécuter au premier plan\n"
-" -R, --random-drop pourcentage de chances que la connexion soit abandonnée\n"
-" -V, --version affiche la version, puis termine l'exécution\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Options :"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "chemin du fichier de configuration"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "afficher le message d'aide et quitter"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "ne pas cloner, exécuter à l'avant plan"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "pourcentage de chance que les connections soient abandonnées"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "afficher l'information de version et quitter"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Version 1.3 ou supérieure de Protobuf-C requise"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "valeur d'abandon aléatoire invalide : %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s version %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS non supporté"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s  n'est pas un chemin totalement défini"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d « [ » sans correspondant : %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d section de configuration invalide : %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d ligne de configuration invalide : %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d nom de section attendu : %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "valeur invalide pour %s : %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d clé inconnue : %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "catégorie syslog %s inconnue"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "priorité syslog %s inconnue"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Options :\n"
-" --help afficher le message d'aide puis terminer\n"
-" -A, --accept n'envoyer qu'un événement d'acceptation (pas d'E/S)\n"
-" -h, --host hôte à qui envoyer le journal\n"
-" -i, --iolog_id ID distant du journal des E/S à redémarrer\n"
-" -p, --port port à utiliser lors de la connexion à l'hôte\n"
-" -r, --restart redémarrer le transfert du journal des E/S précédent\n"
-" -R, --reject rejeter la commande avec la raison donnée\n"
-" -b, --ca-bundle fichier du paquet de certificats avec lequel vérifier le certificat du serveur\n"
-" -c, --cert fichier de certificat pour l'échange TLS\n"
-" -k, --key fichier de la clé privée\n"
-" -n, --no-verify ne pas vérifier le certificat du serveur\n"
-" -t, --test tester le serveur d'audit en envoyant le journal des E/S sélectionné n fois en parallèle\n"
-" -V, --version afficher les informations de version et terminer\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "envoyer le journal des E/S de sudo au serveur distant"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "uniquement envoyer un événement d'acceptation (pas d'E/S)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "fichier de trousseau de certificats pour vérifier le certificat du serveur"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "fichier de certificat pour la négociation TLS"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "hôte auquel envoyer les journaux"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "ID distant du journal des E/S à compléter"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "fichier de clé privée"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "ne pas vérifier le certificat du serveur"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "port à utiliser lors de la connexion à l'hôte"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "redémarrer le transfert de journaux E/S précédent"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "rejeter la commande avec la raison fournie"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "tester le serveur d'audit en envoyant le journal des E/S sélectionné n fois en parallèle"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "impossible de rechercher %s:%s : %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "impossible d'obtenir l'adresse IP du serveur"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "impossible de lire %s/%s : %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "message client trop grand : %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: tampon d'écriture déjà en cours d'utilisation"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "événement d'E/S %d inattendu"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: état %d inattendu"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "ServerHello invalide"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "message d'erreur reçu du serveur : %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "message d'interruption reçu du serveur : %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "impossible de décompresser ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: valeur type_case %d inattendue"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "délai d'attente expiré durant la lecture depuis le serveur"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "fin de fichier prématurée"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "message serveur trop grand : %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "délai d'attente expiré durant l'écriture vers le serveur"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "le délai de la négociation TLS a expiré"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "impossible de définir l'événement"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "la communication TLS a échoué : %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Impossible d'initialiser le contexte ssl : %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Impossible d'allouer l'objet ssl : %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Impossible d'attacher le socket à l'objet ssl : %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "le point de redémarrage et le ID iolog doivent être spécifiés tous les deux"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "un point de redémarrage ne peut pas être placé quand aucune E/S est envoyée"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "terminé prématurément avec l'état %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "temps écoulé envoyé au serveur [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "point d'enregistrement reçu du serveur [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "L'alias « %s » est déjà défini"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "récupération de l'heure du jour impossible"
@@ -1009,38 +1052,38 @@ msgstr "%s : vérification du ticket TGT impossible ! Il s'agit peut-être d'u
msgid "unable to initialize PAM: %s"
msgstr "initialisation du module PAM impossible : %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Erreur du serveur d'authentification PAM : %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "la validation du compte a échoué, votre compte serait-il verrouillé ?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Le compte ou le mot de passe a expiré, réinitialisez votre mot de passe puis réessayez de vous connecter"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "changement du mot de passe expiré impossible : %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Le mot de passe a expiré, contactez votre administrateur système"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Le compte a expiré, ou la section « account » du module PAM n'est pas renseignée pour sudo, contactez votre administrateur système"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Erreur de gestion du compte PAM : %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "votre compte n'existe pas dans la base de données %s"
@@ -1113,7 +1156,27 @@ msgstr "Identification de la condition d'audit impossible"
msgid "unable to commit audit record"
msgstr "impossible d'enregistrer l'enregistrement d'audit"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "erreur de lecture dans le fichier des recommandations d'usage : %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "le fichier des recommandations d'usage %s est ignoré : il n'est pas un fichier ordinaire"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "ouverture de %s impossible"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1133,21 +1196,41 @@ msgstr ""
" #3) De grands pouvoirs confèrent de grandes responsabilités.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "identifiant utilisateur inconnu : %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "utilisateur inconnu : %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Erreur : %s:%d:%d: boucle dans %s « %s »"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Attention : %s:%d:%d: boucle dans %s « %s »"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Erreur : %s:%d:%d: il est fait mention de %s « %s » alors qu'il n'a pas été défini"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Attention : %s:%d:%d: il est fait mention de %s « %s » alors qu'il n'a pas été défini"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1163,7 +1246,7 @@ msgstr "ordre de départ : %s : %s"
msgid "order padding: %s: %s"
msgstr "remplissage de l'ordre : %s : %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "Version de la grammaire de %s : %d\n"
@@ -1183,9 +1266,9 @@ msgstr "format de sortie %s non supporté"
msgid "%s: input and output files must be different"
msgstr "%s : les fichiers d'entrée et de sortie doivent être différents"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "initialisation des valeurs par défaut de sudoers impossible"
@@ -1214,37 +1297,28 @@ msgstr "type de suppression invalide : %s"
msgid "invalid filter: %s"
msgstr "filtre invalide : %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "ouverture de %s impossible"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "échec lors de l'analyse grammaticale de %s, erreur inconnue"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "erreur lors de l'analyse grammaticale de %s au environs de la ligne %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "erreur lors de l'analyse grammaticale de %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "écriture impossible dans %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1253,7 +1327,7 @@ msgstr ""
"%s - convertir entre des formats de fichiers sudoers\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1901,6 +1975,15 @@ msgstr "Le répertoire racine à utiliser avant d'exécuter la commande : %s"
msgid "The format of logs to produce: %s"
msgstr "Format des journaux à produire : %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Activer le support pour SELinux RBAC"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Chemin vers le fichier qui est créé la première fois que sudo est exécuté : %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1951,35 +2034,35 @@ msgstr "%s:%d:%d: la valeur « %s » ne convient pas pour l'option « %s »"
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: la valeur « %s » ne convient pas pour l'option « %s »"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: les valeurs de « %s » doivent commencer par « / », « ~ » ou « * »"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: les valeurs de « %s » doivent commencer par « / », « ~ » ou « * »"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: les valeurs de « %s » doivent commencer par « / »"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: les valeurs de « %s » doivent commencer par « / »"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv : envp est corrompu, longueur incorrecte"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "impossible de créer à nouveau l'environnement"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "désolé, vous n'êtes pas autorisé à définir ces variables d'environnement : %s"
@@ -2043,42 +2126,42 @@ msgstr "impossible de reconnaître le format du masque de sous-réseau « %s 
msgid "Local IP address and netmask pairs:\n"
msgstr "Couples adresse IP locale/masque de sous-réseau :\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "groupe inconnu : %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "mise à jour du fichier de séquence impossible"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "impossible d'écrire dans le journal des E/S : %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "impossible de créer %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: erreur interne, le fichier journal des E/S pour l'événement %d n'est pas ouvert"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "lecture de l'horloge impossible"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: erreur interne, signal %d invalide"
@@ -2106,7 +2189,7 @@ msgstr "initialisation de LDAP impossible : %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls est spécifié mais les bibliothèques LDAP ne gèrent pas ldap_start_tls_s() ou ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "attribut sudoOrder invalide : %s"
@@ -2125,21 +2208,29 @@ msgstr "type d'uri LDAP non pris en charge : %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "fusion des URIs ldap et ldaps impossible"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "sudoOption dupliqué : %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "impossible de convertir sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "ouverture du fichier d'audit du système impossible"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "envoi du message d'audit impossible"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "erreur dans la boucle des événements"
@@ -2161,20 +2252,20 @@ msgstr "l'initialisation TLS n'a pas réussi"
msgid "TLS handshake was unsuccessful"
msgstr "la négociation TLS n'a pas réussi"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: erreur interne, statut de sortie %d invalide"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "perte de la connexion au serveur de journalisation"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "tampon d'écriture manquant"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "impossible de se connecter au serveur de journal"
@@ -2210,15 +2301,15 @@ msgstr "Désolé, l'utilisateur %s ne peut pas utiliser sudo sur %s.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Désolé, l'utilisateur %s n'est pas autorisé à exécuter « %s%s%s » en tant que %s%s%s sur %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s : commande introuvable"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2242,12 +2333,12 @@ msgstr "échec de l'authentification"
msgid "a password is required"
msgstr "il est nécessaire de saisir un mot de passe"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "ouverture du fichier de journalisation impossible : %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "impossible d'écrire le fichier journal : %s"
@@ -2257,7 +2348,7 @@ msgstr "impossible d'écrire le fichier journal : %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "le résume (digest) de %s (%s) n'est pas dans le forme %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2266,7 +2357,7 @@ msgstr ""
"\n"
"Rôle LDAP : %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2274,104 +2365,110 @@ msgstr ""
"\n"
"Entrée sudoers :\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAsUsers : "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAsGroups : "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Options : "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Commandes :\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Entrées Defaults correspondant pour %s sur %s :\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Paramètres par défaut de runas ou spécifiques aux commandes pour %s :\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "L'utilisateur %s peut utiliser les commandes suivantes sur %s :\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "L'utilisateur %s n'est pas autorisé à exécuter sudo sur %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "le sudoRole incomplet est ignoré : cn : %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "attribut LDIF invalide : %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "%.*s invalide défini par l'interface utilisateur de sudo"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "impossible d'analyser la liste des adresses réseau"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "nom d'utilisateur pas défini par l'interface utilisateur de sudo"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "ID utilisateur pas défini par l'interface utilisateur de sudo"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "ID de groupe pas défini par l'interface utilisateur de sudo"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "nom d'hôte pas défini par l'interface utilisateur de sudo"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "répertoire de travail invalide : %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "répertoire chroot invalide : %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "exécution de %s impossible"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: fanions de mode invalides dans l'interface utilisateur de sudo : 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "La version du greffon de politique de sudoers est %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "La version de la grammaire du fichier sudoers est %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2380,86 +2477,91 @@ msgstr ""
"\n"
"Chemin d'accès à sudoers : %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "chemin d'accès à nsswitch : %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "chemin d'accès à ldap.conf : %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "chemin d'accès à ldap.secret : %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "activation d'un point d'ancrage de type %d (version %d.%d) impossible"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "désactivation d'un point d'ancrage de type %d (version %d.%d) impossible"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "enregistrement de l'uid %u dans le cache impossible"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "enregistrement de l'uid %u dans le cache impossible, l'entrée existe déjà"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "impossible d'écrire l'utilisateur %s dans la cache"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "enregistrement des informations de l'utilisateur %s dans le cache impossible, l'entrée existe déjà"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "enregistrement du gid %u dans le cache impossible"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "enregistrement du gid %u dans le cache impossible, l'entrée existe déjà"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "impossible d'écrire le groupe %s dans la cache"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "enregistrement du groupe %s dans le cache impossible, l'entrée existe déjà"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "enregistrement de la liste de groupe %s dans le cache impossible, l'entrée existe déjà"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "impossible d'écrire la liste de groupes dans la cache pour %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "impossible d'analyser les groupes pour %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "impossible d'analyser les gids pour %s"
@@ -2534,135 +2636,139 @@ msgstr "initialisation de la source SSS impossible. SSSD est-il installé sur ce
msgid "unable to find symbol \"%s\" in %s"
msgstr "Le symbole « %s » est introuvable dans %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "les entrées par défaut posent un problème"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "aucune source sudoers valide n'a été trouvée, fin d'exécution"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "l'utilisateur n'est pas autorisé à changer le répertoire racine en %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "vous n'êtes pas autorisé à utiliser l'option -R avec %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "l'utilisateur n'est pas autorisé à changer de répertoire vers %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "vous n'êtes pas autorisé à utiliser l'option -D avec %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "aucune commande spécifiée"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "il est précisé dans sudoers que root n'est pas autorisé à utiliser sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "l'utilisateur n'est pas autorisé à outrepasser la limite closeform"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "vous n'êtes pas autorisé à utiliser l'option -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "propriétaire du fichier d'horodatage (%s) : utilisateur inconnu"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "pas de terminal tty"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "désolé, vous devez avoir un terminal tty pour exécuter sudo"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "interpréteur de commande invalide pour l'utilisateur %s : %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "commande dans le répertoire courant"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "l'utilisateur n'est pas autorisé à définir un délai d'expiration de la commande"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "désolé, vous n'êtes pas autorisé à définir un délai d'expiration de la commande"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "l'utilisateur n'est pas autorisé à conserver l'environnement"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "désolé, vous n'êtes pas autorisé à conserver l'environnement"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "commande trop longue"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit n'a pas besoin d'être exécuté via sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "lecture de %s impossible"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "impossible d'appliquer la fonction stat à %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s n'est pas un fichier ordinaire"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "Le fichier %s est la propriété de l'utilisateur (uid) %u, alors qu'il devrait appartenir à %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "Le fichier %s est ouvert en écriture pour tous"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "Le fichier %s a pour groupe (gid) %u, alors qu'il devrait appartenir au groupe %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "« -c %s » est réservé à l'utilisateur root"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "classe de connexion inconnue : %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "impossible de résoudre l'hôte %s"
@@ -2813,11 +2919,11 @@ msgstr ""
" -s, --speed=valeur accélère ou ralentit l'exécution\n"
" -V, --version affiche la version du programme, puis termine l'exécution"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\tl'hôte n'a pas de correspondance"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2825,7 +2931,7 @@ msgstr ""
"\n"
"Commande autorisée"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2833,7 +2939,7 @@ msgstr ""
"\n"
"Commande refusée"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2846,121 +2952,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s est accessible en écriture pour les membres du groupe"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "impossible de tronquer le fichier d'horodatage à %lld octets"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "un horodatage dans le futur a été ignoré"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "l'horodatage est trop avancé dans le future : %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "verrouillage du fichier d'horodatage %s impossible"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "le chemin d'accès au fichier d'état de la recommandation est trop long : %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit ne devrait pas être spécifié avec un chemin"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "l'option -x sera supprimée dans une version ultérieure"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "envisagez plutôt l'utilisation de l'utilitaire cvtsudoers"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "appuyer sur entrée pour éditer %s : "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "l'éditeur indiqué (%s) n'existe pas"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "aucun éditeur trouvé (chemin d'accès à l'éditeur : %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "erreur en écriture"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "impossible d'appliquer la fonction stat au fichier temporaire (%s), %s n'a pas été modifié"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "fichier temporaire vide (%s), %s n'a pas été modifié"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "l'éditeur (%s) a échoué, %s n'a pas été modifié"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s n'a pas été modifié"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "impossible de rouvrir le fichier temporaire (%s), %s n'a pas été modifié."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "impossible d'analyser le fichier temporaire (%s), erreur inconnue"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "erreur interne, impossible de trouver %s dans la liste !"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "impossible de définir (uid, gid) de %s à (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s et %s ne sont pas dans le même système de fichiers, tentative de renommage à l'aide de la commande mv"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "la commande a échoué : « %s %s %s », %s n'a pas été modifié"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "erreur lors du renommage de %s, %s n'a pas été modifié"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Et maintenant ?"
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2972,66 +3078,46 @@ msgstr ""
" e(x)it sans sauvegarde des modifications apportées au fichier sudoers\n"
" (Q)uitter et sauvegarder les modifications apportées au fichier sudoers (DANGER!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "exécution de %s impossible"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s : mauvais propriétaire (uid, gid), celui-ci devrait être (%u,%u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s : mauvais droits d'utilisation, le mode devrait être 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s : analyse réussie\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s n'est pas disponible, réessayez plus tard"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "impossible de verrouiller %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Éditer quand même ? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Erreur : %s:%d:%d: boucle dans %s « %s »"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Attention : %s:%d:%d: boucle dans %s « %s »"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Erreur : %s:%d:%d: il est fait mention de %s « %s » alors qu'il n'a pas été défini"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Attention : %s:%d:%d: il est fait mention de %s « %s » alors qu'il n'a pas été défini"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Attention : %s:%d:%d: %s « %s » n'est pas utilisé"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3040,7 +3126,7 @@ msgstr ""
"%s - édite le fichier sudoers en toute sécurité\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3060,34 +3146,87 @@ msgstr ""
" -s, --strict validation stricte de la syntaxe\n"
" -V, --version affiche la version, puis termine l'exécution\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "chaîne vide"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "groupe vide"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "netgroup vide"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "la suite de la ligne est invalide"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "adresse IPv6 invalide"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "saut de ligne inattendu dans la chaîne"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "nombre de niveaux d'inclusions trop élevé"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u analyse grammaticale (parse) de « %s » impossible"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Options :\n"
+#~ " -f, --file chemin vers le fichier de configuration\n"
+#~ " -h, --help affiche l'aide puis termine l'exécution\n"
+#~ " -n, --no-fork ne pas démarrer une branche, exécuter au premier plan\n"
+#~ " -R, --random-drop pourcentage de chances que la connexion soit abandonnée\n"
+#~ " -V, --version affiche la version, puis termine l'exécution\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Options :\n"
+#~ " --help afficher le message d'aide puis terminer\n"
+#~ " -A, --accept n'envoyer qu'un événement d'acceptation (pas d'E/S)\n"
+#~ " -h, --host hôte à qui envoyer le journal\n"
+#~ " -i, --iolog_id ID distant du journal des E/S à redémarrer\n"
+#~ " -p, --port port à utiliser lors de la connexion à l'hôte\n"
+#~ " -r, --restart redémarrer le transfert du journal des E/S précédent\n"
+#~ " -R, --reject rejeter la commande avec la raison donnée\n"
+#~ " -b, --ca-bundle fichier du paquet de certificats avec lequel vérifier le certificat du serveur\n"
+#~ " -c, --cert fichier de certificat pour l'échange TLS\n"
+#~ " -k, --key fichier de la clé privée\n"
+#~ " -n, --no-verify ne pas vérifier le certificat du serveur\n"
+#~ " -t, --test tester le serveur d'audit en envoyant le journal des E/S sélectionné n fois en parallèle\n"
+#~ " -V, --version afficher les informations de version et terminer\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "Préchargement des fonctions d'exécution « à blanc » contenues dans la bibliothèque sudo_noexec"
diff --git a/plugins/sudoers/po/hr.mo b/plugins/sudoers/po/hr.mo
index 618c68e0f..341c2e119 100644
--- a/plugins/sudoers/po/hr.mo
+++ b/plugins/sudoers/po/hr.mo
Binary files differ
diff --git a/plugins/sudoers/po/hr.po b/plugins/sudoers/po/hr.po
index cfbd98d96..84d4740b4 100644
--- a/plugins/sudoers/po/hr.po
+++ b/plugins/sudoers/po/hr.po
@@ -1,13 +1,13 @@
# Translation of sudoers to Croatian.
# This file is put in the public domain.
#
-# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2017, 2018, 2019, 2020.
+# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2017, 2018, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudoers-1.9.4b1\n"
+"Project-Id-Version: sudoers-1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-26 17:25-0800\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-04 18:20-0800\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
@@ -16,12 +16,12 @@ msgstr ""
"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 19.12.3\n"
+"X-Generator: Poedit 2.4.2\n"
"X-Poedit-Basepath: ../packages/sudo-1.8.23b2\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-SearchPath-0: .\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "pogreška u sintaksi"
@@ -45,426 +45,459 @@ msgstr "*** SIGURNOSNE informacije za %h ***"
msgid "Sorry, try again."
msgstr "Pokušajte ponovo."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "nije moguće dodijeliti memoriju"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "kontrolni zbroj zahtijeva ime staze"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "vrijednosti za „CWD“ moraju započeti s „/“, „~“, ili „*“"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "vrijednosti za „CHROOT“ moraju započeti s „/“, „~“, ili „*“"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "sintaktička greška -- rezervirana riječ %s korištena kao alias"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "nevaljana ‘notbefore’ vrijednost"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "nevaljana ‘notafter’ vrijednost"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "vrijednost za tajmaut je prevelika"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "nevaljana vrijednost za tajmaut"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Alias „%s“ je već ranije definiran"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "**interna greška**, %s prelijevanje"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "nije moguće duplicirati stdin: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "nije moguće izvršiti %s: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "nije moguće stvoriti novi proces (greška u fork())"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "nije moguće stvoriti novi proces (greška u fork()): %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "nije moguće otvoriti cijev: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (naredba se nastavlja) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s postoji ali nije direktorij (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "nije moguće napraviti direktorij %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "nije moguće promijeniti mȏd od %s na 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "očekivan je JSON_STRING, dobiven je %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY je prevelik"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "imenu nedostaje navodnik (\")"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "nedostaje JSON_OBJECT"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "očekivan je JSON_OBJECT, dobiven je %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "json stog je potrošen (max %u okvira)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "objekti se moraju sastojati od parova ime:vrijednost"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "nedostaje separator između vrijednosti"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "nesparena zatvorena vitičasta zagrada }"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "neočekivano polje"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "nesparena zatvorena uglata zagrada ]"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "neočekivani string"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "nedostaje dvotočka iza imena"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "neočekivana logička operacija (boolean)"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "neočekivana nula"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "neočekivani broj"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u nije moguće raščlaniti \"%s\""
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "greška u raščlambi"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: nevaljana dnevnička datoteka"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: nedostaje polje za vremensku oznaku"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: vremenska oznaka %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: nedostaje polje za korisnika"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: nedostaje polje za runas-korisnika"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: nedostaje polje za runas-grupe"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s postoji ali nije direktorij (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "nije moguće napraviti direktorij %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "nije moguće promijeniti mȏd od %s na 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "greška pri čitanju tajming datoteke: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "nevaljani redak u tajming datoteci: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "dnevnik je već kompletiran -- ne može se ponovno pokrenuti"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "nije moguće ponovno pokrenuti dnevničarenje (logging)"
@@ -489,141 +522,141 @@ msgstr "%s/%s: nije moguće skočiti naprijed na %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "nije moguće naći točku [%lld, %ld] u %s/%s od koje treba nastaviti"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "greška automata (state machine)"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "nevaljana AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "greška pri raščlanivanju AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "greška pri stvaranju U/I dnevnika"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "greška pri upisivanju u dnevnik ‘accept’ događaja"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "nevaljani RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "greška pri raščlanivanju RejectMessage-a"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "greška pri upisivanju u dnevnik ‘reject’ događaja"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "nevaljana AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "greška pri raščlanivanju AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "greška pri upisivanju u dnevnik ‘alert’ događaja"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "greška protokola"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "greška pri pisanju IoBuffer-a"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "greška pri pisanju ChangeWindowSize-a"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "greška pri pisanju CommandSuspend-a"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "neprepoznata vrsta ClientMessage-a"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "poruka klijenta je preduga"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "nije moguće postaviti ciphersuite na %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "nije moguće postaviti TLS 1.3 ciphersuite to %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "nije moguće dobiti od servera metodu: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "nije moguće stvoriti TLS kontekst: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "nije moguće učitati certifikate %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "nije moguće učitati datoteku s certifikatatima (CA bundle) %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "nije moguće učitati privatni ključ %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "nije moguće postaviti diffie-hellman parametre: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "nije mouguće uspostaviti minimalni protokol na TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "nije moguće dobiti udaljenu IP adresu"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Nije moguće prikvačiti podatke korisnika na SSL objekt: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -633,280 +666,290 @@ msgstr "Nije moguće prikvačiti podatke korisnika na SSL objekt: %s"
msgid "unable to add event to queue"
msgstr "nije moguće dodati događaj u red čekanja"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "ne moguće uspostaviti priključak za slušanje (listen socket)"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - šalje dnevnik U/I sudo-a na udaljeni server\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "server sudo dnevnika"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Opcije:\n"
-" -f, --file= staza do konfiguracijske datoteke\n"
-" -h, --help pokaže ovu pomoć i iziđe\n"
-" -n, --no-fork ne stvara novi proces, nego radi u prednjem planu\n"
-" -R, --random-drop postotak šanse da izgubi vezu (drop connection)\n"
-" -V, --version informira o inačici ovog programa i iziđe\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Opcije: "
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "staza do datoteke s postavkama"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "prikaže pomoć i iziđe"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "ne stvara novi proces, radi u prednjem planu"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "postotak šanse da će se veza prekinuti"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "prikaže podatke o inačici i iziđe"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "potrebna je Protobuf-C inačica 1.3 ili novija"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "nevaljana ‘random drop’ vrijednost: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s inačica %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS nije podržan"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: to nije potpuno kvalificirana staza"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d ne podudara '[': %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d nevaljana sekcija u konfiguraciji: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d nevaljani redak u konfiguraciji: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d očekivano ime sekcije: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "nevaljana vrijednost za %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s: %d nepoznati ključ: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "nepoznati ustroj za syslog (Protokol dnevničarenja sustava): %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "nepoznati prioritet %s za protokol dnevnika sustava (syslog)"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Options:\n"
-" --help pokaže ovu pomoć i iziđe\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host (računalo) kojemu se šalje dnevnik\n"
-" -i, --iolog_id udaljeni ID od U/I dnevnika koji treba nastaviti\n"
-" -p, --port port koji će se koristiti za spajanje na hosta\n"
-" -r, --restart ponovi prethodni prijenos U/I dnevnika\n"
-" -b, --ca-bundle datoteka s paketom certifikata (CA) za provjeru\n"
-" certifikata servera\n"
-" -c, --cert certificat datoteka za TLS rukovanje (handshake)\n"
-" -k, --key datoteka s privatnim (tajnim) ključem (private key)\n"
-" -t, --test testira revizijski server tako da paralelno\n"
-" pošalje ‘n’ puta U/I dnevnik\n"
-" -V, --version informira o inačici ovog programa i iziđe\n"
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "pošalje sudo I/O dnevnik na udaljeni poslužitelj"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "pošalje samo prihvaćene događaje (ne i I/O)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "datoteka snopa certifikata radi provjere certifikata servera"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "datoteka certifikata za TLS rukovanje"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "host kojem se šalje dnevnik"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "udaljeni ID I/O dnevnika koji treba nastaviti"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "datoteka privatnog ključa"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "ne provjerava certifikat servera"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "koristi taj port za spajanje na hosta"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "ponovno pokrene prethodni prijenos I/O dnevnika"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "odbije naredbu s navedenim razlogom"
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "testira revizijski server slanjem odabranih zapisa I/O dnevnika paralelno n puta"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "nije moguće potražiti %s:%s: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "nije moguće dobiti IP adresu servera"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "nije moguće učitati %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "poruka klijenta je preduga: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: međuspremnik za pisanje je zauzet"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "neočekivani U/I događaj %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: neočekivano stanje %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "nevaljani ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "primljena je poruka o greškama od servera: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "primljena je poruka za prekid (abort) od servera: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "nije moguće raspakirati ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: neočekivana ‘type_case’ vrijednost za %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "isteklo je vrijeme za čitanje iz servera"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "preuranjeni EOF (kraj datoteke)"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "poruka servera je preduga: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "isteklo je vrijeme za pisanje na server"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "vrijeme za TLS rukovanje je isteklo"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "nije moguće uspostaviti događaj"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS spajanje nije uspjelo: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Nije moguće inicijalizirati SSL kontekst: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Nije uspjelo dodijeliti memoriju za SSL objekt: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Nije uspjelo prikvačiti utičnicu na SSL objekt: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "i točka za ponovno pokretanje i iolog ID moraju biti specificirani"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "ako se ne pošalje U/I (I/O), ponovno uspostavljanje možda neće uspjeti"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "preuranjeni završetak (izlaz) sa stanjem %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "proteklo vrijeme poslano je na server [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "potvrđena točka primljena je od servera [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Alias „%s“ je već ranije definiran"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "nije moguće dobiti doba dana (trenutno vrijeme)"
@@ -1012,38 +1055,38 @@ msgstr "%s: Nije moguće provjeriti TGT! Mogući napad!: %s"
msgid "unable to initialize PAM: %s"
msgstr "nije moguće inicijalizirati PAM: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Greška PAM autentifikacije: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "provjera valjanosti računa nije uspjela, je li vaš račun zaključan?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Račun ili lozinka su istekli, postavite novu lozinku i pokušajte ponovo."
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "nije moguće promijeniti zastarjelu lozinku: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Lozinka je istekla, javite se vašem administratoru sustava."
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Račun je istekao ili PAM konfiguracija nema sekciju ‘account’ za sudo, javite se vašem administratoru sustava."
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Pogreška u upravljanju PAM računom: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "vas nema u %s bazi podataka"
@@ -1116,7 +1159,27 @@ msgstr "Nije bilo moguće odrediti uvjete za reviziju."
msgid "unable to commit audit record"
msgstr "revizijski izvještaj nije bilo moguće zapisati na disk"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "greška pri čitanju datoteke s prodikom: %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "zanemari datoteku s prodikom %s: nije regularna datoteka"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "nije moguće otvoriti %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1136,21 +1199,41 @@ msgstr ""
" #3) S velikim moćima dolazi velika odgovornost.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "nepoznati UID: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "nepoznati korisnik: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Greška: %s:%d:%d: ciklus u %s „%s“"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Upozorenje: %s:%d:%d: ciklus u %s „%s“"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Greška: %s:%d:%d %s „%s“ je referenciran ali nije definiran"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Upozorenje: %s:%d:%d %s „%s“ je referenciran ali nije definiran"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1166,7 +1249,7 @@ msgstr "početni redoslijed (order): %s: %s"
msgid "order padding: %s: %s"
msgstr "ispuna redoslijeda (order): %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s inačica gramatike %d\n"
@@ -1186,9 +1269,9 @@ msgstr "nepodržani izlazni format %s"
msgid "%s: input and output files must be different"
msgstr "%s: ulazna i izlazna datoteka moraju biti različite datoteke"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "nije moguće inicijalizirati zadane vrijednosti sudoers"
@@ -1217,37 +1300,28 @@ msgstr "nevaljana vrsta za izostavljanje: %s"
msgid "invalid filter: %s"
msgstr "nevaljani filtar: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "nije moguće otvoriti %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "nije uspjelo raščlaniti %s datoteku, nepoznata greška"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "greška u raščlambi u %s blizu retka %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "greška u raščlambi u %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "nije moguće pisati u %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1256,7 +1330,7 @@ msgstr ""
"%s - pretvara formate sudoers datoteka\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1902,6 +1976,15 @@ msgstr "Root direktorij u koji treba otići prije izvršavanja naredbe: %s"
msgid "The format of logs to produce: %s"
msgstr "Format dnevnika: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Omogući podršku za SELinux RBAC"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Staza do datoteke koja se kreira prilikom prvog sudo pokretanja: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1952,35 +2035,35 @@ msgstr "%s:%d:%d: vrijednost „%s“ za opciju „%s“ nije valjana"
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: vrijednost „%s“ nije ispravna za opciju „%s“"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: vrijednost za „%s“ mora započeti s „/“, „~“, ili „*“"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: vrijednost za „%s“ mora započeti s „/“, „~“, ili „*“"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: vrijednost za „%s“ mora započeti s „/“"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: vrijednost za „%s“ mora početi s „/“"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: oštećen envp, duljina ne odgovara"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "nije moguće obnoviti okolinu"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "nemate dopuštenje za postavljanje sljedećih varijabli okoline: %s"
@@ -2044,42 +2127,42 @@ msgstr "„%s“ nije valjana mrežna maska (nemoguće ju je raščlaniti)"
msgid "Local IP address and netmask pairs:\n"
msgstr "Parovi lokalnih IP adresa i mrežnih maski:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "nepoznata grupa: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "nije moguće ažurirati datoteku redoslijeda (sequence file)"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "nije moguće pisati u U/I dnevnik: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "nije moguće stvoriti %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: interna greška, U/I dnevnička datoteka za događaj %d nije otvorena"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "nije moguće pročitati vrijeme (clock)"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: interna greška, nevaljani signal %d"
@@ -2107,7 +2190,7 @@ msgstr "nije moguće inicijalizirati LDAP: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls je specificirani, ali LDAP biblioteke ne podržavaju ldap_start_tls_s() ili ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "nevaljani sudoOrder atribut: %s"
@@ -2126,21 +2209,29 @@ msgstr "nepodržana vrsta adrese LDAP: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "ne možete zajedno koristiti ldap i ldaps adrese"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "duplicira sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "nije moguće pretvoriti sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "nije moguće otvoriti revizijski sustav"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "nije moguće poslati revizijsku poruku"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "greška u petlji događaja"
@@ -2162,20 +2253,20 @@ msgstr "TLS inicijalizacija nije bila uspješna"
msgid "TLS handshake was unsuccessful"
msgstr "TLS rukovanje (handshake) nije bila uspješno"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: **interna greška** -- nevaljani izlazni status %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "veza sa serverom za autentifikaciju je prekinuta (izgubljena je)"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "nema međuspremnika za pisanje"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "nije moguće spojiti se na dnevnički server"
@@ -2216,15 +2307,15 @@ msgstr "Nažalost, korisnik %s ne smije pokrenuti sudo na %s.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Nažalost, korisniku %s nije dopušteno izvršiti „%s%s%s“ kao %s%s%s na %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: naredba nije pronađena"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2249,12 +2340,12 @@ msgstr "neuspješna autentifikacija"
msgid "a password is required"
msgstr "nužna je lozinka"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "nije moguće otvoriti dnevničku datoteku: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "nije moguće pisati u dnevničku datoteku: %s"
@@ -2264,7 +2355,7 @@ msgstr "nije moguće pisati u dnevničku datoteku: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "kontrolni zbroj za %s (%s) nije u %s obliku"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2273,7 +2364,7 @@ msgstr ""
"\n"
"LDAP uloga: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2281,104 +2372,110 @@ msgstr ""
"\n"
"Sudoers stavka:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAsUsers: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAsGroups: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Opcije: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Naredbe:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Odgovarajući Defaults unosi za %s na %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Runas i Command-specifične zadane vrijednosti za %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Korisnik %s može pokrenuti sljedeće naredbe na %s:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Korisniku %s nije dopušteno pokrenuti sudo na %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "ignorira se nekompletni sudoRole: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "nevaljani LDIF atribut: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "nevaljana opcija %.*s postavljena kroz sudo front-end"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "nije moguće pročitati popis mrežnih adresa (nemoguće ih je raščlaniti)"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "ime korisnika nije postavio front-end sudo-a"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "korisnički ID (user-ID) nije postavio front-end sudo-a"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "groupni ID (group-ID) nije postavio front-end sudo-a"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "ime računala (host name) nije postavio front-end sudo-a"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "nevaljani radni direktorij: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "nevaljani chroot direktorij: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "nije moguće izvršiti %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: nevaljane zastavice načina rada iz sudo front end: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Inačica sudoers plugina s pravilima %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Inačica sudoers datotečne gramatike %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2387,87 +2484,93 @@ msgstr ""
"\n"
"Staza do sudoers: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch staza: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf staza: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret staza: %s\n"
# hook: A location in a routine or program in which the programmer can connect or insert other routines for the purpose of debugging or enhancing functionality.
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "nije moguće registrirati rutinu (hook) vrste %d (inačica %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+# hook: A location in a routine or program in which the programmer can connect or insert other routines for the purpose of debugging or enhancing functionality.
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "nije moguće poništiti registraciju vrste (hook) %d (inačica %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "nije moguće zapamtiti (cache) UID %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "nije moguće predmemorirati UID %u jer već postoji"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "nije moguće zapamtiti (cache) korisnika %s"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "nije moguće predmemorirati korisnika %s jer već postoji"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "nije moguće zapamtiti (cache) GID %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "nije moguće predmemorirati GID %u jer već postoji"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "nije moguće zapamtiti (cache) grupu %s"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "nije moguće predmemorirati grupu %s jer već postoji"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "nije moguće predmemorirati popis grupa za %s jer već postoji"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "nije moguće zapamtiti (cache) popis grupa za %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "nije moguće pročitati grupe za %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "nije moguće razabrati GID-ove za %s"
@@ -2542,135 +2645,139 @@ msgstr "nije moguće inicijalizirati SSS izvor. Je li SSSD instaliran na vašem
msgid "unable to find symbol \"%s\" in %s"
msgstr "nije moguće pronaći simbol „%s“ u %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "problem sa stavkama defaults"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "nisu pronađeni valjani sudoers izvori, kraj rada"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "korisniku nije dopušteno promijeniti radni direktorij na %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "vama nije dopušteno koristi opciju -R s/sa %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "korisniku nije dopušteno promijeniti direktorij na %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "vama nije dopušteno koristi opciju -D s/sa %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "nijedna naredba nije specificirana"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers specificira da root ne može koristiti sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "korisniku nije dopušteno promijeniti ograničenje od ‘closefrom’"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "vama nije dopušteno koristi opciju -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "vlasnik vremenske oznake (%s): Nema takvog korisnika"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "nema TTY"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "nažalost, da pokrenete sudo morate imati TTY"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "nevaljana ljuska za korisnika %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "naredba u trenutnom direktoriju"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "korisniku nije dopušteno postavljanje tajmaut naredbe"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "nažalost, vama nije dopušteno postavljanje tajmaut za naredbu"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "korisniku nije dopušteno sačuvati okolinu"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "vama nije dopušteno zadržati okolinu"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "naredba je preduga"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit se ne mora pokrenuti sa sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "nije moguće pročitati %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "nije moguće dobiti status od %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s nije obična datoteka"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "vlasnik %s je UID %u, a treba biti %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s smije svatko mijenjati/pisati"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "vlasnik %s je GID %u, a treba biti %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "samo root može koristiti „-c %s“"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "nepoznata klasa prijave: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "nije moguće pronaći računalo %s"
@@ -2821,11 +2928,11 @@ msgstr ""
" -s, --speed=num ubrza ili uspori reprodukciju\n"
" -V, --version informira o inačici ovog programa i iziđe"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\tračunalo se ne podudara"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2833,7 +2940,7 @@ msgstr ""
"\n"
"Naredba je dopuštena."
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2841,7 +2948,7 @@ msgstr ""
"\n"
"Naredba nije dopuštena."
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2854,121 +2961,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s članovi grupe mogu mijenjati/pisati"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "nije moguće skratiti datoteku s vremenskim podacima na %lld bajtova"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "ignorira se vremenska oznaka iz budućnosti"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "vremenska oznaka je predaleko u budućnosti: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "nije moguće zaključati datoteku s vremenskim oznakama %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "staza do lekcije je preduga: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit se ne smije specificirati sa stazom"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "opcija -x biti će uklonjena iz buduće inačice"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "molimo da umjesto toga pokušate rabiti cvtsudoers uslužni program"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "pritisnite return/enter za redigirati %s: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "navedeni uređivač (%s) ne postoji"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "nijedan uređivač nije pronađen (editor path = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "greška pri pisanju"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "nije moguće dobiti status privremene datoteke (%s), %s nije promijenjena"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "privremena datoteka duljine nula (%s), %s nije promijenjena"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "greška uređivač (%s), %s nije promijenjena"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s nije promijenjeno"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "nije moguće ponovo otvoriti privremenu datoteku (%s), %s nije promijenjena."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "nije moguće razabrati privremenu datoteku (%s) -- nepoznata greška"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "**interna greška**, nije moguće pronaći %s na popisu!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "nije moguće postaviti (UID, GID) od %s na (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s i %s nisu na istom datotečnom sustavu, koristi se mv za preimenovanje"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "naredba nije uspjela: „%s %s %s“, %s nije promijenjena"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "greška u preimenovanju %s, %s nije promijenjena"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Što sada? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2980,66 +3087,46 @@ msgstr ""
" (x) završiti bez spremanja promjena u datoteku sudoers)\n"
" (Q) prekinuti i spremiti promjene u datoteku sudoers (OPASNO!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "nije moguće pokrenuti %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: krivi vlasnik (UID, GID) a treba biti (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: loša prava pristupa, trebala bi biti 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: raščlamba je uspjela\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s je zauzeti, pokušajte ponovo kasnije"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "nije moguće zaključati %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Ipak redigirati? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Greška: %s:%d:%d: ciklus u %s „%s“"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Upozorenje: %s:%d:%d: ciklus u %s „%s“"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Greška: %s:%d:%d %s „%s“ je referenciran ali nije definiran"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Upozorenje: %s:%d:%d %s „%s“ je referenciran ali nije definiran"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Upozorenje: %s:%d:%d nekorišteni %s „%s“"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3048,7 +3135,7 @@ msgstr ""
"%s - sigurno redigira sudoers datoteku\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3068,34 +3155,87 @@ msgstr ""
" -s, --strick striktna testira sintaksu sudoers datoteke\n"
" -V, --version informira o inačici ovog programa i iziđe\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "prazni string"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "prazna grupa"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "prazna mrežna grupa (netgroup)"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "nevaljani nastavak retka"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "nevaljana IPv6 adresa"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "neočekivani prelom retka"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "previše razina uključivanja"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u nije moguće raščlaniti \"%s\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Opcije:\n"
+#~ " -f, --file= staza do konfiguracijske datoteke\n"
+#~ " -h, --help pokaže ovu pomoć i iziđe\n"
+#~ " -n, --no-fork ne stvara novi proces, nego radi u prednjem planu\n"
+#~ " -R, --random-drop postotak šanse da izgubi vezu (drop connection)\n"
+#~ " -V, --version informira o inačici ovog programa i iziđe\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help pokaže ovu pomoć i iziđe\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host (računalo) kojemu se šalje dnevnik\n"
+#~ " -i, --iolog_id udaljeni ID od U/I dnevnika koji treba nastaviti\n"
+#~ " -p, --port port koji će se koristiti za spajanje na hosta\n"
+#~ " -r, --restart ponovi prethodni prijenos U/I dnevnika\n"
+#~ " -b, --ca-bundle datoteka s paketom certifikata (CA) za provjeru\n"
+#~ " certifikata servera\n"
+#~ " -c, --cert certificat datoteka za TLS rukovanje (handshake)\n"
+#~ " -k, --key datoteka s privatnim (tajnim) ključem (private key)\n"
+#~ " -t, --test testira revizijski server tako da paralelno\n"
+#~ " pošalje ‘n’ puta U/I dnevnik\n"
+#~ " -V, --version informira o inačici ovog programa i iziđe\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "Prethodno učitati prividne izvršne funkcije sadržane u biblioteci sudo_noexec."
diff --git a/plugins/sudoers/po/ja.mo b/plugins/sudoers/po/ja.mo
index 64beca756..41b5fe1e5 100644
--- a/plugins/sudoers/po/ja.mo
+++ b/plugins/sudoers/po/ja.mo
Binary files differ
diff --git a/plugins/sudoers/po/ja.po b/plugins/sudoers/po/ja.po
index 401b55396..41cd8dfe4 100644
--- a/plugins/sudoers/po/ja.po
+++ b/plugins/sudoers/po/ja.po
@@ -1,13 +1,13 @@
# Japanese messages for sudoers
# This file is put in the public domain.
# Yasuaki Taniguchi <yasuakit@gmail.com>, 2011.
-# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2012, 2015, 2016, 2017, 2018, 2019, 2020.
+# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2012, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-26 22:10+0900\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-07 23:48+0900\n"
"Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"Language: ja\n"
@@ -16,11 +16,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Poedit-Basepath: sudo-1.9.3b1\n"
+"X-Poedit-Basepath: sudo-1.9.6b1\n"
"X-Generator: Poedit 2.2.1\n"
"X-Poedit-SearchPath-0: .\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "構文エラー"
@@ -44,426 +44,459 @@ msgstr "*** %h のセキュリティ情報 ***"
msgid "Sorry, try again."
msgstr "残念、また試してください。"
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "メモリ割り当てを行えませんでした"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "認証方式にはパスが必要です"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "\"CWD\" の値は '/', '~', または '*' で開始しなければいけません"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "\"CHROOT\" の値は '/', '~', または '*' で開始しなければいけません"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "構文エラー、予約語 %s がエイリアス名に使われています"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "notbefore の値が無効です"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "notafter の値が無効です"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "制限時間の値が大き過ぎます"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "時間制限値が無効です"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "別名 \"%s\" はすでに定義されています"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "内部エラー、%s がオーバーフローしました"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "標準入力を複製できません: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "%s を実行できません: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "fork できません"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "fork できません: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "パイプを開けません: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (コマンド継続中) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s が存在しますがディレクトリではありません (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "ディレクトリ %s を作成できません"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "%s のアクセス権限のモードを 0%o に変更できません"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "JSON_STRING を予期していたら、 %d でした"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY が大きすぎます"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "名前に二重引用符がありません"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "JSON_OBJECT がありません"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "JSON_OBJECT を予期していたら、 %d でした"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "JSON スタックを使い切りました(最大 %u フレーム)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "オブジェクトは 名前:値 のベアである必要があります"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "値の間の分離記号がありません"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "余分な閉じ中括弧があります"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "予期せぬところに配列"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "余分な閉じ角括弧があります"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "予期せぬところに文字列"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "名前の後にコロンがありません"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "予期せぬところに真偽値"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "予期せぬところにNULL"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "予期せぬところに数値"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u \"%s\" を構文解析できません"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "構文解析エラー"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: 無効なログファイルのパス"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: タイムスタンプのフィールドがありません"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: タイムスタンプ %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: ユーザー名フィールドがありません"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: runasユーザー名フィールドがありません"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: runasグループ名フィールドがありません"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s が存在しますがディレクトリではありません (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "ディレクトリ %s を作成できません"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "%s のアクセス権限のモードを 0%o に変更できません"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "タイミングファイルの読み込みエラー: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "無効なタイミングファイルの行です: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "ログは完了しているので、再開できません"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "ログを再開できません"
@@ -488,141 +521,141 @@ msgstr "%s/%s: 前方検索できません %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "復元ポイントが見つかりません [%lld, %ld] in %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "状態マシンエラー"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "無効な AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "AcceptMessage の解析中にエラー"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "I/O ログの作成でエラー"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "accept イベントのログ記録でエラー"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "無効な RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "RejectMessage の解析でエラー"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "reject イベントのログ記録でエラー"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "無効な AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "AlertMessage の解析中にエラー"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "alert イベントのログ記録でエラー"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "プロトコルエラーです"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "IoBuffer の書き込みでエラー"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "ChangeWindowSize の書き込みでエラー"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "CommandSuspend の書き込みでエラー"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "認識できないクライアントメッセージのタイプです"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "クライアントメッセージが大き過ぎます"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "TLS 1.2 暗号化スイートを %s に設定できません: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "TLS 1.3 暗号化スイートを %s に設定できません: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "TLS サーバーメソッドを取得できません: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "TLS コンテキストを作成できません: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "証明書 %s をロードできません"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "認証局の証明書バンドル %s をロードできません"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "プライベート鍵を読み込めません: %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "ディフィー・ヘルマン パラメーターを設定できません: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "プロトコルの最小バージョンを TLS 1.2 に設定できません: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "リモートIPアドレスを取得できません"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "ユーザーデータをSSLオブジェクトに添付することができません: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -632,280 +665,290 @@ msgstr "ユーザーデータをSSLオブジェクトに添付することがで
msgid "unable to add event to queue"
msgstr "イベントをキューに追加できません"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "接続待ちソケットを準備できません"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - sudo I/O ログをリモートサーバーに送ります\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "Sudo ログサーバー"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"オプション:\n"
-" -f, --file=sudoers sudoers ファイルの位置を指定する\n"
-" -h, --help ヘルプメッセージを表示して終了する\n"
-" -n, --no-fork フォークせずに、フォアグラウンドで実行する\n"
-" -R, --random-drop 接続がドロップする確率(%)\n"
-" -V, --version バージョン情報を表示して終了する\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "オプション:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "設定ファイルのパス"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "ヘルプメッセージを表示して終了する"
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "フォークせずに、フォアグラウンドで実行する"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "接続が切れる割合(%)"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "バージョン情報を表示して終了する"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C バージョン 1.3 以上が必要です"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "無効な乱数ドロップ値です: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s バージョン %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS がサポートされていません"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: 完全修飾パスではありません"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d 対応しない '[': %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d 無効な config セクション: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d 無効な設定の行: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d セクション名が必要です: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "%s には無効な値: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d 未知の鍵: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "未知の syslog ファシリティ %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "未知の syslog プライオリティ %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"オプション:\n"
-" --help ヘルプメッセージを表示して終了する\n"
-" -A, --accept 受け取りイベントのみを送る (I/O なし)\n"
-" -h, --host ログの送り先とするホスト\n"
-" -i, --iolog_id 復元するI/O ログのリモート ID \n"
-" -p, --port ホストに接続するのに使用するポート\n"
-" -r, --restart 以前の I/O ログ転送を再開する\n"
-" -R, --reject 与えられた理由によりコマンドを拒否する\n"
-" -b, --ca-bundle サーバーの証明書を検証するために突き合わせる証明書バンドルファイル\n"
-" -c, --cert TLSハンドシェイクのための証明書ファイル\n"
-" -k, --key 秘密鍵ファイル\n"
-" -n, --no-verify サーバーの証明書を検証しない\n"
-" -t, --test 選んだ I/O ログを n 重に並列送信することで監査サーバーを試験する\n"
-" -V, --version バージョン情報を表示して終了する\n"
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "sudo I/O ログをリモートサーバーに送る"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "受け取りイベントのみを送る (I/O なし)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "サーバーの証明書を検証するために突き合わせる証明書バンドルファイル"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "TLSハンドシェイクのための証明書ファイル"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "ログの送り先とするホスト"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "復元するI/O ログのリモート ID"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "プライベート鍵ファイル"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "サーバーの証明書を検証しない"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "ホストに接続するのに使用するポート"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "以前の I/O ログ転送を再開する"
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "与えられた理由によりコマンドを拒否する"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "選んだ I/O ログを n 重に並列送信することで監査サーバーを試験する"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "警告: %s:%s を参照できません: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "サーバーのIPアドレスを取得できません"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "%s/%s から読み込むことができません: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "クライアントメッセージが大き過ぎます: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: 書き込みバッファは使用中です"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "予期しない I/O イベント %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: 予期しない状態 %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "無効な ServerHello です"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "サーバからエラーメッセージを受け取りました: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "サーバから中断メッセージを受け取りました: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "ServerMessage を展開できません"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: 予期しない type_case の値 %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "サーバーからの読み込みがタイムアウト"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "早すぎるファイル終端 (EOF)"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "サーバーメッセージが大き過ぎます: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "サーバーへの書き込みがタイムアウト"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "TLS ハンドシェイクでタイムアウトが発生"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "イベントを設定できません"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS接続に失敗しました: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "SSL コンテキストを初期化できません: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "SSLオブジェクトを割り当てることができません: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "ソケットをSSLオブジェクトに取り付けることができません: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "再開するポイントとIOログIDを指定する必要があります"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "I/Oが送られない場合は再開するポイントを設定できません"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "ステータス %d で予期せぬ終了をしました"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "サーバーに送られた経過時間 [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "サーバーから受け取ったコミットポイント [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "別名 \"%s\" はすでに定義されています"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "時刻を取得できません"
@@ -1011,38 +1054,38 @@ msgstr "%s: TGT を検証できません! おそらく攻撃です!: %s"
msgid "unable to initialize PAM: %s"
msgstr "PAM を初期化できません: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "PAM 認証エラーです: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "アカウントの有効性検証に失敗しました。あなたのアカウントはロックされていませんか?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "アカウントまたはパスワードが期限切れです。パスワードをリセットして再試行してください"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "期限の切れたパスワードを変更できません: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "パスワードが期限切れです。システム管理者に連絡してください"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "アカウントの期限切れ、または sudo 用の PAM 設定に \"account\" セクションがありません。システム管理者に連絡してください"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "PAM アカウント管理エラーです: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "あなたは %s データベース内に存在しません"
@@ -1115,7 +1158,27 @@ msgstr "監査条件を決定できませんでした"
msgid "unable to commit audit record"
msgstr "監査レコードをコミットできません"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "講義ファイル %s の読み込みエラー"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "講義ファイル %s を無視します: 通常ファイルではありません"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "%s を開けません"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1135,21 +1198,41 @@ msgstr ""
" #3) 大いなる力には大いなる責任が伴うこと。\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "不明なユーザーID (uid) です: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "不明なユーザーです: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "エラー: %s:%d:%d: %s \"%s\" でエイリアス定義が循環しています"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "警告: %s:%d:%d: %s \"%s\" でエイリアス定義が循環しています"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "エラー: %s:%d:%d: %s \"%s\" は参照されているのに定義されていません"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "警告: %s:%d:%d: %s \"%s\" は参照されているのに定義されていません"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1165,7 +1248,7 @@ msgstr "開始の order: %s: %s"
msgid "order padding: %s: %s"
msgstr "order の増分: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s 文法バージョン %d\n"
@@ -1185,9 +1268,9 @@ msgstr "サポートされてない出力形式です %s"
msgid "%s: input and output files must be different"
msgstr "%s: 入力ファイルと出力ファイルは別である必要があります"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "sudoers のデフォルト値を初期化できません"
@@ -1216,37 +1299,28 @@ msgstr "無効な抑制の指定です: %s"
msgid "invalid filter: %s"
msgstr "無効なフィルターです: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "%s を開けません"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "%s ファイルの構文解析に失敗しました。不明なエラーです"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "%s 内 %d 行付近で構文解析エラーが発生しました\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "%s 内で構文解析エラーが発生しました\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "%s へ書き込むことができません"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1255,7 +1329,7 @@ msgstr ""
"%s - sudoers ファイル形式間での変換を行う\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1902,6 +1976,15 @@ msgstr "コマンド実行前に変更するルートディレクトリ: %s"
msgid "The format of logs to produce: %s"
msgstr "生成するログの書式: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "SELinux RBAC のサポートを有効にする"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "sudo が最初に実行された時に作成されるファイルのパス: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1952,35 +2035,35 @@ msgstr "%s:%d:%d: \"%s\" はオプション \"%s\" の値としては無効で
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: \"%s\" はオプション \"%s\" の値としては無効です"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: \"%s\" の値は '/', '~', または '*' で開始しなければいけません"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: \"%s\" の値は '/', '~', または '*' で開始しなければいけません"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: \"%s\" の値は '/' で開始しなければいけません"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: \"%s\" の値は '/' で開始しなければいけません"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: envp が破損しています。長さが合いません"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "環境を再構築できません"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "残念ですが、あなたは次の環境変数を設定することを許可されていません: %s"
@@ -2044,42 +2127,42 @@ msgstr "ネットマスク \"%s\" を解析できません"
msgid "Local IP address and netmask pairs:\n"
msgstr "ローカル IP アドレスとネットマスクの組:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "不明なグループです: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "シーケンスファイルを更新できません"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "%s へ I/O ログを書き込むことができません"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "%s/%s を作成できません"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: 内部エラー、I/O イベント %d のログファイルを開けません"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "時刻を読み込むことができません"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: 内部エラー、無効なシグナル %d"
@@ -2107,7 +2190,7 @@ msgstr "LDAP を初期化できません: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls が指定されていますが、LDAP ライブラリが ldap_start_tls_s() または ldap_start_tls_s_np() をサポートしていません"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "無効な sudoOrder 属性です: %s"
@@ -2126,21 +2209,29 @@ msgstr "サポートされてない LDAP URI タイプです: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "ldap と ldaps の URI を混ぜて使用できません"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "sudoOption が重複しています: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "sudoOption を変換できません: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "監査システムを開くことができません"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "監査メッセージを送ることができません"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "イベントループでエラーが発生しました"
@@ -2162,20 +2253,20 @@ msgstr "TLS 初期化が成功しませんでした"
msgid "TLS handshake was unsuccessful"
msgstr "TLS ハンドシェイクが成功しませんでした"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: 内部エラー、無効な終了コード %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "ログサーバーへの接続が失われました"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "書き込みバッファが失われました"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "ログサーバーに接続できません"
@@ -2211,15 +2302,15 @@ msgstr "残念ですが、ユーザー %s は %s 上で sudo を実行できま
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "残念ですが、ユーザー %s は'%s%s%s' を %s%s%s として %s 上で実行することは許可されていません。\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: コマンドが見つかりません"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2242,12 +2333,12 @@ msgstr "認証失敗"
msgid "a password is required"
msgstr "パスワードが必要です"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "ログファイルを開けません: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "%s へログを書き込むことができません"
@@ -2257,7 +2348,7 @@ msgstr "%s へログを書き込むことができません"
msgid "digest for %s (%s) is not in %s form"
msgstr "%s (%s) の認証方式は %s 形式ではありません"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2266,7 +2357,7 @@ msgstr ""
"\n"
"LDAP 役割: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2274,104 +2365,110 @@ msgstr ""
"\n"
"sudoers 項目:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAsUsers: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAsGroups: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " オプション: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " コマンド:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "既定値のエントリと照合中 (ユーザー名 %s) (ホスト名 %s):\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "ユーザー %s 用の Runas およびコマンド特有のデフォルト:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "ユーザー %s は %s 上で コマンドを実行できます\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "ユーザー %s は %s 上で sudo を実行することを許可されていません。\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "不完全な sudoRole: cn: %s を無視します"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "無効な LDIF 属性です: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "無効な %.*s が sudo のフロントエンドで設定されています"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "ネットワークのアドレスリストを解析できません"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "ユーザー名が sudo のフロントエンドで設定されていません"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "ユーザーIDが sudo のフロントエンドで設定されていません"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "グループIDが sudo のフロントエンドで設定されていません"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "ホスト名が sudo のフロントエンドで設定されていません"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "無効な作業ディレクトリ: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "無効な chroot ディレクトリ: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "%s を実行できません"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: 無効なモードフラグが sudo のフロントエンドで指定されています: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "sudoers ポリシープラグイン バージョン %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "sudoers ファイル文法バージョン %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2380,86 +2477,91 @@ msgstr ""
"\n"
"sudoers のパス: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch のパス: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf のパス: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret のパス: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "タイプ %d のフックを登録できません (バージョン %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "タイプ %d のフックを登録解除できません (バージョン %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "ユーザーID %u をキャッシュできません"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "ユーザーID %u をキャッシュできません。すでに存在します"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "ユーザー %s をキャッシュできません"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "ユーザー %s をキャッシュできません。すでに存在します"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "グループID %u をキャッシュできません"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "グループID %u をキャッシュできません。すでに存在します"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "グループ %s をキャッシュできません"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "グループ %s をキャッシュできません。すでに存在します"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "グループリスト %s をキャッシュできません。すでに存在します"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "グループリスト %s をキャッシュできません"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "%s のグループを解析できません"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "%s のグループIDを解析できません"
@@ -2534,135 +2636,139 @@ msgstr "SSS のソースを初期化できません。SSSD はあなたのマシ
msgid "unable to find symbol \"%s\" in %s"
msgstr "シンボル \"%s\" が %s 内にありません"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "デフォルト項目で問題が発生しました"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "有効な sudoers のソースが見つかりません。終了します"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "ユーザーはルートディレクトリを %s に変更できません"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "-R オプションを %s と共に使用することは許可されていません"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "ユーザーはディレクトリを %s に変更できません"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "-D オプションを %s と共に使用することは許可されていません"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "コマンドが指定されていません"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers の指定により root が sudo を使用することは禁止されています"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "ユーザーが closefrom 制限をオーバーライドすることは許されていません"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "-C オプションを使用することは許可されていません"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "タイムスタンプの所有者 (%s): そのようなユーザーはありません"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "tty がありません"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "残念ですが、sudo を実行するには tty が必要です"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "ユーザー %s には無効な シェル: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "コマンドがカレントディレクトリにあります"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "ユーザーはコマンド実行の制限時間を設定することを許可されていません"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "残念ですが、あなたはコマンド実行の制限時間を設定することを許可されていません"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "ユーザーは環境変数を保存することを許可されていません"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "残念ですが、あなたは環境変数を保存することを許可されていません"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "コマンド名が長すぎます"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit の実行に sudo を使用する必要はありません"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "%s を読み込めません"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "%s の状態取得 (stat) ができません"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s は通常ファイルではありません"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s はユーザーID %u によって所有されています。これは %u であるべきです"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s は誰でも書き込み可能です"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s のグループIDは %u になっています。これは %u であるべきです"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "root のみ \"-c %s\" を使用できます"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "不明なログインクラスです: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "ホスト %s の名前解決ができません"
@@ -2812,11 +2918,11 @@ msgstr ""
" -s, --speed=num 出力速度を速くする、または遅くする\n"
" -V, --version バージョン情報を表示して終了する"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\tホストが一致しません"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2824,7 +2930,7 @@ msgstr ""
"\n"
"コマンドが許可されました"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2832,7 +2938,7 @@ msgstr ""
"\n"
"コマンドが拒否されました"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2845,121 +2951,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s はグループのメンバーによる書き込みが可能です"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "タイムスタンプファイルを %lld バイトに切り詰めることができません"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "未来の時刻のタイムスタンプを無視します"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "タイムスタンプが遠すぎる将来になっています: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "タイムスタンプファイル %s をロックすることができません"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "受講状況格納パスが長すぎます: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit はパスなしで設定するべきです"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "-x オプションは将来のリリースでは削除されます"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "cvtsudoers ユーティリティーを代わりに使用することを検討してください"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "%s を編集するためにリターンを押してください: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "指定したエディター (%s) が存在しません"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "エディターが見つかりません (エディターのパス = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "書き込みエラーです"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "一時ファイル (%s) の状態取得 (stat) ができません。%s は変更されません"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "一時ファイル (%s) の大きさが 0 です。%s は変更されません"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "エディター (%s) が異常終了しました。%s は変更されません"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s は変更されません"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "一時ファイル (%s) を再度開くことができません。%s は変更されません。"
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "一時ファイル (%s) の構文解析ができません。不明なエラーです"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "内部エラー、リスト内に %s が見つかりません!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "%s の (ユーザーID, グループID) を (%u, %u) に設定できません"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s と %s は同じファイルシステム上にありません。名前を変更するために mv を使用しています"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "コマンドの失敗です: '%s %s %s'。%s は変更されません"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "%s の名前変更に失敗しました。%s は変更されません"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "次は何でしょうか? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2971,66 +3077,46 @@ msgstr ""
" x -- sudoers ファイルへの変更を保存せずに終了します\n"
" Q -- sudoers ファイルへの変更を保存して終了します (*危険です!*)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "%s を実行できません"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: 所有権に誤りがあります。(ユーザーID, グループID) は (%u, %u) であるべきです\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: アクセス権限に誤りがあります。モードは 0%o であるべきです\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: 正しく構文解析されました\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s がビジー状態です。後で再試行してください"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "%s をロックできません"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "それでも編集しますか? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "エラー: %s:%d:%d: %s \"%s\" でエイリアス定義が循環しています"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "警告: %s:%d:%d: %s \"%s\" でエイリアス定義が循環しています"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "エラー: %s:%d:%d: %s \"%s\" は参照されているのに定義されていません"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "警告: %s:%d:%d: %s \"%s\" は参照されているのに定義されていません"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "警告: %s:%d:%d: エイリアス %s \"%s\" は使用されていません"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3039,7 +3125,7 @@ msgstr ""
"%s - sudoers ファイルを安全に編集する\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3059,34 +3145,87 @@ msgstr ""
" -s, --strict 厳密な文法検査を行う\n"
" -V, --version バージョン情報を表示して終了する\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "空の文字列"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "空のグループ"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "空のネットグループ"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "無効な行の継続"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "無効な IPv6 アドレス"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "文字列の予期せぬところに改行"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "インクルードの階層が大きすぎます"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u \"%s\" を構文解析できません"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "オプション:\n"
+#~ " -f, --file=sudoers sudoers ファイルの位置を指定する\n"
+#~ " -h, --help ヘルプメッセージを表示して終了する\n"
+#~ " -n, --no-fork フォークせずに、フォアグラウンドで実行する\n"
+#~ " -R, --random-drop 接続がドロップする確率(%)\n"
+#~ " -V, --version バージョン情報を表示して終了する\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "オプション:\n"
+#~ " --help ヘルプメッセージを表示して終了する\n"
+#~ " -A, --accept 受け取りイベントのみを送る (I/O なし)\n"
+#~ " -h, --host ログの送り先とするホスト\n"
+#~ " -i, --iolog_id 復元するI/O ログのリモート ID \n"
+#~ " -p, --port ホストに接続するのに使用するポート\n"
+#~ " -r, --restart 以前の I/O ログ転送を再開する\n"
+#~ " -R, --reject 与えられた理由によりコマンドを拒否する\n"
+#~ " -b, --ca-bundle サーバーの証明書を検証するために突き合わせる証明書バンドルファイル\n"
+#~ " -c, --cert TLSハンドシェイクのための証明書ファイル\n"
+#~ " -k, --key 秘密鍵ファイル\n"
+#~ " -n, --no-verify サーバーの証明書を検証しない\n"
+#~ " -t, --test 選んだ I/O ログを n 重に並列送信することで監査サーバーを試験する\n"
+#~ " -V, --version バージョン情報を表示して終了する\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "sudo_noexec ライブラリに含まれるダミーの exec 関数群を事前ロードします"
diff --git a/plugins/sudoers/po/ko.mo b/plugins/sudoers/po/ko.mo
index 3a1b32c83..4a4dbc6d6 100644
--- a/plugins/sudoers/po/ko.mo
+++ b/plugins/sudoers/po/ko.mo
Binary files differ
diff --git a/plugins/sudoers/po/ko.po b/plugins/sudoers/po/ko.po
index 04af0c596..7fd6d7004 100644
--- a/plugins/sudoers/po/ko.po
+++ b/plugins/sudoers/po/ko.po
@@ -1,14 +1,14 @@
# Korean translation for the sudoers plugin
# This file is distributed under the same license as the sudo package.
# Todd C. Miller <Todd.Miller@courtesan.com>, 2011-2015
-# Seong-ho Cho <darkcircle.0426@gmail.com>, 2016-2020.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2016-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-12-11 01:02+0900\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-04 16:16+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
@@ -17,9 +17,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.3.1\n"
+"X-Generator: Poedit 2.2.1\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "문법 오류"
@@ -43,426 +43,459 @@ msgstr "*** %h 보안 알림 ***"
msgid "Sorry, try again."
msgstr "죄송합니다만, 다시 시도하십시오."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "메모리를 할당할 수 없습니다"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "다이제스트에 경로 이름이 필요합니다"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "%s: \"CWD\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "%s: \"CHROOT\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "문법 오류. %s 예약어를 별칭으로 썼습니다"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "잘못된 notbefore 값"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "잘못된 notafter 값"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "제한 시간 값이 너무 큽니다"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "잘못된 제한 시간 값"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "\"%s\" 별칭을 이미 정의했습니다"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "내부 오류. %s 오버플로우"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "표준 입력을 복제할 수 없습니다: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "%s을(를) 실행할 수 없습니다: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "포킹할 수 없습니다"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "포킹할 수 없습니다: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "파이프를 열 수 없습니다: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (명령 계속 실행) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s이(가) 있지만 디렉터리가 아닙니다(0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "mkdir %s 명령을 실행할 수 없습니다"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "%s 모드를 0%o 값으로 바꿀 수 없습니다"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "JSON_STRING 값을 기대했지만, %d 결과가 나왔습니다"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY 값이 너무 큽니다"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "이름에 이중 따옴표가 빠졌습니다"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "JSON_OBJECT 값이 빠졌습니다"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "JSON_OBJECT 값을 기대했지만, %d 결과가 나왔습니다"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "json 스택 용량이 부족합니다 (최대 %u 프레임)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "객체는 이름:값 쌍으로 구성해야 합니다"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "값을 구분하는 구분자가 빠졌습니다"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "일치하지 않는 중괄호 닫기 표시"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "예기치 않은 배열 발견"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "일치하지 않는 각괄호 닫기 표시"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "예기치 않은 문자열 값 발견"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "이름 뒤에 콜론이 빠졌습니다"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "예기치 않은 부울린 값 발견"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "예기치 않은 NULL 값 발견"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "예기치 않은 숫자 값 발견"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u \"%s\"을(를) 해석할 수 없습니다"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "해석 오류"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: 잘못된 로그 파일"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: 타임스탬프 필드가 빠졌습니다"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: %s 타임스탬프: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: 사용자 필드가 빠졌습니다"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: 실행 사용자 필드가 빠졌습니다"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: 실행 그룹 필드가 빠졌습니다"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s이(가) 있지만 디렉터리가 아닙니다(0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "mkdir %s 명령을 실행할 수 없습니다"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "%s 모드를 0%o 값으로 바꿀 수 없습니다"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "타이밍 파일 읽기 오류: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "잘못된 타이밍 파일 행: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "로그를 이미 끝냈으며, 다시 시작할 수 없습니다"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "로그를 다시 시작할 수 없습니다"
@@ -487,141 +520,141 @@ msgstr "%s/%s: %zu회 이전 탐색을 진행할 수 없습니다"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "%3$s/%4$s에서 재개 지점[%1$lld, %2$ld]을 찾을 수 없습니다"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "상태 머신 오류"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "잘못된 AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "AcceptMessage 해석 오류"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "입출력 로그 만드는 중 오류"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "수락 이벤트 로깅 중 오류"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "잘못된 RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "RejectMessage 해석 오류"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "거절 이벤트 로깅 중 오류"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "잘못된 AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "AlertMessage 해석 오류"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "경고 이벤트 로깅 중 오류"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "프로토콜 오류"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "입출력 버퍼 기록 중 오류"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "ChangeWindowSize 기록 중 오류"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "CommandSuspend 기록 중 오류"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "인식할 수 없는 ClientMessage 형식"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "클라이언트 메시지가 너무 깁니다"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "%s에 TLS 1.2 암호 모음을 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "%s에 TLS 1.3 암호 모음을 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "TLS 서버 처리 정보를 가져올 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "TLS 컨텍스트를 만들 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "%s 인증서를 불러올 수 없습니다"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "%s 인증서 인증 번들을 불러올 수 없습니다"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "%s 개인 키를 불러올 수 없습니다"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "디피-헬먼 매개변수를 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "TLS 프로토콜 최소 버전을 1.2로 설정할 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "원격 IP 주소를 가져올 수 없습니다"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "ssl 객체에 사용자 데이터를 붙일 수 없습니다: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -631,280 +664,290 @@ msgstr "ssl 객체에 사용자 데이터를 붙일 수 없습니다: %s"
msgid "unable to add event to queue"
msgstr "큐에 이벤트를 추가할 수 없습니다"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "감청 소켓을 설정할 수 없습니다"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - 원격 서버에 sudo 입출력 로그를 보냅니다\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "sudo 로그 서버"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Options:\n"
-" -f, --file 설정 파일 경고\n"
-" -h --help 도움말 메시지를 나타낸 후 나갑니다\n"
-" -n, --no-fork 별도의 스레드를 만들지 않고, 전면에서 실행합니다\n"
-" -R, --random-drop 연결을 쳐낼 백분율\n"
-" -V, --version 버전 정보를 나타낸 후 나갑니다\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "옵션:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "설정 파일 경로"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "도움말 메시지를 표시한 후 빠져나갑니다"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "프로세스를 포킹하지 않고, 포그라운드에서 실행"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "연결이 끊을 확률에 대한 백분율"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "버전 정보를 표시하고 빠져나갑니다"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C 1.3 이상의 버전이 필요합니다"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "잘못된 임의 드롭 값: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s 버전 %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS를 지원하지 않습니다"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: 완전하지 않은 경로"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d 일치하지 않는 '[': %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d 잘못된 설정 섹션: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d 잘못된 설정 행: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d(에)서 섹션 이름이 나와야 합니다: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "잘못된 %s 값: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d 알 수 없는 키: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "알 수 없는 syslog 수단 %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "알 수 없는 syslog 우선 순위 %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"옵션:\n"
-" --help 도움말 메시지를 나타낸 후 나갑니다\n"
-" -A, --accept 수락 이벤트만 전송 (입출력 안 함)\n"
-" -h, --host 로그 전송 대상 호스트\n"
-" -i, --iolog_id 입출력 로그를 재개할 원격 ID\n"
-" -p, --port 호스트 연결시 사용할 포트 번호\n"
-" -r, --restart 이전 입출력 로그 전송 다시 시작\n"
-" -R, --reject 주어진 조건에 대해 명령 거절\n"
-" -b, --ca-bundle 서버 인증서 검증용 인증 번들 파일\n"
-" -c, --cert TLS 핸드셰이크용 인증서 파일\n"
-" -k, --key 개인 키 파일\n"
-" -n, --no-verify 서버 인증서를 검증하지 않음\n"
-" -t, --test 선택한 입출력 로그를 병렬로 n회 전송하여 감사 서버 테스트\n"
-" -V, --version 버전 정보를 나타 후 나갑니다\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "원격 서버에 sudo 입출력 로그를 보냅니다"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "허용 이벤트만 보냅니다 (입출력 안함)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "서버의 인증서 검증에 활용할 인증서 번들 파일"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "TLS 암호 키 교환에 사용할 인증서 파일"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "로그를 보낼 호스트"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "다시 진행할 입출력 로그의 원격 ID"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "개인 키 파일"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "서버 인증서를 검증하지 않습니다"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "호스트에 연결할 때 활용할 포트 번호"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "이전 입출력 로그 전송을 다시 시작합니다"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "주어진 사유로 명령 실행을 거절합니다"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "선택한 입출력 로그를 동시에 N번 보내어 감사 서버 시험"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "%s:%s을(를) 찾을 수 없습니다: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "서버 IP 주소를 가져올 수 없습니다"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "%s/%s을(를) 읽을 수 없습니다: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "클라이언드 메시지가 너무 깁니다: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: 쓰기 버퍼를 이미 사용중입니다"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "예기치 않은 입출력 이벤트 %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: 예기치 않은 상태 번호 %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "잘못된 ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "서버로부터 오류 메시지를 받았습니다: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "서버로부터 중단 메시지를 받았습니다: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "ServerMessage를 언팩할 수 없습니다"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: 예기지 않은 type_case 값 %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "서버 데이터 읽기 시간 초과"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "갑작스러운 EOF"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "서버 메시지가 너무 깁니다: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "서버 기록 시간 초과"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "TLS 핸드셰이크 시간을 초과했습니다"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "이벤트를 설정할 수 없습니다"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS 연결 실패: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "SSL 컨텍스트를 초기화할 수 없습니다: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "SSL 객체를 할당할 수 없습니다: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "SSL 객체에 소켓을 붙일 수 없습니다: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "다시 시작 지점과 입출력 로그 ID를 반드시 지정해야합니다"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "입출력을 보내지 않을 때 다시 시작 지점을 지정하지 않습니다"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "%d 상태로 갑자기 빠져나왔습니다"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "경과 시간을 서버로 보냈습니다 [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "제출 지점 정보를 서버로부터 받았습니다 [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "\"%s\" 별칭을 이미 정의했습니다"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "일시 정보를 가져올 수 없습니다"
@@ -1010,38 +1053,38 @@ msgstr "%s: TGT를 검증할 수 없습니다! 공격 가능성이 있습니다!
msgid "unable to initialize PAM: %s"
msgstr "PAM을 초기화할 수 없습니다: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "PAM 인증 오류: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "계정 검증 실패, 계정이 잠겼습니까?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "계정 또는 암호 기한이 지났습니다. 암호를 다시 설정한 후 시도하십시오"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "기한이 지난 암호를 바꿀 수 없습니다: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "암호 기한이 지났습니다. 시스템 관리자에게 문의하십시오"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "계정 기한이 지났거나 PAM 설정에 sudo에서 확인할 \"account\" 섹션이 빠졌습니다. 시스템 관리자에게 문의하십시오."
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "PAM 계정 관리 오류: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "%s 데이터베이스에 없습니다"
@@ -1114,7 +1157,27 @@ msgstr "감사 상태를 결정할 수 없습니다"
msgid "unable to commit audit record"
msgstr "감사 레코드를 제출할 수 없습니다"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "%s 지시 파일 읽기 오류"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "%s 지시 파일 무시: 일반 파일이 아닙니다"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "%s을(를) 열 수 없습니다"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1134,21 +1197,41 @@ msgstr ""
" #3) 막강한 힘에는 상당한 책임이 뒤따릅니다.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "알 수 없는 uid: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "알 수 없는 사용자: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "오류: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "경고: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "오류: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "경고: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1164,7 +1247,7 @@ msgstr "순서 시작: %s: %s"
msgid "order padding: %s: %s"
msgstr "순서 패딩: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s 문법 버전 %d\n"
@@ -1184,9 +1267,9 @@ msgstr "지원하지 않는 %s 출력 형식"
msgid "%s: input and output files must be different"
msgstr "%s: 입출력 파일은 달라야합니다"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "sudoers 기본 값을 초기화할 수 없습니다"
@@ -1215,37 +1298,28 @@ msgstr "잘못된 생략 형식: %s"
msgid "invalid filter: %s"
msgstr "잘못된 필터: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "%s을(를) 열 수 없습니다"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "%s 파일 해석에 실패했습니다. 알 수 없는 오류."
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "%s %d번째 줄 인근 해석 오류\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "%s 해석 오류\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "%s에 기록할 수 없습니다"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1254,7 +1328,7 @@ msgstr ""
"%s - sudoers 파일 형식을 변환합니다\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1900,6 +1974,15 @@ msgstr "명령 실행 전 바꿀 루트 디렉터리: %s"
msgid "The format of logs to produce: %s"
msgstr "로그 기록 형식: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "SELinux RBAC 지원을 사용합니다"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "sudo를 처음 실행할 때 만든 파일의 경로: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1950,35 +2033,35 @@ msgstr "%s:%d:%d: \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다"
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: \"%s\" 값은 \"%s\" 옵션에 맞지 않습니다"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: \"%s\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: \"%s\" 값은 '/'; '~'; '*' 문자로 시작해야합니다"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: \"%s\" 값은 '/' 문자로 시작해야합니다"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: \"%s\" 값은 '/' 문자로 시작해야합니다"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: envp가 깨졌습니다. 길이가 일치하지 않습니다"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "환경 구성을 다시 갖출 수 없습니다"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "죄송하지만 다음 환경 변수를 설정하도록 허가받지 않았습니다: %s"
@@ -2042,42 +2125,42 @@ msgstr "\"%s\" 네트워크 마스크 주소를 해석할 수 없습니다"
msgid "Local IP address and netmask pairs:\n"
msgstr "로컬 IP 주소 및 넷마스크 쌍:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "잘못된 그룹: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "시퀀스 파일을 업데이트할 수 없습니다"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "입출력 로그에 기록할 수 없습니다: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "%s/%s을(를) 만들 수 없습니다"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: 내부 오류. 이벤트 %d 번의 입출력 로그 파일을 열지 않았습니다"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "클록을 읽을 수 없습니다"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: 내부 오류. 잘못된 시그널 %d번"
@@ -2105,7 +2188,7 @@ msgstr "LDAP를 초기화할 수 없습니다: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls를 지정했지만 LDAP 라이브러리에서 ldap_start_tls_s() 또는 ldap_start_tls_s_np() 함수를 지원하지 않습니다"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "잘못된 sudoOrder 속성: %s"
@@ -2124,21 +2207,29 @@ msgstr "지원하지 않는 LDAP URI 형식: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "ldap 및 ldaps URI를 함께 사용할 수 없습니다"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "sudoOption 복제: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "sudoOption을 변환할 수 없습니다: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "감시 시스템을 열 수 없습니다"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "감시 메시지를 보낼 수 없습니다"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "이벤트 루프 오류"
@@ -2160,20 +2251,20 @@ msgstr "TLS 초기화에 실패했습니다"
msgid "TLS handshake was unsuccessful"
msgstr "TLS 핸드셰이킹에 실패했습니다"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: 내부 오류. 잘못된 시그널 %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "로그 서버의 연결이 끊어졌습니다"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "기록 버퍼 빠짐"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "로그 서버에 연결할 수 없습니다"
@@ -2209,15 +2300,15 @@ msgstr "죄송하지만, %s 사용자는 %s에서 sudo를 실행하면 안됩니
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "죄송하지만 %1$s 사용자는 '%2$s%3$s%4$s'을(를) %8$s의 %5$s%6$s%7$s(으)로 실행하도록 허가받지 않았습니다.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: 명령이 없습니다"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2240,12 +2331,12 @@ msgstr "인증 실패"
msgid "a password is required"
msgstr "암호가 필요합니다"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "로그 파일을 열 수 없습니다: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "로그 파일에 기록할 수 없습니다: %s"
@@ -2255,7 +2346,7 @@ msgstr "로그 파일에 기록할 수 없습니다: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "%s 다이제스트(%s)는 %s 형식이 아닙니다"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2264,7 +2355,7 @@ msgstr ""
"\n"
"LDAP 역할: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2272,104 +2363,110 @@ msgstr ""
"\n"
"Sudoers 항목:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " 실행 사용자: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " 실행 그룹: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " 옵션: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " 명령:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "%2$s에서 %1$s에 일치하는 기본 항목:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "%s의 실행 권한 및 명령별 기본 값:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "%s 사용자는 %s에서 다음 명령을 실행해야 합니다:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "%s 사용자는 %s에서 sudo를 실행하도록 허가받지 않았습니다.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "미완결 sudoRole 무시: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "잘못된 LDIF 속성: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "sudo 프론트엔드의 %.*s 설정이 잘못되었습니다"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "네트워크 주소 목록을 해석할 수 없습니다"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "sudo 프론트엔드에서 사용자 이름을 설정하지 않았습니다"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "sudo 프론트엔드에서 사용자 ID를 설정하지 않았습니다"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "sudo 프론트엔드에서 그룹 ID를 지정하지 않았습니다"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "sudo 프론트엔드에서 호스트 이름을 설정하지 않았습니다"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "잘못된 작업 디렉터리: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "잘못된 루트 변경 디렉터리: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "%s을(를) 실행할 수 없습니다"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: sudo 프론트엔드의 상태 플래그가 잘못되었습니다: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Sudoers 정책 플러그인 버전 %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Sudoers 파일 문법 버전 %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2378,86 +2475,91 @@ msgstr ""
"\n"
"Sudoers 경로: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch 경로: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf 경로: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret 경로: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "%d 형식의 후크를 등록할 수 없습니다(버전 %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "%d 형식의 후크 등록을 해제할 수 없습니다(버전 %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "%u uid를 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "%u uid를 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "%s 사용자를 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "%s 사용자를 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "%u GID를 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "%u gid를 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "%s 그룹을 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "%s 그룹을 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "%s 그룹 목록을 캐시에 적재할 수 없습니다. 이미 존재합니다."
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "%s 그룹 목록을 캐시에 적재할 수 없습니다"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "%s 그룹을 해석할 수 없습니다"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "%s 그룹 ID를 해석할 수 없습니다"
@@ -2532,135 +2634,139 @@ msgstr "SSS 소스를 초기화할 수 없습니다. 머신에 SSSD를 설치했
msgid "unable to find symbol \"%s\" in %s"
msgstr "%2$s에서 \"%1$s\" 심볼을 찾을 수 없습니다"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "기본 항목에 문제 발생"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "올바른 sudoers 설정 원본이 없습니다. 나갑니다."
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
-msgstr "%s 를 루트 디렉터리로 변환하도록 허용하지 않습니다"
+msgstr "%s을(를) 루트 디렉터리로 변환하도록 허용하지 않습니다"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "-R 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "%s 디렉터리로의 변경을 허용하지 않습니다"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "-D 옵션과 %s 옵션의 병행 사용을 허가받지 않았습니다"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "지정한 명령이 없음"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers에서 root가 sudo를 실행하지 못하게 지정했습니다"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "사용자가 closefrom 제한 값을 따로 적용하도록 허용하지 않았습니다"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "-C 옵션 사용을 허가받지 않았습니다"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "타임스탬프 소유자(%s): 사용자 없음"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "tty 없음"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "죄송하지만 sudo를 실행하려면 tty를 확보해야합니다"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "%s 사용자에게 잘못된 셸 제공: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "현재 디렉터리의 명령"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "사용자가 명령 처리 제한 시간을 설정하도록 허용하지 않았습니다"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "죄송하지만, 명령 처리 제한 시간을 설정할 수 없습니다"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "사용자가 환경 설정 값을 유지하도록 허용하지 않았습니다"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "죄송하지만 이 환경 상태를 유지하도록 허가받지 않았습니다"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "명령이 너무 깁니다"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit는 sudo로 실행할 필요가 없습니다"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "%s을(를) 읽을 수 없습니다"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "%s의 상태를 가져올 수 없습니다"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s은(는) 일반 파일이 아닙니다"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s은(는) %u uid가 소유했지만, %u uid가 소유해야합니다"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s에 모두가 기록할 수 있습니다"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s은(는) %u gid가 소유했지만, %u gid가 소유해야합니다"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "루트만 \"-c %s\" 옵션을 사용할 수 있습니다"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "알 수 없는 로그인 클래스: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "%s 호스트를 해석할 수 없습니다"
@@ -2810,11 +2916,11 @@ msgstr ""
" -s, --speed=<숫자> 출력 속도를 올리거나 내립니다\n"
" -V, --version 버전 정보를 나타낸 후 빠져나갑니다"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\t호스트가 일치하지 않습니다"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2822,7 +2928,7 @@ msgstr ""
"\n"
"명령 허용함"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2830,7 +2936,7 @@ msgstr ""
"\n"
"명령 거부함"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2843,121 +2949,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s은(는) 그룹이 기록할 수 있습니다"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "타임스탬프 파일을 %lld 바이트로 자를 수 없습니다"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "미래 타임스탬프 값 무시"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "타임스탬프 값이 미래 값으로 너무 밀려있습니다: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "%s 타임스탬프 파일을 잠글 수 없습니다"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "지침 상태 경로가 너무 깁니다: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit에 경로를 지정하면 안됩니다"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "-x 옵션은 추후 릴리스에서 제거 예정입니다"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "cvtsudoers 유틸리티를 대신 사용해보십시오"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "%s을(를) 편집하려면 return 키를 누르십시오:"
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "지정 편집기(%s)가 없습니다"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "편집기가 없습니다(편집기 경로 = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "쓰기 오류"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "임시 파일 상태를 가져올 수 없습니다(%s). %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "임시 파일 길이가 0입니다(%s). %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "편집기(%s) 실패. %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s 바꾸지 않음"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "임시 파일(%s)을 다시 열 수 없습니다. %s을(를) 바꾸지 않았습니다."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "임시 파일(%s)을 해석할 수 없습니다. 알 수 없는 오류"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "내부 오류. %s을(를) 목록에서 찾을 수 없습니다!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "%s의 uid/gid를 %u/%u 값으로 설정할 수 없습니다"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s 및 %s은(는) 동일한 파일 시스템에 없습니다. mv 명령으로 이름을 바꿉니다"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "명령 실행 실패: '%s %s %s', %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "%s 이름 바꾸기 오류. %s을(를) 바꾸지 않았습니다"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "어떻게 하시겠습니까? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2969,66 +3075,46 @@ msgstr ""
" sudoers 파일을 바꾼 상태에서 저장하지 않고 나갑니다(X)\n"
" sudoers 파일을 바꾼 상태에서 저장하고 끝냅니다(Q)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "%s을(를) 실행할 수 없음"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: 잘못된 소유자 uid/gid를 %u/%u 값으로 설정해야 합니다\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: 잘못된 권한입니다. 0%o 모드 값을 설정해야 합니다\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: 해석 성공\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s을(를) 사용중입니다. 나중에 다시 시도하십시오"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "%s을(를) 잠글 수 없습니다"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "그래도 편집하시겠습니까? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "오류: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "경고: %4$s \"%5$s\"의 %1$s:%2$d:%3$d: 사이클"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "오류: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "경고: %s:%d:%d: %s \"%s\"을(를) 참조했지만 정의하지 않았습니다"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "경고: %s:%d:%d 사용하지 않는 %s \"%s\"이(가) 있습니다"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3037,7 +3123,7 @@ msgstr ""
"%s - sudoers 파일을 안전하게 편집합니다\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3057,34 +3143,87 @@ msgstr ""
" -s, --strict 엄격한 문법 검사 시행\n"
" -V, --version 버전 정보를 나타낸 후 빠져나갑니다\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "빈 문자열"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "빈 그룹"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "빈 네트워크 그룹"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "잘못된 행 연속 문자"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "잘못된 IPv6 주소"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "예기치 않은 개행 문자 발견"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "포함 레벨이 너무 많습니다"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u \"%s\"을(를) 해석할 수 없습니다"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file 설정 파일 경고\n"
+#~ " -h --help 도움말 메시지를 나타낸 후 나갑니다\n"
+#~ " -n, --no-fork 별도의 스레드를 만들지 않고, 전면에서 실행합니다\n"
+#~ " -R, --random-drop 연결을 쳐낼 백분율\n"
+#~ " -V, --version 버전 정보를 나타낸 후 나갑니다\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "옵션:\n"
+#~ " --help 도움말 메시지를 나타낸 후 나갑니다\n"
+#~ " -A, --accept 수락 이벤트만 전송 (입출력 안 함)\n"
+#~ " -h, --host 로그 전송 대상 호스트\n"
+#~ " -i, --iolog_id 입출력 로그를 재개할 원격 ID\n"
+#~ " -p, --port 호스트 연결시 사용할 포트 번호\n"
+#~ " -r, --restart 이전 입출력 로그 전송 다시 시작\n"
+#~ " -R, --reject 주어진 조건에 대해 명령 거절\n"
+#~ " -b, --ca-bundle 서버 인증서 검증용 인증 번들 파일\n"
+#~ " -c, --cert TLS 핸드셰이크용 인증서 파일\n"
+#~ " -k, --key 개인 키 파일\n"
+#~ " -n, --no-verify 서버 인증서를 검증하지 않음\n"
+#~ " -t, --test 선택한 입출력 로그를 병렬로 n회 전송하여 감사 서버 테스트\n"
+#~ " -V, --version 버전 정보를 나타 후 나갑니다\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "sudo_noexec 라이브러리에 있는 모조 exec 함수 미리 불러오기"
diff --git a/plugins/sudoers/po/pl.mo b/plugins/sudoers/po/pl.mo
index 4fd000ac1..e31a2796a 100644
--- a/plugins/sudoers/po/pl.mo
+++ b/plugins/sudoers/po/pl.mo
Binary files differ
diff --git a/plugins/sudoers/po/pl.po b/plugins/sudoers/po/pl.po
index 6c489fe3d..5f2adcc7d 100644
--- a/plugins/sudoers/po/pl.po
+++ b/plugins/sudoers/po/pl.po
@@ -1,13 +1,13 @@
# Polish translation for sudo/sudoers.
# This file is put in the public domain.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2020.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-17 20:30+0100\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-03 20:46+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
@@ -17,7 +17,7 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "błąd składni"
@@ -41,426 +41,459 @@ msgstr "*** informacje dotyczące BEZPIECZEŃSTWA dla %h ***"
msgid "Sorry, try again."
msgstr "Niestety, proszę spróbować ponownie."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "nie udało się przydzielić pamięci"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "skrót wymaga nazwy pliku"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "wartości \"CWD\" muszą zaczynać się od '/', '~' lub '*'"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "wartości \"CHROOT\" muszą zaczynać się od '/', '~' lub '*'"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "błąd składni, słowo zastrzeżone %s użyte jako nazwa aliasu"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "błędna wartość notbefore"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "błędna wartość notafter"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "wartość limitu czasu zbyt duża"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "błędna wartość limitu czasu"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Alias \"%s\" jest już zdefiniowany"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "błąd wewnętrzny, przepełnienie %s"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "nie udało się wykonać dup na stdin: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "nie udało się wywołać %s: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "nie udało się wykonać fork"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "nie udało się wykonać fork: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "nie udało się otworzyć potoku: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (kontynuacja polecenia) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s istnieje, ale nie jest katalogiem (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "nie udało się wykonać mkdir %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "nie udało się zmienić uprawnień %s na 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "nieoczekiwany JSON_STRING, otrzymano %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY zbyt duża"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "brak podwójnego cudzysłowu w nazwie"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "brakujący JSON_OBJECT"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "oczekiwany JSON_OBJECT, otrzymano %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "stos json wyczerpany (maksimum %u ramek)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "obiekty muszą składać się z kluczy nazwa:wartość"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "brak separatora między wartościami"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "brak klamry zamykającej"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "nieoczekiwana tablica"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "brak nawiasu zamykającego"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "nieoczekiwany łańcuch"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "brak dwukropka po nazwie"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "nieoczekiwana wartość logiczna"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "nieoczekiwana wartość pusta"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "nieoczekiwana liczba"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u nie udało się przeanalizować \"%s\""
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "błąd składni"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: błędny plik logu"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: brak pola znacznika czasu"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: znacznik czasu %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: brak pola z użytkownikiem"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: brak pola z użytkownikiem runas"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: brak pola z grupą runas"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s istnieje, ale nie jest katalogiem (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "nie udało się wykonać mkdir %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "nie udało się zmienić uprawnień %s na 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "błąd podczas czytania pliku czasu: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "błędna linia pliku czasu: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "log jest już kompletny, nie może być wznowiony"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "nie udało się wznownić logu"
@@ -485,141 +518,141 @@ msgstr "%s/%s: nie udało przesunąć %zu w przód"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "nie udało się odnaleźć punktu wznowienia [%lld, %ld] w %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "błąd maszyny stanów"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "błędny AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "błąd analizy AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "błąd tworzenia logu we/wy"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "błąd logowania zdarzenia akceptacji"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "błędny RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "błąd analizy RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "błąd logowania zdarzenia odrzucenia"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "błędny AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "błąd analizy AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "błąd logowania zdarzenia alarmu"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "błąd protokołu"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "błąd zapisu IoBuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "błąd zapisu ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "błąd zapisu CommandSuspend"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "nie rozpoznany typ ClientMessage"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "komunikat klienta zbyt duży"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "nie udało się ustawić szyfrowania TLS 1.2 na %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "nie udało się ustawić szyfrowania TLS 1.3 na %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "nie udało się uzyskać metody serwera TLS: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "nie udało się utworzyć kontekstu TLS: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "nie udało się załadować certyfikatu %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "nie udało się załadować paczki certyfikatów CA %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "nie udało się załadować klucza prywatnego %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "nie udało się ustawić parametrów Diffie-Hellmana: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "nie udało się ustawić minimalnej wersji protokołu na TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "nie udało się uzyskać zdalnego adresu IP"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Nie udało się dołączyć danych użytkownika do obiektu SSL: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -629,280 +662,290 @@ msgstr "Nie udało się dołączyć danych użytkownika do obiektu SSL: %s"
msgid "unable to add event to queue"
msgstr "nie udało się dodać zdarzenia do kolejki"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "nie udało się ustanowić gniazda nasłuchującego"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - wysłanie logu we/wy sudo na zdalny serwer\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "serwer logów sudo"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Opcje:\n"
-" -f, --file ścieżka do pliku konfiguracyjnego\n"
-" -h, --help wyświetlenie opisu i zakończenie\n"
-" -n, --no-fork bez wykonywania fork, działanie pierwszoplanowe\n"
-" -R, --random-drop procentowe prawdopodobieństwo gubienia połączeń\n"
-" -V, --version wyświetlenie informacji o wersji i zakończenie\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Opcje:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "ścieżka do pliku konfiguracyjnego"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "wyświetlenie pomocy i zakończenie"
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "bez wykonywania fork, działanie na pierwszym planie"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "procentowe prawdopodobieństwo odrzucenia połączenia"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "wyświetlenie informacji o wersji i zakończenie"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Wymagany Protobuf-C w wersji 1.3 lub wyższej"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "błędna wartość losowego gubienia: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s wersja %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS nie jest obsługiwany"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: nie jest pełną ścieżką"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d niedopasowany '[': %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s: %d błędna sekcja konfiguracji: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d błędna linia konfiguracji: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d oczekiwano nazwy sekcji: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "błędna wartość %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d nieznany klucz: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "nieznana wartość facility sysloga %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "nieznany priorytet sysloga %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Opcje:\n"
-" --help wyświetlenie opisu i zakończenie\n"
-" -A, --accept samo wysłanie zdarzenia akceptującego (bez we/wy)\n"
-" -h, --host host do wysyłania logów\n"
-" -i, --iolog_id zdalny ID logu we/wy do wznowienia\n"
-" -p, --port port do użycia przy łączeniu z hostem\n"
-" -r, --restart wznowienie poprzedniego transferu logu we/wy\n"
-" -R, --reject odrzucenie polecenia z podanego powodu\n"
-" -b, --ca-bundle paczka certyfikatów do zweryfikowania certyfikatu serwera\n"
-" -c, --cert plik certyfikatu do powitania TLS\n"
-" -k, --key plik klucza prywatnego\n"
-" -n, --no-verify bez weryfikowania certyfikatu serwera\n"
-" -t, --test test serwera audytu przez wysłanie wybranego logu we/wy N razy równolegle\n"
-" -V, --version wyświetlenie informacji o wersji i zakończenie\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "wysyłanie logu we/wy sudo na zdalny serwer"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "samo wysłanie zdarzenia akceptującego (bez we/wy)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "plik paczki certyfikatów do weryfikacji certyfikatu serwera"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "plik certyfikatu do powitania TLS"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "host do wysyłania logów"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "zdalny ID logu we/wy do wznowienia"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "plik klucza prywatnego"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "bez weryfikacji certyfikatu serwera"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "port do użycia przy łączeniu z hostem"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "wznowienie poprzedniego transferu logu we/wy"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "odrzucenie polecenia z podanym powodem"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "test serwera audytu przez wysłanie wybranego logu we/wy N razy równolegle"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "nie udało się wyszukać %s:%s: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "nie udało się uzyskać adresu IP serwera"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "nie udało się odczytać %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "komunikat klienta zbyt duży %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: bufor zapisu jest już w użyciu"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "nieoczekiwane zdarzenie we/wy %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: nieoczekiwany stan %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "błędne ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "odebrano od serwera komunikat błędu: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "odebrano od serwera komunikat zerwania: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "nie udało się rozpakować ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: nieoczekiwana wartość type_case %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "przekroczony limit czasu przy czytaniu z serwera"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "przedwczesny EOF"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "komunikat sewera zbyt duży: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "przekroczony limit czasu przy pisaniu do serwera"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "przekroczony limit czasu powitania TLS"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "nie udało się ustawić zdarzenia"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "Połączenie TLS nie powiodło się: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Nie udało się zainicjować kontekstu SSL: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Nie udało się przydzielić obiektu SSL: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Nie udało się dołączyć gniazda do obiektu SSL: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "muszą być podane jednocześnie punkt wznowienia i ID iolog"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "nie można ustawić punktu restartu, jeśli żadne we/wy nie jest wysyłane"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "zakończono przedwcześnie ze stanem %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "miniony czas wysłany do serwera [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "odebrano od serwera punkt zatwierdzenia [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Alias \"%s\" jest już zdefiniowany"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "nie udało się pobrać aktualnego czasu"
@@ -1008,38 +1051,38 @@ msgstr "%s: Nie można zweryfikować TGT! Możliwy atak!: %s"
msgid "unable to initialize PAM: %s"
msgstr "nie udało się zainicjować PAM: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Błąd uwierzytelniania PAM: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "błąd kontroli poprawności konta - konto zablokowane?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Konto lub hasło wygasło, należy ustawić ponownie hasło i spróbować jeszcze raz"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "nie udało się zmienić przedawnionego hasła: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Hasło wygasło, proszę skontaktować się z administratorem systemu"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Konto wygasło lub w konfiguracji PAM brak sekcji \"account\" dla sudo, proszę skontaktować się z administratorem systemu"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Błąd zarządzania kontem PAM: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "nie istniejesz w bazie danych %s"
@@ -1112,7 +1155,27 @@ msgstr "Nie udało się określić warunku audytowego"
msgid "unable to commit audit record"
msgstr "nie udało się zatwierdzić rekordu audytowego"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "błąd podczas czytania pliku instrukcji %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "zignorowano plik instrukcji %s: nie jest zwykłym plikiem"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "nie udało się otworzyć %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1132,21 +1195,41 @@ msgstr ""
" 3) z dużą władzą wiąże się duża odpowiedzialność.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "nieznany uid: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "nieznany użytkownik: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Błąd: %s:%d:%d: cykl w %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Uwaga: %s:%d:%d: cykl w %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Błąd: %s:%d:%d: %s \"%s\" użyty, ale nie zdefiniowany"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Uwaga: %s:%d:%d: %s \"%s\" użyty, ale nie zdefiniowany"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1162,7 +1245,7 @@ msgstr "początkowa ranga: %s: %s"
msgid "order padding: %s: %s"
msgstr "wyrównanie rangi: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s, wersja gramatyki %d\n"
@@ -1182,9 +1265,9 @@ msgstr "nieobsługiwany format wyjścia %s"
msgid "%s: input and output files must be different"
msgstr "%s: pliki wejściowy i wyjściowy muszą być różne"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "nie udało się zainicjować wartości domyślnych sudoers"
@@ -1213,37 +1296,28 @@ msgstr "błędny typ ograniczenia: %s"
msgid "invalid filter: %s"
msgstr "błędny filtr: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "nie udało się otworzyć %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "nie udało się przeanalizować pliku %s, nieznany błąd"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "błąd składni w %s w okolicy linii %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "błąd składni w %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "nie udało się zapisać do %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1252,7 +1326,7 @@ msgstr ""
"%s - konwersja między formatami pliku sudoers\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1899,6 +1973,15 @@ msgstr "Katalog główny do zmiany przed uruchomieniem polecenia: %s"
msgid "The format of logs to produce: %s"
msgstr "Format logów do tworzenia: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Włączenie obsługi RBAC SELinux"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Ścieżka do pliku tworzonego przy pierwszym uruchomieniu sudo: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1949,35 +2032,35 @@ msgstr "%s:%d:%d: błędna wartość \"%s\" dla opcji \"%s\""
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: błędna wartość \"%s\" dla opcji \"%s\""
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: wartości \"%s\" muszą zaczynać się od '/', '~' lub '*'"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: wartości \"%s\" muszą zaczynać się od '/', '~' lub '*'"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: wartości \"%s\" muszą zaczynać się od '/'"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: wartości \"%s\" muszą zaczynać się od '/'"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: uszkodzone envp, niezgodność długości"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "nie udało się przebudować środowiska"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "niestety nie jest dozwolone ustawianie następujących zmiennych środowiskowych: %s"
@@ -2041,42 +2124,42 @@ msgstr "nie udało się przeanalizować maski sieciowej \"%s\""
msgid "Local IP address and netmask pairs:\n"
msgstr "Pary lokalnych adresów IP i masek:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "nieznana grupa: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "nie udało się uaktualnić pliku sekwencji"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "nie udało się zapisać do pliku logu we/wy: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "nie udało się utworzyć %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: błąd wewnętrzny, plik logu we/wy dla zdarzenia %d nie jest otwarty"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "nie udało się odczytać zegara"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: błąd wewnętrzny, błędny sygnał %d"
@@ -2104,7 +2187,7 @@ msgstr "nie udało się zainicjować LDAP: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "wybrano start_tls, ale biblioteki LDAP nie obsługują ldap_start_tls_s() ani ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "błędny atrybut sudoOrder: %s"
@@ -2123,21 +2206,29 @@ msgstr "nieobsługiwany rodzaj URI LDAP: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "nie można mieszać URI ldap i ldaps"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "powtórka sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "nie można skonwertować sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "nie udało się otworzyć systemu audytowego"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "nie udało się wysłać komunikatu audytowego"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "błąd w pętli zdarzeń"
@@ -2159,20 +2250,20 @@ msgstr "Inicjowanie TLS nie powiodło się"
msgid "TLS handshake was unsuccessful"
msgstr "Powitanie TLS nie powiodło się"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: błąd wewnętrzny, błędny kod wyjścia %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "utracono połączenie z serwerem logów"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "brak bufora zapisu"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "nie udało się połączyć z serwerem logów"
@@ -2208,15 +2299,15 @@ msgstr "Niestety użytkownik %s nie może uruchamiać sudo na %s.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Niestety użytkownik %s nie ma uprawnień do uruchamiania '%s%s%s' jako %s%s%s na %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: nie znaleziono polecenia"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2241,12 +2332,12 @@ msgstr "błąd uwierzytelniania"
msgid "a password is required"
msgstr "wymagane jest hasło"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "nie udało się otworzyć pliku logu: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "nie udało się zapisać pliku logu: %s"
@@ -2256,7 +2347,7 @@ msgstr "nie udało się zapisać pliku logu: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "skrót dla %s (%s) nie jest w postaci %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2265,7 +2356,7 @@ msgstr ""
"\n"
"Rola LDAP: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2273,104 +2364,110 @@ msgstr ""
"\n"
"Wpis sudoers:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " Jako użytkownicy: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " Jako grupy: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Opcje: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Polecenia:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Pasujące wpisy Defaults dla %s na %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Wartości specyficzne dla Runas i Command dla %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Użytkownik %s może uruchamiać na %s następujące polecenia:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Użytkownik %s nie ma uprawnień do uruchamiania sudo na %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "zignorowano niekompletne sudoRole: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "błędny atrybut LDIF: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "błędna wartość %.*s ustawiona przez frontend sudo"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "nie udało się przeanalizować listy adresów sieciowych"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "nazwa użytkownika nie ustawiona przez frontend sudo"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "ID użytkownika nie ustawiony przez frontend sudo"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "ID grupy nie ustawiony przez frontend sudo"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "nazwa hosta nie ustawiona przez frontend sudo"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "błędny katalog roboczy: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "błędny katalog chroot: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "nie udało się wywołać %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: błędne flagi trybu z frontendu sudo: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Wersja wtyczki polityki sudoers %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Wersja gramatyki pliku sudoers %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2379,86 +2476,91 @@ msgstr ""
"\n"
"Ścieżka do sudoers: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "ścieżka do nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ścieżka do ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ścieżka do ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "nie udało się zarejestrować uchwytu typu %d (wersja %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "nie udało się wyrejestrować uchwytu typu %d (wersja %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "nie udało się zapamiętać uid-a %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "nie udało się zapamiętać uid-a %u, już istnieje"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "nie udało się zapamiętać użytkownika %s"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "nie udało się zapamiętać użytkownika %s, już istnieje"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "nie udało się zapamiętać gid-a %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "nie udało się zapamiętać gid-a %u, już istnieje"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "nie udało się zapamiętać grupy %s"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "nie udało się zapamiętać grupy %s, już istnieje"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "nie udało się zapamiętać listy grup dla %s, już istnieje"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "nie udało się zapamiętać listy grup dla %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "nie udało się przeanalizować grup dla %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "nie udało się przeanalizować gidów dla %s"
@@ -2533,135 +2635,139 @@ msgstr "nie udało się zainicjować źródła SSS. Czy SSSD jest zainstalowany
msgid "unable to find symbol \"%s\" in %s"
msgstr "nie udało się odnaleźć symbolu \"%s\" w %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "problem z wpisami domyślnymi"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "nie znaleziono poprawnych źródeł sudoers, zakończenie"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "użytkownik nie ma uprawnień do zmiany katalogu głównego na %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "brak uprawnień do używania opcji -R z %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "użytkownik nie ma uprawnień do zmiany katalogu na %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "brak uprawnień do używania opcji -D z %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "nie podano polecenia"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "wg sudoers root nie ma prawa używać sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "użytkownik nie ma pozwolenia na zmianę limitu closefrom"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "brak uprawnień do używania opcji -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "właściciel znacznika czasu (%s): nie ma takiego użytkownika"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "brak tty"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "niestety do uruchomienia sudo konieczny jest tty"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "błędna powłoka użytkownika %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "polecenie w bieżącym katalogu"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "użytkownik nie ma uprawnień do ustawienia limitu czasu polecenia"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "niestety brak uprawnień do ustawienia limitu czasu polecenia"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "użytkownik nie ma uprawnień do zachowania środowiska"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "niestety brak uprawnień do zachowania środowiska"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "polecenie zbyt długie"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit nie musi być uruchamiany przez sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "nie udało się odczytać %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "nie udało się wykonać stat na %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s nie jest zwykłym plikiem"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "właścicielem %s jest uid %u, powinien być %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s jest zapisywalny dla świata"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "właścicielem %s jest gid %u, powinien być %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "tylko root może używać \"-c %s\""
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "nieznana klasa logowania: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "nie udało się rozwiązać nazwy hosta %s"
@@ -2811,11 +2917,11 @@ msgstr ""
" -s, --speed=ile przyspieszenie lub spowolnienie wyjścia\n"
" -V, --version wyświetlenie informacji o wersji i zakończenie"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\thost nie znaleziony"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2823,7 +2929,7 @@ msgstr ""
"\n"
"Polecenie dozwolone"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2831,7 +2937,7 @@ msgstr ""
"\n"
"Polecenie niedozwolone"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2844,121 +2950,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s jest zapisywalny dla groupy"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "nie udało się uciąć pliku znacznika czasu do długości %lld"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "znacznik czasu zbyt daleko w przyszłości"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "znacznik czasu zbyt daleko w przyszłości: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "nie udało się zablokować pliku znacznika czasu %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "ścieżka stanu instrukcji zbyt długa: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit nie powinien być podawany ze ścieżką"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "opcja -x będzie usunięta w kolejnej wersji"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "należy rozważyć użycie zamiast niej narzędzia cvtsudoers"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "wciśnięcie return przejdzie do edycji %s: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "podany edytor (%s) nie istnieje"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "nie znaleziono edytora (ścieżka = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "błąd zapisu"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "nie udało się wykonać stat na pliku tymczasowym (%s), %s nie zmieniony"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "plik tymczasowy (%s) zerowej długości, %s nie zmieniony"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "błąd edytora (%s), %s nie zmieniony"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s nie zmieniony"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "nie udało się ponownie otworzyć pliku tymczasowego (%s), %s nie zmieniony."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "nie udało się przeanalizować pliku tymczasowego (%s), nieznany błąd"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "błąd wewnętrzny, nie znaleziono %s na liście!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "nie udało się ustawić (uid, gid) %s na (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s i %s nie są na tym samym systemie plików, użycie mv do zmiany nazwy"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "polecenie nie powiodło się: '%s %s %s', %s nie zmieniony"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "błąd podczas zmiany nazwy %s, %s nie zmieniony"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Co teraz? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2970,66 +3076,46 @@ msgstr ""
" (x) wyjście bez zapisu zmian do pliku sudoers\n"
" (Q) wyjście i zapisanie zmian w pliku sudoers (NIEBEZPIECZNE!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "nie udało się uruchomić %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: błędny właściciel, (uid, gid) powinny wynosić (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: błędne uprawnienia, powinny być 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: składnia poprawna\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s zajęty, proszę spróbować później"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "nie udało się zablokować %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Modyfikować mimo to? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Błąd: %s:%d:%d: cykl w %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Uwaga: %s:%d:%d: cykl w %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Błąd: %s:%d:%d: %s \"%s\" użyty, ale nie zdefiniowany"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Uwaga: %s:%d:%d: %s \"%s\" użyty, ale nie zdefiniowany"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Uwaga: %s:%d:%d: nie użyty %s \"%s\""
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3038,7 +3124,7 @@ msgstr ""
"%s - bezpieczna edycja pliku sudoers\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3058,30 +3144,30 @@ msgstr ""
" -s, --strict ścisłe sprawdzanie składni\n"
" -V, --version wyświetlenie informacji o wersji i zakończenie\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "pusty łańcuch"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "pusta grupa"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "pusta grupa sieciowa"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "błędna kontynuacja linii"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "błędny adres IPv6"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "nieoczekiwany koniec linii w łańcuchu"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "za dużo poziomów include"
diff --git a/plugins/sudoers/po/pt.mo b/plugins/sudoers/po/pt.mo
index e6c36f5bc..d153ae719 100644
--- a/plugins/sudoers/po/pt.mo
+++ b/plugins/sudoers/po/pt.mo
Binary files differ
diff --git a/plugins/sudoers/po/pt.po b/plugins/sudoers/po/pt.po
index 694df6a8a..dd0eabbb7 100644
--- a/plugins/sudoers/po/pt.po
+++ b/plugins/sudoers/po/pt.po
@@ -2,14 +2,14 @@
# Copyright (C) 2018 Free Software Foundation, Inc.
# This file is distributed under the same license as the sudo package.
# Todd C. Miller <Todd.Miller@sudo.ws>, 2011-2018
-# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020.
+# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers-1.9.4b1\n"
+"Project-Id-Version: sudoers-1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-18 07:00+0000\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-04 08:25+0000\n"
"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
"Language: pt\n"
@@ -20,7 +20,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Geany / PoHelper 1.37\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "erro de sintaxe"
@@ -44,426 +44,459 @@ msgstr "*** Informação de SEGURANÇA para %h ***"
msgid "Sorry, try again."
msgstr "Enganou-se, tente de novo."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "impossível alocar memória"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "um resumo requer um nome de caminho"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "valores para \"CWD\" têm de começar por '/', '~' ou '*'"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "valores para \"CHROOT\" têm de começar com \"/\", \"~\" ou \"*\""
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "erro de sintaxe, palavra reservada %s utilizada como nome aliás"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "valor notbefore inválido"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "valor notafter inválido"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "valor de inacção muito grande"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "valor de inacção inválido"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Aliás \"%s\" já definido"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "erro interno, transporte %s"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "impossível duplicar stdin: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "impossível executar %s: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "impossível bifurcar"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "impossível bifurcar: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "impossível abrir túnel: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (comando continuado) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s existe mas não é uma pasta (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "impossível criar pasta %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "impossível alterar o modo de %s para 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "esperado JSON_STRING, obtido %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY muito grande"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "aspas dupla em falta no nome"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "JSON_OBJECT em falta"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "esperado JSON_OBJECT, obtido %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "pilha json esgotada (máx. %u instâncias)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "os objectos têm de consistir em pares name:value"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "separador em falta entre valores"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "chaveta esquerda sem par"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "matriz inesperada"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "parêntese recto sem par"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "cadeia inesperada"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "dois pontos em falta após o nome"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "booleano inesperado"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "nulo inesperado"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "número inesperado"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u impossível analisar \"%s\""
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "erro de análise"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: ficheiro de diário inválido"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: campo de datação em falta"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: datação %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: campo de utilizador em falta"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: campo de utilizador runas em falta"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: campo de grupo runas em falta"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s existe mas não é uma pasta (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "impossível criar pasta %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "impossível alterar o modo de %s para 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "erro ao ler ficheiro de temporização: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "linha de ficheiro de temporização inválida : %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "diário já concluído, impossível reiniciar"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "impossível reiniciar o diário"
@@ -488,141 +521,141 @@ msgstr "%s/%s: impossível procurar adiante %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "impossível localizar ponto de continuação [%lld, %ld] em %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "erro da máquina de estado"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "AcceptMessage inválida"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "erro ao analisar AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "erro ao criar diário de E/S"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "erro ao registar evento de aceitação"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "RejectMessage inválida"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "erro ao analisar RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "erro ao registar evento de rejeição"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "AlertMessage inválida"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "erro ao analisar AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "erro ao registar evento de alerta"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "erro de protocolo"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "erro ao escrever IObuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "erro ao escrever ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "erro ao escrever CommandSuspend"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "tipo de ClientMessage não reconhecido"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "mensagem do cliente muito grande"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "impossível definir TLS 1.2 ciphersuite como %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "impossível definir TLS 1.3 ciphersuite como %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "impossível obter método TLS do servidor: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "impossível criar contexto TLS: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "impossível carregar certificado %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
-msgstr "Impossível carregar pacote da autoridade do certificado %s"
+msgstr "impossível carregar pacote da autoridade do certificado %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "impossível carregar chave privada %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "impossível definir parâmetros diffie-hellman: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "impossível definir versão mínima do protocolo como TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "impossível obter endereço IP remoto"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
-msgstr "impossível anexar dados do utilizador ao objecto ssl: %s"
+msgstr "Impossível anexar dados do utilizador ao objecto ssl: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -632,280 +665,290 @@ msgstr "impossível anexar dados do utilizador ao objecto ssl: %s"
msgid "unable to add event to queue"
msgstr "impossível adicionar evento à fila"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "impossível definir o socket de escuta"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - enviar diário sudo E/S para o servidor remoto\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "servidor de diário sudo"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Opções:\n"
-" -f, --file caminho para o ficheiro de configuração\n"
-" -h --help mostrar a mensagem de ajuda e sair\n"
-" -n, --no-fork não bifurcar, executar em 2º plano\n"
-" -R, --random-drop percentagem de hipóteses das ligações caírem\n"
-" -V, --version mostrar informação da versão e sair\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Opções:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "caminho do ficheiro de configuração"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "mostrar mensagem de ajuda e sair"
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "não bifurcar, executar em 2º plano"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "probabilidade das ligações caírem"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "mostrar informação da versão e sair"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Requerida a versão Protobuf-C 1.3 ou superior"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "valor de queda aleatório inválido: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s versão %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "TLS não suportado"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: não é um caminho completamente qualificado"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d \"[\" sem par: %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d secção de configuração inválida: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d linha de configuração inválida: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d esperado um nome de secção: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "valor inválido para %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d chave desconhecida: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "facilidade syslog desconhecida %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "prioridade syslog desconhecida %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Opções:\n"
-" --help mostrar a mensagem de ajuda e sair\n"
-" -A, --accept enviar só um evento de aceitação (sem E/S)\n"
-" -h, --host anfitrião a quem enviar os diários\n"
-" -i, --iolog_id ID remota do diário de E/S a resumir\n"
-" -p, --port porta a usar ao ligar ao anfitrião\n"
-" -r, --restart reiniciar a transferência de diário de E/S prévia\n"
-" -R, --reject rejeitar o comando com o motivo dado\n"
-" -b, --ca-bundle ficheiro de pacote de certificados para comparar com o do servidor\n"
-" -c, --cert ficheiro de certificado para o handshake TLS\n"
-" -k, --key ficheiro de chave privada\n"
-" -n, --no-verify não verificar o certificado do servidor\n"
-" -t, --test testar servidor de auditoria enviando o diário de E/S seleccionado n vezes em paralelo\n"
-" -V, --version mostrar informação da versão e sair\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "%s - enviar diário sudo E/S para o servidor remoto"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "enviar só um evento de aceitação (sem E/S)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "ficheiro de pacote de certificados contra o qual verificar o certificado do servidor"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "ficheiro de certificado para o TLS handshake"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "anfitrião para onde enviar os diários"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "ID remota do diário de E/S a retomar"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "ficheiro de chave privada"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "não verificar certificado do servidor"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "porta a usar ao ligar ao anfitrião"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "reiniciar transferência do diário de E/S prévia"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "rejeitar o comando com o motivo indicado"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "testar servidor de auditoria enviando o diário de E/S seleccionado n vezes em paralelo"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "impossível procurar %s:%s: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "impossível obter endereço IP do servidor"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "impossível ler %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "mensagem do cliente muito grande: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: buffer de escrita já em uso"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "evento de E/S %d inesperado"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: estado %d inesperado"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "ServerHello inválido"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "recebida mensagem de erro do servidos: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "recebida mensagem de aborto do servidos: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "impossível desempacotar ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: valor type_case %d inesperado"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "leitura do servidor expirou"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "EOF prematuro"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "mensagem do servidor muito grande: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "escrita no servidor expirou"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
-msgstr "handshake TLS expirou"
+msgstr "TLS handshake expirou"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "impossível definir o evento"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
-msgstr "falha na ligação TLS: %s"
+msgstr "Falha na ligação TLS: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
-msgstr "impossível inicializar contexto ssl: %s"
+msgstr "Impossível inicializar contexto ssl: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Impossível alocar objecto ssl: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Impossível anexar socket ao objecto ssl: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "tem de especificar o ponto de reinício e a ID iolog"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "impossível definir um ponto de reinício sem E/S enviada"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "saída prematura com o estado %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "tempo decorrido de envio para o servidor [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "ponto de submissão recebido do servidor [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Aliás \"%s\" já definido"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "impossível obter hora do dia"
@@ -1011,38 +1054,38 @@ msgstr "%s: Impossível verificar TGT! Possível ataque!: %s"
msgid "unable to initialize PAM: %s"
msgstr "impossível inicializar PAM: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "erro de autenticação PAM: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "falha na validação de conta, tem a conta trancada?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Conta ou senha expiradas, reponha a sua senha e tente novamente"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "impossível alterar senha expirada: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Senha expirada, contacte o administrador do sistema"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Conta expirada ou configuração PAM sem secção \"account\" para sudo, contacte o administrador do sistema"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Erro de gestão de conta PAM: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "utilizador não existente na base de dados %s"
@@ -1069,7 +1112,7 @@ msgstr "gestão de autenticação inválida para SecurID"
#: plugins/sudoers/auth/securid5.c:119
msgid "SecurID communication failed"
-msgstr "falha na comunicação SecurID"
+msgstr "Falha na comunicação SecurID"
#: plugins/sudoers/auth/securid5.c:123 plugins/sudoers/auth/securid5.c:210
msgid "unknown SecurID error"
@@ -1115,7 +1158,27 @@ msgstr "Impossível determinar condição de auditoria"
msgid "unable to commit audit record"
msgstr "impossível submeter registo de auditoria"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "erro ao ler ficheiro de palestra %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "a ignorar ficheiro de palestra %s: não é um ficheiro normal"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "impossível abrir %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1135,21 +1198,41 @@ msgstr ""
" 3) lembre-se que com grande poder vem grande responsabilidade.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "uid desconhecida: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "utilizador desconhecido: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Erro: %s:%d:%d: ciclo em %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Aviso: %s:%d:%d: ciclo em %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Erro: %s:%d:%d: %s \"%s\" referenciado mas não definido"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Aviso: %s:%d:%d: %s \"%s\" referenciado mas não definido"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1165,7 +1248,7 @@ msgstr "ordem inicial: %s: %s"
msgid "order padding: %s: %s"
msgstr "espaço de ordem: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s versão gramatical %d\n"
@@ -1185,9 +1268,9 @@ msgstr "formato de saída %s não suportado"
msgid "%s: input and output files must be different"
msgstr "%s: os ficheiros de entrada e saída têm de ser diferentes"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "impossível inicializar valores predefinidos de sudoers"
@@ -1216,37 +1299,28 @@ msgstr "tipo de supressão inválido: %s"
msgid "invalid filter: %s"
msgstr "filtro inválido: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "impossível abrir %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "falha ao analisar o ficheiro %s, erro desconhecido"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "erro de análise em %s, perto da linha %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "erro de análise em %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "impossível escrever em %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1255,7 +1329,7 @@ msgstr ""
"%s - converte entre formatos de ficheiros sudoers\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1889,18 +1963,27 @@ msgstr "Definir o anfitrião remoto pam como o nome do anfitrião local"
#: plugins/sudoers/def_data.c:562
#, c-format
msgid "Working directory to change to before executing the command: %s"
-msgstr "pasta de trabalho a alterar antes de executar o comando: %s"
+msgstr "Pasta de trabalho a alterar antes de executar o comando: %s"
#: plugins/sudoers/def_data.c:566
#, c-format
msgid "Root directory to change to before executing the command: %s"
-msgstr "pasta raiz a alterar antes de executar o comando: %s"
+msgstr "Pasta raiz a alterar antes de executar o comando: %s"
#: plugins/sudoers/def_data.c:570
#, c-format
msgid "The format of logs to produce: %s"
msgstr "O formato de diários a produzir: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Activar suporte a SELinux RBAC"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Caminho para o ficheiro criado na 1ª execução de sudo: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1951,35 +2034,35 @@ msgstr "%s:%d:%d: valor \"%s\" é inválido para a opção \"%s\""
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s valor \"%s\" é inválido para a opção \"%s\""
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: valores para \"%s\" têm de começar com \"/\", \"~\" ou \"*\""
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: valores para \"%s\" têm de começar com \"/\", \"~\" ou \"*\""
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: valores para \"%s\" têm de começar com \"/\""
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s valores para \"%s\" têm de começar com \"/\""
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: envp corrompido, tamanho trocado"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "impossível reconstruir o ambiente"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "desculpe, não tem permissão para definir as seguintes variáveis de ambiente: %s"
@@ -2043,42 +2126,42 @@ msgstr "impossível analisar netmask \"%s\""
msgid "Local IP address and netmask pairs:\n"
msgstr "Pares endereço IP local e netmask:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "grupo desconhecido: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "impossível actualizar o ficheiro de sequência"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "impossível escrever no ficheiro de E/S: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "impossível criar %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: erro interno, ficheiro de diário E/S do evento %d não aberto"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "impossível ler o relógio"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: erro interno, sinal inválido %d"
@@ -2106,7 +2189,7 @@ msgstr "impossível inicializar LDAP: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls especificado mas LDAP libs não suporta ldap_start_tls_s() ou ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "atributo sudoOrder inválido: %s"
@@ -2125,21 +2208,29 @@ msgstr "tipo de uri LDAP não suportado: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "impossível misturar URIs ldap e ldaps"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "sudoOption duplicada: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "impossível converter sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "impossível abrir o sistema de auditoria"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "impossível enviar mensagem de auditoria"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "erro no ciclo do evento"
@@ -2159,22 +2250,22 @@ msgstr "Inicialização TLS sem sucesso"
#: plugins/sudoers/log_client.c:528
msgid "TLS handshake was unsuccessful"
-msgstr "handshake TLS sem sucesso"
+msgstr "TLS handshake sem sucesso"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: erro interno, sinal de saída %d inválido"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "ligação ao servidor de diários perdida"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "buffer de escrita em falta"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "impossível ligar ao servidor de diários"
@@ -2210,15 +2301,15 @@ msgstr "Desculpe, %s não pode executar sudo em %s.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Desculpe, %s não tem permissão para executar \"%s%s%s\" como %s%s%s em %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: comando não encontrado"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2242,12 +2333,12 @@ msgstr "falha de autenticação"
msgid "a password is required"
msgstr "é necessária uma senha"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "impossível abrir o diário: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "impossível escrever o diário: %s"
@@ -2257,7 +2348,7 @@ msgstr "impossível escrever o diário: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "resumo para %s (%s) não está na forma %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2266,7 +2357,7 @@ msgstr ""
"\n"
"Papel LDAP: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2274,104 +2365,110 @@ msgstr ""
"\n"
"Entrada sudoers:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAsUsers: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAsGroups: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Opções: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Comandos:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Entradas Defaults correspondentes para %s em %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Predefinições Runas específicas de comandos para %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "O utilizador %s pode executar os seguintes comandos em %s:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "O utilizador %s não tem permissão para executar sudo em %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "a ignorar sudoRole incompleto: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "atributo LDIF inválido: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "%.*s inválido definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "impossível analisar a lista de endereços da rede"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "nome de utilizador não definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "ID de utilizador não definida pelo front-end do sudo"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "ID de grupo não definida pelo front-end do sudo"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
-msgstr "Nome de anfitrião não definido pelo front-end do sudo"
+msgstr "nome de anfitrião não definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "pasta de trabalho inválida: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "pasta chroot inválida: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "impossível executar %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: bandeiras de modo inválidas do front-end do sudo: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Extensão de política sudoers versão %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Gramática do ficheiro sudoers versão %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2380,86 +2477,91 @@ msgstr ""
"\n"
"Caminho do sudoers: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "caminho nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "caminho do ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "caminho do ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "impossível registar hook do tipo %d (versão %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "impossível de-registar hook do tipo %d (versão %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "impossível guardar uid %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "impossível guardar uid %u, já existe"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "impossível guardar utilizador %s"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "impossível guardar utilizador %s, já existe"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "impossível guardar gid %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "impossível guardar gid %u, já existe"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "impossível guardar grupo %s"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "impossível guardar grupo %s, já existe"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "impossível guardar lista de grupo para %s, já existe"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "impossível guardar lista de grupos para %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "impossível analisar grupos para %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "impossível analisar gids para %s"
@@ -2534,135 +2636,139 @@ msgstr "impossível inicializar fonte SSS. Tem o SSSD instalado?"
msgid "unable to find symbol \"%s\" in %s"
msgstr "impossível encontrar símbolo \"%s\" em %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "problema com entradas defaults"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "sme fontes sudoers válidas, a sair"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "utilizador sem permissão para alterar pasta chroot para %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "não tem permissão para usar a opção -R com %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "utilizador sem permissão para alterar pasta para %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "não tem permissão para usar a opção -D com %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "Comando negado"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers especifica que root não tem permissão para sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "utilizador não autorizado a sobrepor o limite closefrom"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "não tem permissão para usar a opção -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "dono da datação (%s): utilizador inexistente"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "sem tty"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "desculpe, tem de ter um tty para executar sudo"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "shell inválida para o utilizador %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "comando na pasta actual"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "utilizador sem permissão para definir um tempo de expiração"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "desculpe, não tem permissão para definir um tempo de inacção"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "utilizador sem permissão para definir preservar o ambiente"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "desculpe, não tem permissão para preservar o ambiente"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "comando muito longo"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit não precisa de ser executado via sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "impossível ler %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "impossível obter informações de %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s não é um ficheiro normal"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s é propriedade de uid %u, deveria ser %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s é escrito universalmente"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s é propriedade de gid %u, deveria ser %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "só root pode usar \"-c %s\""
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "classe de sessão desconhecida: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "impossível resolver o anfitrião %s"
@@ -2812,11 +2918,11 @@ msgstr ""
" -s, --speed=número acelera ou trava a saída\n"
" -V, --version mostra informação da versão e sai"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\thost sem correspondência"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2824,7 +2930,7 @@ msgstr ""
"\n"
"Comando permitido"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2832,7 +2938,7 @@ msgstr ""
"\n"
"Comando negado"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2845,121 +2951,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s é escrito pelo grupo"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "impossível truncar o ficheiro de datação para %lld bytes"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "a ignorar datação do futuro"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "datação demasiado no futuro: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "impossível bloquear ficheiro de datação %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "caminho do estado da lição de moral muito longo: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit não deve ser especificado com um caminho"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "a opção -x será removida numa futura versão"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "por favor, considere usar antes o utilitário cvtsudoers"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "prima Enter para editar %s: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "o editor especificado (%s) não existe"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "sem editor (caminho do editor = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "erro de escrita"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "impossível obter informação do ficheiro temporário (%s), %s inalterado"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "ficheiro temporário de tamanho zero (%s), %s inalterado"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "falha no editor (%s), %s inalterado"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s inalterado"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "impossível reabrir o ficheiro temporário (%s), %s inalterado."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "impossível analisar o ficheiro temporário (%s), erro desconhecido"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "erro interno, impossível encontrar %s na lista!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "impossível definir (uid, gid) de %s para (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s e %s em sistemas de ficheiros diferentes, a usar mv para renomear"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "falha no comando: \"%s %s %s\", %s inalterado"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "erro ao renomear %s, %s inalterado"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
-msgstr "E agora?"
+msgstr "E agora? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2971,66 +3077,46 @@ msgstr ""
" (x) sair sem gravar as alterações ao ficheiro sudoers\n"
" (Q) sair e gravar as alterações ao ficheiro sudoers (PERIGO!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "impossível executar %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: dono errrado (uid, gid), deveria ser (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: permissões erradas, devia ser modo 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: análise com sucesso\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s ocupado, tente mais tarde"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "impossível bloquear %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Editar mesmo assim ? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Erro: %s:%d:%d: ciclo em %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Aviso: %s:%d:%d: ciclo em %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Erro: %s:%d:%d: %s \"%s\" referenciado mas não definido"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Aviso: %s:%d:%d: %s \"%s\" referenciado mas não definido"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Aviso: %s:%d:%d: não usado %s \"%s\""
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3039,7 +3125,7 @@ msgstr ""
"%s - editar com segurança o ficheiro sudoers\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3059,34 +3145,87 @@ msgstr ""
" -s, --strict verificação de sintaxe estrita\n"
" -V, --version mostra informação da versão e sai\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "cadeia vazia"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "grupo vazio"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "grupo de rede vazio"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "continuação de linha inválida"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "endereço IPv6 inválido"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "quebra de linha inesperada em cadeia"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "demasiados níveis de includes"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u impossível analisar \"%s\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Opções:\n"
+#~ " -f, --file caminho para o ficheiro de configuração\n"
+#~ " -h --help mostrar a mensagem de ajuda e sair\n"
+#~ " -n, --no-fork não bifurcar, executar em 2º plano\n"
+#~ " -R, --random-drop percentagem de hipóteses das ligações caírem\n"
+#~ " -V, --version mostrar informação da versão e sair\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Opções:\n"
+#~ " --help mostrar a mensagem de ajuda e sair\n"
+#~ " -A, --accept enviar só um evento de aceitação (sem E/S)\n"
+#~ " -h, --host anfitrião a quem enviar os diários\n"
+#~ " -i, --iolog_id ID remota do diário de E/S a resumir\n"
+#~ " -p, --port porta a usar ao ligar ao anfitrião\n"
+#~ " -r, --restart reiniciar a transferência de diário de E/S prévia\n"
+#~ " -R, --reject rejeitar o comando com o motivo dado\n"
+#~ " -b, --ca-bundle ficheiro de pacote de certificados para comparar com o do servidor\n"
+#~ " -c, --cert ficheiro de certificado para o handshake TLS\n"
+#~ " -k, --key ficheiro de chave privada\n"
+#~ " -n, --no-verify não verificar o certificado do servidor\n"
+#~ " -t, --test testar servidor de auditoria enviando o diário de E/S seleccionado n vezes em paralelo\n"
+#~ " -V, --version mostrar informação da versão e sair\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "Pré-carregar as funções dummy exec contidas na biblioteca sudo_noexec"
diff --git a/plugins/sudoers/po/pt_BR.mo b/plugins/sudoers/po/pt_BR.mo
index 9babef6e0..ce3fc9eca 100644
--- a/plugins/sudoers/po/pt_BR.mo
+++ b/plugins/sudoers/po/pt_BR.mo
Binary files differ
diff --git a/plugins/sudoers/po/pt_BR.po b/plugins/sudoers/po/pt_BR.po
index 81064cf61..2caa76d33 100644
--- a/plugins/sudoers/po/pt_BR.po
+++ b/plugins/sudoers/po/pt_BR.po
@@ -1,15 +1,15 @@
# Brazilian Portuguese translation for sudoers plugin.
# Traduções em português brasileiro para o pacote sudoers.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2021 Free Software Foundation, Inc.
# This file is distributed under the same license as the sudo package.
-# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2020.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-23 08:55-0300\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-04 05:00-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
"Language: pt_BR\n"
@@ -20,7 +20,7 @@ msgstr ""
"X-Generator: Gtranslator 3.38.0\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "erro de sintaxe"
@@ -44,428 +44,461 @@ msgstr "*** Informação de SEGURANÇA para %h ***"
msgid "Sorry, try again."
msgstr "Sinto muito, tente novamente."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "não foi possível alocar memória"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "um digest requer um nome de caminho"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "valores para \"CWD\" devem iniciar com um \"/\", \"~\" ou \"*\""
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "valores para \"CHROOT\" devem iniciar com um \"/\", \"~\" ou \"*\""
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "erro de sintaxe, palavra reservada %s usada como um nome de alias"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "valor de notbefore inválido"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "falha de notafter inválido"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "valor de timeout grande demais"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "valor de timeout inválido"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Alias \"%s\" já definido"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "erro interno, estouro de pilha de %s"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "não foi possível fazer dup da entrada padrão: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "não foi possível executar %s: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "não foi possível fazer fork"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "não foi possível fazer fork: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "não foi possível abrir um encadeamento (pipe): %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (comando continuado) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s existe, mas não é um diretório (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "não foi possível fazer mkdir %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "não foi possível alterar modo de %s para 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "esperava JSON_STRING, obteve %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY grande demais"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "faltando aspas duplas no nome"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "faltando JSON_OBJECT"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "esperava JSON_OBJECT, obteve %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "pilha json esgotada (máx %u quadros)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "objetos devem consistir de pares nome:valor"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "faltando separador entre valores"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "chave de fechamento sem correspondente"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "array inesperado"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "colchete de fechamento sem correspondente"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "string inesperada"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "faltando caractere de dois pontos após o nome"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "booleano inesperado"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "nulo inesperado"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "número inesperado"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u não foi possível analisar \"%s\""
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "erro de análise"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: arquivo de log inválido"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: campo de marca de tempo está faltando"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: marca de tempo %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: campo de usuário está faltando"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: campo de usuário, a ser executado como, está faltando"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: campo de grupo, a ser executado como, está faltando"
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s existe, mas não é um diretório (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "não foi possível fazer mkdir %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "não foi possível alterar modo de %s para 0%o"
+
# timing é o nome do arquivo gerado pelo sudo; não traduzir.
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "erro ao ler o arquivo timing: %s"
# timing é o nome do arquivo gerado pelo sudo; não traduzir.
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "linha inválida no arquivo timing: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "o log já está completo, não é possível ser reiniciado"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "não foi possível reiniciar o log"
@@ -490,141 +523,141 @@ msgstr "%s/%s: não foi possível buscar para frente %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "não foi possível localizar o ponto de resumo [%lld, %ld] em %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "erro na máquina de estado"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "AcceptMessage inválido"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "erro ao analisar AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "erro ao criar o log de E/S"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "erro a registrar log de evento de aceite"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "RejectMessage inválido"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "erro ao analisar RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "erro a registrar log de evento de rejeição"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "AlertMessage inválido"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "erro ao analisar AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "erro a registrar log de evento de alerta"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "erro de protocolo"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "erro ao escrever IoBuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "erro ao escrever ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "erro ao escrever CommandSuspend"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "tipo não reconhecido de ClientMessage"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "mensagem do cliente grande demais"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "não foi possível definir conjunto de cifras TLS 1.2 para %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "não foi possível definir conjunto de cifras TLS 1.3 para %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "não foi possível obter o método do servidor TLS: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "não foi possível criar o contexto de TLS: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "não foi possível carregar o certificado %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "não foi possível carregar o novo pacote de autoridade certificadora %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "não foi possível carregar a chave privada %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "não foi possível definir os parâmetros de diffie-hellman: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "não foi possível definir a versão mínima do protocolo para TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "não foi possível obter o endereço IP remoto"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Não foi possível anexar dados do usuário ao objeto ssl: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -634,283 +667,291 @@ msgstr "Não foi possível anexar dados do usuário ao objeto ssl: %s"
msgid "unable to add event to queue"
msgstr "não foi possível adicionar evento para a fila"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "não foi possível configurar soquete de escuta"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - envia log de E/S do sudo para servidor remoto\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "servidor de log do sudo"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Opções:\n"
-" -f, --file caminho para o arquivo de configuração\n"
-" -h, --help exibe uma mensagem de ajuda e sai\n"
-" -n, --no-fork não faz fork, executa em primeiro plano\n"
-" -R, --random-drop chance em porcentagem das conexões caírem\n"
-" -V, --version exibe a informação da versão e sai\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Opções:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "caminho para o arquivo de autenticação"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "exibe uma mensagem de ajuda e sai"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "não faz fork, executa em primeiro plano"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "chance em porcentagem das conexões caírem"
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "exibe as informações de versão e sai"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Protobuf-C versão 1.3 ou superior é necessário"
# "random-drop" foi uma escolha por fazer referência à opção de linha de comando -- Rafael
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "valor de \"random-drop\" inválido: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s versão %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "sem suporte a TLS"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: não um caminho totalmente qualificado"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d \"[\" sem correspondente: %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d seção inválida de configuração: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d linha inválida de configuração: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d esperava um nome de seção: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "valor inválido para %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d chave desconhecida: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "facilidade de syslog desconhecida %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "prioridade de syslog desconhecida %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Opções:\n"
-" --help exibe mensagem de ajuda e sai\n"
-" -A, --accept só envia um evento de aceite (sem E/S)\n"
-" -h, --host máquina a ser enviado logs\n"
-" -i, --iolog_id ID remoto do log de E/S para ser resumido\n"
-" -p, --port porta para usar ao conectar à máquina\n"
-" -r, --restart reinicia transferência anterior de log de E/S\n"
-" -R, --reject rejeita a comando com o motivo dado\n"
-" -b, --ca-bundle arquivo de pacote de certificados para verificar\n"
-" o certificado do servidor\n"
-" -c, --cert arquivo de certificado para negociação TLS\n"
-" -k, --key arquivo de chave privada\n"
-" -n, --no-verify não verifica o certificado do servidor\n"
-" -t, --test teste o servidor de auditoria enviando o log de\n"
-" E/S selecionado n vezes em paralelo\n"
-" -V, --version exibe informações de versão e sai\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "envia log de E/S do sudo para servidor remoto"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "só envia um evento de aceite (sem E/S)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "arquivo de pacote de certificados para verificar o certificado do servidor"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "arquivo de certificado para negociação TLS"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "máquina a ser enviado logs"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "ID remoto do log de E/S para ser resumido"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "arquivo de chave privada"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "não verifica o certificado do servidor"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "porta para usar ao conectar à máquina"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "reinicia transferência anterior de log de E/S"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "rejeita a comando com o motivo dado"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "testa o servidor de auditoria enviando o log de E/S selecionado n vezes em paralelo"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "não foi possível procurar %s:%s: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "não foi possível obter o endereço IP"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "não foi possível ler %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "mensagem do cliente grande demais: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: buffer de escrita já em uso"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "E/S com evento inesperado %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: estado inesperado %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "ServerHello inválido"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "mensagem de erro recebida do servidor: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "mensagem de abortar recebida do servidor: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "não foi possível desempacotar ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: type_case com valor inesperado %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "esgotado o tempo limite de leitura do servidor"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "EOF prematuro"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "mensagem do servidor grande demais: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "esgotado o tempo limite de escrita para servidor"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "esgotado o tempo limite da negociação TLS"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "não foi possível definir evento"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "falha de conexão de TLS: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Não foi possível inicializar o contexto de ssl: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Não foi possível alocar objeto ssl: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Não foi possível anexar soquete ao objeto ssl: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "ambos ponto de ponto de reinício e ID do iolog devem ser especificados"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "um ponto de reinício pode não estar definido quando nenhuma E/S é enviada"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "sai prematuramente com estado %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "tempo decorrido enviado ao servidor [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "ponto de confirmação recebido do servidor [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Alias \"%s\" já definido"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "não foi possível obter o horário do dia"
@@ -1016,38 +1057,38 @@ msgstr "%s: Não foi possível verificar TGT! Possivelmente um ataque!: %s"
msgid "unable to initialize PAM: %s"
msgstr "não foi possível inicializar PAM: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Erro de autenticação PAM: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "falha de verificação da conta; sua conta está travada?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Conta ou senha expirou; redefina sua senha e tente novamente"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "não foi possível alterar a senha expirada: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Senha expirou; entre em contato com o administrador do seu sistema"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Conta expirou ou a configuração do PAM não possui uma seção \"account\" para sudo; contate o administrador do seu sistema"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "erro de gerenciamento de conta PAM: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "você não existe no banco de dados de %s"
@@ -1120,7 +1161,27 @@ msgstr "Não foi possível determinar a condição de auditoria"
msgid "unable to commit audit record"
msgstr "não foi possível enviar o registro de auditoria"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "erro ao ler o arquivo de instruções: %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "ignorando o arquivo de instruções %s: não é um arquivo comum"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "não foi possível abrir %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1140,21 +1201,41 @@ msgstr ""
" #3) Com grandes poderes vêm grandes responsabilidades.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "uid desconhecido: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "usuário desconhecido: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Erro: %s:%d:%d: ciclo em %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Aviso: %s:%d:%d: ciclo em %s \"%s\""
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Erro: %s:%d:%d: %s \"%s\" referenciado, mas não definido"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Aviso: %s:%d:%d: %s \"%s\" referenciado, mas não definido"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1170,7 +1251,7 @@ msgstr "ordem inicial: %s: %s"
msgid "order padding: %s: %s"
msgstr "preenchimento de ordem: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "gramática de %s versão %d\n"
@@ -1190,9 +1271,9 @@ msgstr "formato de saída sem suporte %s"
msgid "%s: input and output files must be different"
msgstr "%s: arquivos de entrada e saída devem ser diferentes"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "não foi possível inicializar valores padrões do sudoers"
@@ -1221,37 +1302,28 @@ msgstr "tipo de supressão inválida: %s"
msgid "invalid filter: %s"
msgstr "filtro inválido: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "não foi possível abrir %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "falha em analisar o arquivo %s, erro desconhecido"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "erro de análise em %s perto da linha %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "erro de análise em \"%s\"\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "não foi possível gravar em %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1260,7 +1332,7 @@ msgstr ""
"%s - converte entre formatos de arquivo sudoers\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1909,6 +1981,15 @@ msgstr "Diretório raiz para o qual alterar antes de executar o comando: %s"
msgid "The format of logs to produce: %s"
msgstr "O formato dos logs para produzir: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Habilita suporte a RBAC no SELinux"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Caminho para o arquivo que é criado na primeira execução do sudo: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1959,35 +2040,35 @@ msgstr "%s:%d:%d: valor \"%s\" é inválido para a opção \"%s\""
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: o valor \"%s\" é inválido para a opção \"%s\""
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: valores para \"%s\" devem iniciar com um \"/\", \"~\" ou \"*\""
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: valores para \"%s\" devem iniciar com um \"/\", '~', ou '*'"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: valores para \"%s\" devem iniciar com um \"/\""
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: valores para \"%s\" devem iniciar com um \"/\""
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: envp corrompido, cumprimento não confere"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "não foi possível recompilar o ambiente"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "sinto muito, você não tem permissão para definir as seguintes variáveis de ambiente: %s"
@@ -2051,42 +2132,42 @@ msgstr "não foi possível analisar a máscara de rede \"%s\""
msgid "Local IP address and netmask pairs:\n"
msgstr "Par de endereço IP e máscara de rede locais:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "grupo desconhecido %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "não foi possível atualizar o arquivo de sequência"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "não foi possível gravar no arquivo de log de E/S: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "não foi possível criar %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: erro interno, o arquivo de log de E/S para evento %d não está aberto"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "não foi possível ler do relógio"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: erro interno, sinal inválido %d"
@@ -2114,7 +2195,7 @@ msgstr "não foi possível inicializar LDAP: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls especificado, mas bibliotecas LDAP não possuem suporte a ldap_start_tls_s() ou ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "atributo sudoOrder inválido: %s"
@@ -2133,21 +2214,29 @@ msgstr "tipo de uri LDAP sem suporte: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "não foi possível misturar ldap e ldaps URIs"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "sudoOption duplicado: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "não foi possível converter sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "não foi possível abrir o sistema de auditoria"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "não foi possível enviar mensagem de auditoria"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "erro no evento de loop"
@@ -2169,20 +2258,20 @@ msgstr "A inicialização do TLS não teve êxito"
msgid "TLS handshake was unsuccessful"
msgstr "A negociação TLS não teve êxito"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: erro interno, status de saída inválido %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "conexão perdida com o servidor de log"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "faltando buffer de escrita"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "não foi possível conectar ao servidor de log"
@@ -2218,15 +2307,15 @@ msgstr "Sinto muito, usuário %s não pode executar sudo em %s.\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Sinto muito, usuário %s não tem permissão para executar \"%s%s%s\" como %s%s%s em %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: comando não encontrado"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2250,12 +2339,12 @@ msgstr "falha de autenticação"
msgid "a password is required"
msgstr "uma senha é necessária"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "não foi possível abrir o arquivo de log: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "não foi possível gravar no arquivo de log: %s"
@@ -2265,7 +2354,7 @@ msgstr "não foi possível gravar no arquivo de log: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "digest de %s (%s) não está na forma %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2274,7 +2363,7 @@ msgstr ""
"\n"
"Papel LDAP: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2282,104 +2371,110 @@ msgstr ""
"\n"
"Entradas no sudoers:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " UsuáriosRunAs: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " GruposRunAs: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Opções: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Comandos:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Entradas de Defaults correspondentes a %s em %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Padrão específico de comandos e \"runas\" de %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Usuário %s pode executar os seguintes comandos em %s:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Usuário %s não tem permissão para executar sudo em %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "ignorando sudoRole incompleto: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "atributo LDIF inválido: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "%.*s inválido definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "não foi possível analisar a lista de endereços de rede"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "nome de usuário não definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "ID de usuário não definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "ID de grupo não definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "nome da máquina não definido pelo front-end do sudo"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "diretório de trabalho inválido: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "diretório de chroot inválido: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "não foi possível executar %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: opções de modo inválidas pelo front-end do sudo: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Versão de plug-in de política do sudoers %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Versão de gramática de arquivo do sudoers %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2388,86 +2483,91 @@ msgstr ""
"\n"
"Caminho do sudoers: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "caminho do nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "caminho do ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "caminho do ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "não foi possível registrar hook do tipo %d (versão %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "não foi possível cancelar registro de hook do tipo %d (versão %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "não foi possível fazer cache de uid %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "não foi possível fazer cache de uid %u, já existe"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "não foi possível fazer cache de usuário %s"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "não foi possível fazer cache de usuário %s, já existe"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "não foi possível fazer cache de gid %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "não foi possível fazer cache de gid %u, já existe"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "não foi possível fazer cache de grupo %s"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "não foi possível fazer cache de grupo %s, já existe"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "não foi possível fazer cache da lista de grupos de %s, já existe"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "não foi fazer cache de lista de grupos para %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "não foi possível analisar grupos de %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "não foi possível analisar os gids de %s"
@@ -2542,135 +2642,139 @@ msgstr "não foi possível inicializar a fonte SSS. SSSD está instalado em sua
msgid "unable to find symbol \"%s\" in %s"
msgstr "não foi possível localizar símbolo \"%s\" em %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "problema com o entradas padrão"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "nenhuma fonte de sudoers válida encontrada; saindo"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "usuário sem permissão para alterar o diretório raiz para %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "você não tem permissão para usar a opção -R com %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "usuário sem permissão para alterar o diretório para %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "você não tem permissão para usar a opção -D com %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "nenhum comando especificado"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers especifica que o root não tem permissão para usar sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "usuário sem permissão para substituir o limite closefrom"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "você não tem permissão para usar a opção -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "dono da marca de tempo (%s): Usuário inexistente"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "nenhum tty"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "sinto muito, você deve ter um tty para executar sudo"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "shell inválido para o usuário %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "comando no diretório atual"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "usuário sem permissão para definir um tempo limite de comando"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "sinto muito, você não tem permissão para definir um tempo limite de comando"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "usuário sem permissão para preservar o ambiente"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "sinto muito, você não tem permissão para preservar o ambiente"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "comando muito grande"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit não precisa ser executado via sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "não foi possível ler %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "não foi possível obter o estado de %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s não é um arquivo comum"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s tem como dono o uid %u, deveria ser %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s é gravável globalmente"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s tem como dono o gid %u, deveria ser %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "apenas o root pode usar \"-c %s\""
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "classe de login desconhecida: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "não foi possível resolver máquina %s"
@@ -2823,11 +2927,11 @@ msgstr ""
" -s, --speed=núm aumenta ou diminui a velocidade da saída\n"
" -V, --version exibe a informação da versão e sai"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\tmáquina sem correspondente"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2835,7 +2939,7 @@ msgstr ""
"\n"
"Comando permitido"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2843,7 +2947,7 @@ msgstr ""
"\n"
"Comando negado"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2856,121 +2960,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s é gravável pelo grupo"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "não foi possível truncar o arquivo de marca de tempo para %lld bytes"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "ignorado marca de tempo no futuro"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "marca de tempo muito a frente no futuro: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "não foi possível travar o arquivo de marca de tempo %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "caminho de status de instruções muito longo: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit não deve ser especificado com um caminho"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "a opção -x será removida em um lançamento futuro"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "por favor, em vez disso, considere usar o utilitário cvtsudoers"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "pressione enter para editar %s: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "editor especificado (%s) não existe"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "nenhum editor encontrado (caminho do editor = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "erro de escrita"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "não foi possível obter estado de arquivo temporário (%s), %s sem alteração"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "arquivo de temporário (%s) com comprimento zero, %s sem alteração"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "editor (%s) falhou, %s sem alteração"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s sem alteração"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "não foi possível reabrir arquivo temporário (%s), %s sem alteração."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "não foi possível analisar arquivo temporário (%s), erro desconhecido"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "erro interno, não foi possível localizar %s na lista!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "não foi possível definir (uid, gid) de %s para (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s e %s não estão no mesmo sistema de arquivos, usando mv para renomear"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "comando \"%s %s %s\" falhou, %s sem alteração"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "erro ao renomear %s, %s sem alteração"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "Agora o que? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2982,66 +3086,46 @@ msgstr ""
" e(x)it - sair sem salvar alterações no arquivo sudoers\n"
" (Q)uit - sair e salvar alterações no arquivo sudoers (PERIGO!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "não foi possível executar %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: dono (uid, gid) incorreto; deveria ser (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: permissões incorretas; deveria estar no modo 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: análise OK\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s ocupado, tente novamente"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "não foi possível travar %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Editar mesmo assim? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Erro: %s:%d:%d: ciclo em %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Aviso: %s:%d:%d: ciclo em %s \"%s\""
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Erro: %s:%d:%d: %s \"%s\" referenciado, mas não definido"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Aviso: %s:%d:%d: %s \"%s\" referenciado, mas não definido"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Aviso: %s:%d:%d: %s não usado \"%s\""
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3050,7 +3134,7 @@ msgstr ""
"%s - edita o arquivo sudoers com segurança\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3070,34 +3154,89 @@ msgstr ""
" -s, --strict verificação rigorosa de sintaxe\n"
" -V, --version exibe a informação da versão e sai\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "string vazia"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "grupo vazio"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "netgroup vazio"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "continuação de linha inválida"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "endereço IPv6 inválido"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "quebra de linha inesperada na string"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "níveis de inclusões demais"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u não foi possível analisar \"%s\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Opções:\n"
+#~ " -f, --file caminho para o arquivo de configuração\n"
+#~ " -h, --help exibe uma mensagem de ajuda e sai\n"
+#~ " -n, --no-fork não faz fork, executa em primeiro plano\n"
+#~ " -R, --random-drop chance em porcentagem das conexões caírem\n"
+#~ " -V, --version exibe a informação da versão e sai\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Opções:\n"
+#~ " --help exibe mensagem de ajuda e sai\n"
+#~ " -A, --accept só envia um evento de aceite (sem E/S)\n"
+#~ " -h, --host máquina a ser enviado logs\n"
+#~ " -i, --iolog_id ID remoto do log de E/S para ser resumido\n"
+#~ " -p, --port porta para usar ao conectar à máquina\n"
+#~ " -r, --restart reinicia transferência anterior de log de E/S\n"
+#~ " -R, --reject rejeita a comando com o motivo dado\n"
+#~ " -b, --ca-bundle arquivo de pacote de certificados para verificar\n"
+#~ " o certificado do servidor\n"
+#~ " -c, --cert arquivo de certificado para negociação TLS\n"
+#~ " -k, --key arquivo de chave privada\n"
+#~ " -n, --no-verify não verifica o certificado do servidor\n"
+#~ " -t, --test teste o servidor de auditoria enviando o log de\n"
+#~ " E/S selecionado n vezes em paralelo\n"
+#~ " -V, --version exibe informações de versão e sai\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "Pré-carrega as funções de exec de teste contidas na biblioteca sudo_noexec"
diff --git a/plugins/sudoers/po/sudoers.pot b/plugins/sudoers/po/sudoers.pot
index e63b49b7c..91b8af18e 100644
--- a/plugins/sudoers/po/sudoers.pot
+++ b/plugins/sudoers/po/sudoers.pot
@@ -5,9 +5,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.5\n"
+"Project-Id-Version: sudo 1.9.6\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\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,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
-#: confstr.sh:1 gram.y:1075
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr ""
@@ -41,44 +41,45 @@ msgstr ""
msgid "Sorry, try again."
msgstr ""
-#: gram.y:224 gram.y:290 gram.y:297 gram.y:304 gram.y:311 gram.y:318 gram.y:338
-#: gram.y:362 gram.y:369 gram.y:376 gram.y:383 gram.y:390 gram.y:459 gram.y:468
-#: gram.y:479 gram.y:514 gram.y:521 gram.y:528 gram.y:535 gram.y:562 gram.y:658
-#: gram.y:665 gram.y:674 gram.y:683 gram.y:700 gram.y:838 gram.y:845 gram.y:853
-#: gram.y:859 gram.y:967 gram.y:974 gram.y:981 gram.y:988 gram.y:995
-#: gram.y:1021 gram.y:1028 gram.y:1035 gram.y:1123 gram.y:1244 gram.y:1534
-#: lib/eventlog/eventlog.c:288 lib/eventlog/eventlog.c:360
-#: lib/eventlog/eventlog.c:761 lib/eventlog/eventlog.c:825
-#: lib/eventlog/eventlog.c:1070 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:305
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_util.c:106 lib/iolog/iolog_util.c:115
-#: lib/iolog/iolog_util.c:125 lib/iolog/iolog_util.c:133
-#: lib/iolog/iolog_util.c:137 lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/audit.c:115 plugins/sudoers/audit.c:265
-#: plugins/sudoers/auth/bsdauth.c:143 plugins/sudoers/auth/kerb5.c:118
-#: plugins/sudoers/auth/kerb5.c:144 plugins/sudoers/auth/pam.c:669
-#: plugins/sudoers/auth/rfc1938.c:111 plugins/sudoers/auth/sia.c:59
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338 gram.y:362
+#: gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424 gram.y:496 gram.y:506
+#: gram.y:518 gram.y:562 gram.y:571 gram.y:580 gram.y:589 gram.y:619 gram.y:716
+#: gram.y:724 gram.y:735 gram.y:747 gram.y:766 gram.y:914 gram.y:922 gram.y:932
+#: gram.y:938 gram.y:1060 gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095
+#: gram.y:1124 gram.y:1133 gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650
+#: gram.y:1700 lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
+#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:764 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
-#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:634
-#: plugins/sudoers/defaults.c:927 plugins/sudoers/defaults.c:1102
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
@@ -92,378 +93,406 @@ msgstr ""
#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
-#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:603
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
-#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1951
-#: plugins/sudoers/log_client.c:2008 plugins/sudoers/logging.c:100
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:277 plugins/sudoers/match_command.c:445
-#: plugins/sudoers/match_command.c:495 plugins/sudoers/match_command.c:569
-#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:199
-#: plugins/sudoers/parse.c:213 plugins/sudoers/parse.c:230
-#: plugins/sudoers/parse.c:244 plugins/sudoers/parse.c:264
-#: plugins/sudoers/parse.c:275 plugins/sudoers/parse_ldif.c:153
-#: plugins/sudoers/parse_ldif.c:184 plugins/sudoers/parse_ldif.c:253
-#: plugins/sudoers/parse_ldif.c:260 plugins/sudoers/parse_ldif.c:265
-#: plugins/sudoers/parse_ldif.c:341 plugins/sudoers/parse_ldif.c:352
-#: plugins/sudoers/parse_ldif.c:379 plugins/sudoers/parse_ldif.c:396
-#: plugins/sudoers/parse_ldif.c:408 plugins/sudoers/parse_ldif.c:412
-#: plugins/sudoers/parse_ldif.c:426 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:624 plugins/sudoers/parse_ldif.c:649
-#: plugins/sudoers/parse_ldif.c:707 plugins/sudoers/parse_ldif.c:724
-#: plugins/sudoers/parse_ldif.c:752 plugins/sudoers/parse_ldif.c:759
-#: plugins/sudoers/policy.c:526 plugins/sudoers/policy.c:874
-#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:194
-#: plugins/sudoers/pwutil.c:265 plugins/sudoers/pwutil.c:343
-#: plugins/sudoers/pwutil.c:517 plugins/sudoers/pwutil.c:581
-#: plugins/sudoers/pwutil.c:652 plugins/sudoers/pwutil.c:811
-#: plugins/sudoers/pwutil.c:867 plugins/sudoers/pwutil.c:911
-#: plugins/sudoers/pwutil.c:968 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
+#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
+#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
+#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
+#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
+#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
+#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:298
-#: plugins/sudoers/sudoers.c:324 plugins/sudoers/sudoers.c:368
-#: plugins/sudoers/sudoers.c:379 plugins/sudoers/sudoers.c:389
-#: plugins/sudoers/sudoers.c:431 plugins/sudoers/sudoers.c:792
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
-#: plugins/sudoers/timestamp.c:967 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:129
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:916
-#: toke.l:1036 toke.l:1094
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr ""
-#: gram.y:556
+#: gram.y:613
msgid "a digest requires a path name"
msgstr ""
-#: gram.y:585
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr ""
-#: gram.y:597
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr ""
-#: gram.y:719
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr ""
-#: gram.y:739
+#: gram.y:809
msgid "invalid notbefore value"
msgstr ""
-#: gram.y:747
+#: gram.y:818
msgid "invalid notafter value"
msgstr ""
-#: gram.y:756 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr ""
-#: gram.y:758 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr ""
-#: gram.y:1077
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr ""
-#: gram.y:1121
+#: gram.y:1229
#, c-format
msgid "Alias \"%s\" already defined"
msgstr ""
-#: gram.y:1534 lib/eventlog/eventlog.c:288 lib/eventlog/eventlog.c:761
-#: lib/eventlog/eventlog.c:823 lib/eventlog/eventlog.c:824
-#: lib/eventlog/eventlog.c:1070 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1290 logsrvd/logsrvd.c:1303
-#: logsrvd/logsrvd.c:1348 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:265 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:634
-#: plugins/sudoers/defaults.c:927 plugins/sudoers/defaults.c:1102
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:686 plugins/sudoers/log_client.c:704
-#: plugins/sudoers/log_client.c:1413 plugins/sudoers/log_client.c:1626
-#: plugins/sudoers/log_client.c:1951 plugins/sudoers/log_client.c:2008
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:276 plugins/sudoers/match_command.c:444
-#: plugins/sudoers/match_command.c:494 plugins/sudoers/match_command.c:569
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:298
-#: plugins/sudoers/sudoers.c:324 plugins/sudoers/sudoers.c:368
-#: plugins/sudoers/sudoers.c:379 plugins/sudoers/sudoers.c:389
-#: plugins/sudoers/sudoers.c:431 plugins/sudoers/sudoers.c:792
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
-#: plugins/sudoers/timestamp.c:967 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:916
-#: toke.l:1036 toke.l:1094
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr ""
-#: lib/eventlog/eventlog.c:293 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:92
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr ""
-#: lib/eventlog/eventlog.c:351
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:396
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:436 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr ""
-#: lib/eventlog/eventlog.c:444 lib/eventlog/eventlog.c:498
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:488
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr ""
-#: lib/eventlog/eventlog.c:902
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr ""
-#: lib/eventlog/eventlog.c:931
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr ""
-#: lib/iolog/iolog_fileio.c:155
+#: lib/iolog/iolog_json.c:115
#, c-format
-msgid "%s exists but is not a directory (0%o)"
+msgid "expected JSON_STRING, got %d"
msgstr ""
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:352
+msgid "missing double quote in name"
msgstr ""
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:453
#, c-format
-msgid "unable to change mode of %s to 0%o"
+msgid "expected JSON_OBJECT, got %d"
msgstr ""
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:599
#, c-format
-msgid "expected JSON_STRING, got %d"
+msgid "json stack exhausted (max %u frames)"
msgstr ""
-#: lib/iolog/iolog_json.c:327
-msgid "missing double quote in name"
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
msgstr ""
-#: lib/iolog/iolog_json.c:414
-#, c-format
-msgid "expected JSON_OBJECT, got %d"
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
msgstr ""
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr ""
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr ""
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr ""
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr ""
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr ""
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr ""
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr ""
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
msgstr ""
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr ""
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr ""
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr ""
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr ""
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr ""
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr ""
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr ""
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr ""
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr ""
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr ""
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr ""
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr ""
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr ""
@@ -489,8 +518,8 @@ msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr ""
#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
-#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:521 logsrvd/logsrvd.c:572
-#: logsrvd/logsrvd.c:604 logsrvd/logsrvd.c:636
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr ""
@@ -526,103 +555,103 @@ msgstr ""
msgid "invalid AlertMessage"
msgstr ""
-#: logsrvd/logsrvd.c:498
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr ""
-#: logsrvd/logsrvd.c:506
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr ""
-#: logsrvd/logsrvd.c:527 logsrvd/logsrvd.c:578 logsrvd/logsrvd.c:610
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr ""
-#: logsrvd/logsrvd.c:537
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr ""
-#: logsrvd/logsrvd.c:589
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr ""
-#: logsrvd/logsrvd.c:621
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr ""
-#: logsrvd/logsrvd.c:706
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr ""
-#: logsrvd/logsrvd.c:977
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr ""
-#: logsrvd/logsrvd.c:1207 logsrvd/logsrvd.c:1215
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1235 logsrvd/logsrvd.c:1243
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1279
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1284
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1291 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr ""
-#: logsrvd/logsrvd.c:1304 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr ""
-#: logsrvd/logsrvd.c:1349 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr ""
-#: logsrvd/logsrvd.c:1366 logsrvd/logsrvd.c:1375
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1388
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1573
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr ""
-#: logsrvd/logsrvd.c:1601 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr ""
-#: logsrvd/logsrvd.c:1609 logsrvd/logsrvd.c:1731 logsrvd/logsrvd.c:1833
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
-#: plugins/sudoers/log_client.c:2016 plugins/sudoers/log_client.c:2024
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -632,253 +661,290 @@ msgstr ""
msgid "unable to add event to queue"
msgstr ""
-#: logsrvd/logsrvd.c:1785 logsrvd/logsrvd.c:2027
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr ""
-#: logsrvd/logsrvd.c:1933 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
msgstr ""
-#: logsrvd/logsrvd.c:1936
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr ""
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
msgstr ""
-#: logsrvd/logsrvd.c:1988 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr ""
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr ""
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr ""
+
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr ""
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr ""
-#: logsrvd/logsrvd.c:2006
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr ""
-#: logsrvd/logsrvd.c:2010 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr ""
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr ""
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:410 logsrvd/logsrvd_conf.c:655
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr ""
-#: logsrvd/logsrvd_conf.c:769
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:780
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:788
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:794
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:808
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:816
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:1005
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:1009 logsrvd/logsrvd_conf.c:1013
-#: logsrvd/logsrvd_conf.c:1017
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr ""
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert "
-"against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n "
-"times in parallel\n"
-" -V, --version display version information and exit\n"
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr ""
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
msgstr ""
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr ""
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr ""
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr ""
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr ""
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr ""
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr ""
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr ""
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr ""
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr ""
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr ""
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr ""
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr ""
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr ""
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:692
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr ""
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr ""
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr ""
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr ""
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1466
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr ""
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1540
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr ""
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1553
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr ""
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1572
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr ""
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1603
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr ""
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr ""
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr ""
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1760
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr ""
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr ""
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr ""
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr ""
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr ""
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr ""
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr ""
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr ""
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr ""
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr ""
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr ""
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr ""
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr ""
-#: plugins/sudoers/audit.c:261 plugins/sudoers/audit.c:400
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr ""
@@ -982,40 +1048,40 @@ msgstr ""
msgid "unable to initialize PAM: %s"
msgstr ""
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr ""
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr ""
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr ""
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr ""
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr ""
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid ""
"Account expired or PAM config lacks an \"account\" section for sudo, contact "
"your system administrator"
msgstr ""
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr ""
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr ""
@@ -1102,12 +1168,12 @@ msgstr ""
msgid "ignoring lecture file %s: not a regular file"
msgstr ""
-#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:617
-#: plugins/sudoers/cvtsudoers.c:634 plugins/sudoers/cvtsudoers.c:1244
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
-#: plugins/sudoers/sudoers.c:1053 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
-#: plugins/sudoers/visudo.c:922
+#: plugins/sudoers/visudo.c:913
#, c-format
msgid "unable to open %s"
msgstr ""
@@ -1125,20 +1191,40 @@ msgid ""
msgstr ""
#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
-#: plugins/sudoers/sudoers.c:835 plugins/sudoers/sudoers.c:856
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr ""
#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1091
-#: plugins/sudoers/sudoers.c:438 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr ""
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr ""
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr ""
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr ""
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr ""
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1154,7 +1240,7 @@ msgstr ""
msgid "order padding: %s: %s"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr ""
@@ -1174,9 +1260,9 @@ msgstr ""
msgid "%s: input and output files must be different"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:176
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr ""
@@ -1205,35 +1291,35 @@ msgstr ""
msgid "invalid filter: %s"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
"\n"
msgstr ""
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1876,6 +1962,11 @@ msgstr ""
msgid "Enable SELinux RBAC support"
msgstr ""
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr ""
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1926,35 +2017,35 @@ msgstr ""
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr ""
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr ""
-#: plugins/sudoers/defaults.c:1038
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr ""
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr ""
-#: plugins/sudoers/defaults.c:1053
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr ""
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr ""
-#: plugins/sudoers/env.c:1135
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr ""
-#: plugins/sudoers/env.c:1209
+#: plugins/sudoers/env.c:1169
#, c-format
msgid ""
"sorry, you are not allowed to set the following environment variables: %s"
@@ -2019,42 +2110,42 @@ msgstr ""
msgid "Local IP address and netmask pairs:\n"
msgstr ""
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:443
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr ""
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr ""
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr ""
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr ""
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr ""
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:836
-#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr ""
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1199
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr ""
@@ -2084,7 +2175,7 @@ msgid ""
"ldap_start_tls_s_np()"
msgstr ""
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr ""
@@ -2103,7 +2194,15 @@ msgstr ""
msgid "unable to mix ldap and ldaps URIs"
msgstr ""
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr ""
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr ""
@@ -2117,7 +2216,7 @@ msgid "unable to send audit message"
msgstr ""
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2032
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr ""
@@ -2144,15 +2243,15 @@ msgstr ""
msgid "%s: internal error, invalid exit status %d"
msgstr ""
-#: plugins/sudoers/log_client.c:1723 plugins/sudoers/log_client.c:1747
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr ""
-#: plugins/sudoers/log_client.c:1824
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr ""
-#: plugins/sudoers/log_client.c:1973
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr ""
@@ -2188,15 +2287,15 @@ msgstr ""
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr ""
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:581
-#: plugins/sudoers/sudoers.c:583 plugins/sudoers/sudoers.c:585
-#: plugins/sudoers/sudoers.c:587 plugins/sudoers/sudoers.c:737
-#: plugins/sudoers/sudoers.c:739
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr ""
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:577
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2233,203 +2332,214 @@ msgstr ""
msgid "digest for %s (%s) is not in %s form"
msgstr ""
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
"LDAP Role: %s\n"
msgstr ""
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
msgstr ""
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr ""
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr ""
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr ""
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr ""
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr ""
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr ""
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr ""
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr ""
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr ""
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr ""
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr ""
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr ""
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr ""
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr ""
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr ""
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr ""
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr ""
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr ""
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr ""
-#: plugins/sudoers/policy.c:1114
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr ""
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1116
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr ""
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
"Sudoers path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1125
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1126
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr ""
-#: plugins/sudoers/policy.c:1159
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr ""
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr ""
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr ""
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr ""
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr ""
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr ""
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr ""
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr ""
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr ""
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr ""
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr ""
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr ""
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr ""
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr ""
@@ -2504,135 +2614,139 @@ msgstr ""
msgid "unable to find symbol \"%s\" in %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:212 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr ""
-#: plugins/sudoers/sudoers.c:216
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr ""
-#: plugins/sudoers/sudoers.c:290
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:317
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:318
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:349
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr ""
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr ""
-#: plugins/sudoers/sudoers.c:409
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr ""
-#: plugins/sudoers/sudoers.c:410
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr ""
-#: plugins/sudoers/sudoers.c:470
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr ""
-#: plugins/sudoers/sudoers.c:485
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr ""
-#: plugins/sudoers/sudoers.c:486
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr ""
-#: plugins/sudoers/sudoers.c:493
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:576
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr ""
-#: plugins/sudoers/sudoers.c:595
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr ""
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr ""
-#: plugins/sudoers/sudoers.c:605
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr ""
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr ""
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr ""
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr ""
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr ""
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1115
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr ""
-#: plugins/sudoers/sudoers.c:1094 toke.l:1120
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr ""
-#: plugins/sudoers/sudoers.c:1098 toke.l:1123
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr ""
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr ""
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr ""
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr ""
@@ -2769,23 +2883,23 @@ msgid ""
" -V, --version display version information and exit"
msgstr ""
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr ""
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
msgstr ""
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
msgstr ""
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2820,97 +2934,97 @@ msgstr ""
msgid "lecture status path too long: %s/%s"
msgstr ""
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr ""
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr ""
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr ""
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr ""
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr ""
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr ""
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr ""
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr ""
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr ""
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr ""
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr ""
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr ""
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr ""
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr ""
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr ""
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr ""
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr ""
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr ""
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr ""
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2918,73 +3032,53 @@ msgid ""
" (Q)uit and save changes to sudoers file (DANGER!)\n"
msgstr ""
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr ""
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr ""
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr ""
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr ""
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr ""
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr ""
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr ""
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr ""
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr ""
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr ""
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr ""
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr ""
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
"\n"
msgstr ""
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -2996,30 +3090,30 @@ msgid ""
" -V, --version display version information and exit\n"
msgstr ""
-#: toke.l:182
+#: toke.l:187
msgid "empty string"
msgstr ""
-#: toke.l:192 toke.l:494
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr ""
-#: toke.l:200 toke.l:492
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr ""
-#: toke.l:296 toke.l:308 toke.l:320 toke.l:336 toke.l:355 toke.l:395
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr ""
-#: toke.l:531 toke.l:543
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr ""
-#: toke.l:767
+#: toke.l:779
msgid "unexpected line break in string"
msgstr ""
-#: toke.l:1087
+#: toke.l:1109
msgid "too many levels of includes"
msgstr ""
diff --git a/plugins/sudoers/po/uk.mo b/plugins/sudoers/po/uk.mo
index 893265c87..f55c111fd 100644
--- a/plugins/sudoers/po/uk.mo
+++ b/plugins/sudoers/po/uk.mo
Binary files differ
diff --git a/plugins/sudoers/po/uk.po b/plugins/sudoers/po/uk.po
index a9d76a85f..b62c4a6d8 100644
--- a/plugins/sudoers/po/uk.po
+++ b/plugins/sudoers/po/uk.po
@@ -1,13 +1,13 @@
# Ukrainian translation for sudoers.
# This file is put in the public domain.
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-17 18:30+0200\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-03 20:45+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -18,7 +18,7 @@ msgstr ""
"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Lokalize 20.11.70\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "синтаксична помилка"
@@ -42,426 +42,459 @@ msgstr "*** Дані щодо ЗАХИСТУ %h ***"
msgid "Sorry, try again."
msgstr "Вибачте, повторіть спробу."
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "не вдалося отримати потрібний об’єм пам’яті"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "для контрольної суми слід вказати шлях"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "значення «CWD» мають починатися з «/», «~» або «*»"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "значення «CHROOT» мають починатися з «/», «~» або «*»"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "синтаксична помилка, як назву замінника використано зарезервоване слово %s"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "некоректне значення notbefore"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "некоректне значення notafter"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "значення часу очікування є надто великим"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "некоректне значення часу очікування"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "Замінник «%s» вже визначено"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "внутрішня помилка, переповнення %s"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "не вдалося здублювати stdin: %m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "не вдалося виконати %s: %m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "не вдалося створити відгалуження"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "не вдалося створити відгалуження: %m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "не вдалося відкрити канал: %m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (команда продовжується) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s існує, але не є каталогом (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "не вдалося створити каталог %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "не вдалося змінити режим доступу до %s на значення 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "мало бути використано JSON_STRING, отримано %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY є надто великим"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "пропущено подвійні лапки у назві"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "пропущено JSON_OBJECT"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "мало бути використано JSON_OBJECT, отримано %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "вичерпано стек json (у стеку має бути не більше %u кадрів)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "об'єкти мають складатися з пар «назва:значення»"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "пропущено роздільник між значеннями"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "завершальна фігурна дужка без початкової"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "неочікуваний масив"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "завершальна дужка без початкової"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "неочікуваний рядок"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "пропущено двокрапку після назви"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "неочікуване булеве значення"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "неочікуване порожнє значення"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "неочікуване число"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u не вдалося обробити «%s»"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "помилка обробки"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s: некоректний файл журналу"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s: не вказано даних щодо часової позначки"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s: часова позначка %s: %s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s: не вказано даних щодо користувача"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s: не вказано даних щодо користувача, від імені якого відбуватиметься виконання"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s: не вказано даних щодо групи, від імені якої відбуватиметься виконання"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s існує, але не є каталогом (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "не вдалося створити каталог %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "не вдалося змінити режим доступу до %s на значення 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "помилка під час спроби читання файла часових позначок: %s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "некоректний рядок у файлі timing: %s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "журнал вже завершено — його не можна перезапустити"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "не вдалося перезапустити журнал"
@@ -486,141 +519,141 @@ msgstr "%s/%s: неможливо виконати позиціювання вп
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "не вдалося знайти точку відновлення [%lld, %ld] у %s/%s"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "помилка скінченного автомата"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "некоректне AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "помилка під час спроби обробити AcceptMessage"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "помилка під час створення журналу введення-виведення"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "помилка під час обробки події підтвердження дії журналу"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "некоректне RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "помилка під час проби обробити RejectMessage"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "помилка під час обробки події відмови у записі до журналу"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "некоректне AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "помилка під час спроби обробити AlertMessage"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "помилка під час обробки події критичного повідомлення журналу"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "помилка протоколу"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "помилка під час спроби записати IoBuffer"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "помилка під час спроби записати ChangeWindowSize"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "помилка під час спроби записати CommandSuspend"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "нерозпізнаний тип ClientMessage"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "повідомлення клієнта є надто великим"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "не вдалося встановити комплекс шифрування TLS 1.2 у %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "не вдалося встановити комплекс шифрування TLS 1.3 у %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "не вдалося отримати спосіб TLS сервера: %s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "не вдалося створити контекст TLS: %s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "не вдалося завантажити сертифікат %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "не вдалося завантажити комплект служби сертифікації %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "не вдалося завантажити закритий ключ %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "не вдалося встановити параметри Діфі-Гелмана: %s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "не вдалося встановити мінімальну версію протоколу у значення TLS 1.2: %s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "не вдалося отримати віддалену IP-адресу"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "Не вдалося долучити дані користувача до об'єкта SSL: %s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -630,281 +663,290 @@ msgstr "Не вдалося долучити дані користувача д
msgid "unable to add event to queue"
msgstr "не вдалося додати подію до черги обробки"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "не вдалося налаштувати сокет очікування на дані"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s — надсилання журналу введення-виведення sudo на віддалений сервер\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "сервер журналу sudo"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Параметри:\n"
-" -f, --file шлях до файла налаштувань\n"
-" -h --help показати довідкове повідомлення і вийти\n"
-" -n, --no-fork не відгалужувати, запустити на передньому плані\n"
-" -R, --random-drop ймовірність скидання з'єднань у відсотках\n"
-" -V, --version вивести дані щодо версії і завершити роботу\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "Параметри:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "шлях до файла налаштувань"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "показати довідкове повідомлення і завершити роботу"
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "не відгалужувати, не переходити у фоновий режим під час виконання"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "ймовірність розірвання з'єднання"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "показати дані щодо версії і завершити роботу"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "Потрібна версія Protobuf-C 1.3 або новіша"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "некоректне значення ймовірності скидання: %s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s, версія %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "Підтримки TLS не передбачено"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s: не є повноцінним записом шляхуnot a fully qualified path"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d «[» без пари: %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d некоректний розділ налаштувань: %s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d некоректний рядок налаштувань: %s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d мало бути вказано назву розділу: %s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "некоректне значення %s: %s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d невідомий ключ: %s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "невідома можливість syslog %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "невідома пріоритетність syslog %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"Параметри:\n"
-" --help вивести довідкове повідомлення і завершити роботу\n"
-" -A, --accept надсилати лише подію прийняття (без введення-виведення)\n"
-" -h, --host вказати вузол для надсилання журналів\n"
-" -i, --iolog_id вказати ідентифікатор журналу введення-виведення, яки слід відновити\n"
-" -p, --port вказати порт, яким слід скористатися для з'єднання з вузлом\n"
-" -r, --restart перезапустити попереднє передавання журналу введення-виведення\n"
-" -R, --reject відмовити у виконанні команди із зазначенням вказаної причини\n"
-" -b, --ca-bundle вказати файла пакета сертифікатів для перевірки сертифіката сервера\n"
-" -c, --cert вказати файл сертифіката для узгодження зв'язку TLS\n"
-" -k, --key вказати файл закритого ключа\n"
-" -n, --no-verify не перевіряти сертифікат сервера\n"
-" -t, --test перевірити сервер аудиту надсиланням вибраного журналу введення-виведення\n"
-" паралельно n разів\n"
-" -V, --version вивести дані щодо версії і завершити роботу\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "надіслати журнал введення-виведення sudo на віддалений сервер"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "надіслати лише подію прийняття (без введення-виведення)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "файл пакунка сертифікатів, за яким слід перевіряти сертифікат сервера"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "файл сертифіката для підтвердження зв'язку TLS"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "вузол, на який слід надіслати журнал"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "віддалений ідентифікатор журналу введення-виведення, який слід продовжити"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "файл закритого ключа"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "не перевіряти сертифікат сервера"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "порт, яким слід скористатися для з'єднання із вузлом"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "перезапустити попередній обмін даними журналу введення-виведення"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "відкинути команду із вказаною причиною"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "перевірити сервер аудиту надсиланням вибраного журналу введення-виведення n разів у паралельному режимі"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "не вдалося виконати пошук %s:%s: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "не вдалося отримати IP-адресу сервера"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "не вдалося прочитати %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "повідомлення клієнта є надто довгим: %zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s: буфер запису вже використовується"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "неочікувана подія введення-виведення — %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s: неочікуваний стан — %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "некоректне ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "отримано повідомлення про помилку від сервера: %s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "отримано повідомлення про переривання від сервера: %s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "не вдалося розпакувати ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s: неочікуване значення type_case — %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "перевищено час очікування на читання з сервера"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "передчасне завершення файла"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "повідомлення сервера є надто великим: %u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "перевищено час очікування на запис на сервері"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "сталося перевищення часу очікування на узгодження зв'язку TLS"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "не вдалося встановити подію"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "Не вдалося встановити з'єднання TLS: %s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "Не вдалося ініціалізувати контекст SSL: %s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "Не вдалося розмістити об'єкт SSL у пам'яті: %s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "Не вдалося долучити сокет до об'єкта SSL: %s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "слід вказати одночасно точку перезапуску та ідентифікатор журналу введення-виведення"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "точку перезапуску не можна встановлювати, якщо не надсилається жодних даних введення-виведення"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "передчасний вихід зі станом %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "на сервер надіслано дані щодо часу, який лишився [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "отримано точку внеску від сервера [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "Замінник «%s» вже визначено"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "не вдалося отримати дані щодо пори доби"
@@ -1010,38 +1052,38 @@ msgstr "%s: спроба перевірки TGT зазнала невдачі!
msgid "unable to initialize PAM: %s"
msgstr "не вдалося ініціалізувати PAM: %s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "Помилка розпізнавання PAM: %s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "помилка під час спроби перевірки облікового запису. Ваш обліковий запис заблоковано?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "Строк дії облікового запису або пароля збіг, визначте новий пароль і повторіть спробу"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "не вдалося змінити пароль, строк дії якого завершився: %s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "Строк дії пароля збіг, зверніться до адміністратора вашої системи щодо поновлення пароля"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "Строк дії облікового запису збіг або у файлі налаштувань PAM немає розділу \"account\" для sudo. Повідомте про це адміністратора вашої системи."
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "Помилка керування обліковими записами PAM: %s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "вас немає у базі даних %s"
@@ -1114,7 +1156,27 @@ msgstr "Не вдалося визначити умови аудита"
msgid "unable to commit audit record"
msgstr "не вдалося надіслати запис аудита"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "помилка під час спроби читання файла настанов %s"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "ігноруємо файл настанов %s: він не є звичайним файлом"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "не вдалося відкрити %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1134,21 +1196,41 @@ msgstr ""
" #3) Користування широкими правами розширює сферу відповідальності.\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "невідоме значення uid: %u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "невідомий користувач: %s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Помилка: %s:%d:%d: цикл у %s «%s»"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "Попередження: %s:%d:%d: цикл у %s «%s»"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Помилка: виявлено посилання %s:%d:%d: %s «%s», яке не визначено"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "Попередження: виявлено посилання %s:%d:%d: %s «%s», яке не визначено"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1164,7 +1246,7 @@ msgstr "початковий порядок: %s: %s"
msgid "order padding: %s: %s"
msgstr "доповнення порядку: %s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "Граматична перевірка %s, версія %d\n"
@@ -1184,9 +1266,9 @@ msgstr "непідтримуваний формат виведення, %s"
msgid "%s: input and output files must be different"
msgstr "%s: файли вхідних і вихідних даних мають бути різними файлами"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "не вдалося ініціалізувати типові значення sudoers"
@@ -1215,37 +1297,28 @@ msgstr "некоректний тип придушення: %s"
msgid "invalid filter: %s"
msgstr "некоректний фільтр: %s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "не вдалося відкрити %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "не вдалося обробити файл %s, невідома помилка"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "помилка обробки у %s поблизу рядка %d\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "помилка обробки у %s\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "не вдалося виконати запис до %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1254,7 +1327,7 @@ msgstr ""
"%s — перетворення форматів файлів sudoers\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1900,6 +1973,15 @@ msgstr "Кореневий каталог, до якого слід перейт
msgid "The format of logs to produce: %s"
msgstr "Формат журналу: %s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "Увімкнути підтримку RBAC SELinux"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "Шлях до файла, який було створено під час першого запуску sudo: %s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1950,35 +2032,35 @@ msgstr "%s:%d:%d: значення «%s» є некоректним для па
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s: значення «%s» є некоректним для параметра «%s»"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: значення для «%s» має починатися з «/», «~» або «*»"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: значення для «%s» має починатися з «/», «~» або «*»"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: значення для «%s» має починатися з «/»"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s: значення для «%s» має починатися з «/»"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv: помилкове значення envp, невідповідність довжин"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "не вдалося перебудувати середовище"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "вибачте, вам не дозволено встановлювати такі змінні середовища: %s"
@@ -2042,42 +2124,42 @@ msgstr "не вдалося обробити маску мережі «%s»"
msgid "Local IP address and netmask pairs:\n"
msgstr "Пари локальних IP-адрес і масок мережі:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "невідома група: %s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "не вдалося оновити файл послідовності"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "не вдалося здійснити запис до файла журналу введення-виведення: %s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "не вдалося створити %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s: внутрішня помилка, файл журналу введення-виведення для події %d не відкрито"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "не вдалося прочитати час на годиннику"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s: внутрішня помилка, некоректний сигнал %d"
@@ -2105,7 +2187,7 @@ msgstr "не вдалося ініціалізувати LDAP: %s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "start_tls вказано, але у бібліотеках LDAP не передбачено підтримки ldap_start_tls_s() або ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "некоректний атрибут sudoOrder: %s"
@@ -2124,21 +2206,29 @@ msgstr "непідтримуваний тип адреси LDAP: %s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "не можна використовувати суміш з адрес ldap і ldaps"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "дублювання sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "не вдалося перетворити запис sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "не вдалося відкрити систему аудита"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "не вдалося надіслати повідомлення аудита"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "помилка у циклі обробки подій"
@@ -2160,20 +2250,20 @@ msgstr "Спроба ініціалізувати TLS завершилася н
msgid "TLS handshake was unsuccessful"
msgstr "Спроба узгодити зв'язок TLS завершилася невдало"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s: внутрішня помилка, некоректний стан виходу %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "втрачено зв’язок з сервером журналу"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "не вказано буфер запису"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "не вдалося встановити з'єднання із сервером журналу"
@@ -2209,15 +2299,15 @@ msgstr "Вибачте, користувач %s не має права вико
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "Вибачте, користувач %s не має права виконувати «%s%s%s» від імені %s%s%s на %s.\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s: команду не знайдено"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2243,12 +2333,12 @@ msgstr "помилка під час спроби розпізнавання"
msgid "a password is required"
msgstr "слід вказати пароль"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "не вдалося відкрити файл журналу: %s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "не вдалося виконати запис до файла журналу: %s"
@@ -2258,7 +2348,7 @@ msgstr "не вдалося виконати запис до файла журн
msgid "digest for %s (%s) is not in %s form"
msgstr "контрольну суму для %s (%s) подано не у формі %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2267,7 +2357,7 @@ msgstr ""
"\n"
"Роль LDAP: %s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2275,104 +2365,110 @@ msgstr ""
"\n"
"Запис sudoers:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " Користувачі для запуску: "
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " Групи для запуску: "
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " Параметри: "
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " Команди:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "Відповідність записів Defaults для %s на %s:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "Типові значення для запуску від імені і команд для %s:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "Користувач %s має право виконувати на %s такі команди:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "Користувач %s не має права виконувати sudo на %s.\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "ігноруємо неповний запис sudoRole: cn: %s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "некоректний атрибут LDIF: %s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "оболонкою sudo встановлено некоректне значення параметра %.*s"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "не вдалося обробити список мережевих адрес"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "ім'я користувача не встановлено за допомогою оболонки sudo"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "ідентифікатор користувача не встановлено за допомогою оболонки sudo"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "ідентифікатор групи не встановлено за допомогою оболонки sudo"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "назву вузла не встановлено за допомогою оболонки sudo"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "некоректний робочий каталог: %s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "некоректний каталог chroot: %s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "не вдалося виконати %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s: некоректні прапорці режиму від оболонки sudo: 0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Додаток правил sudoers версії %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Граматична перевірка файла sudoers версії %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2381,86 +2477,91 @@ msgstr ""
"\n"
"Шлях до sudoers: %s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "Шлях до nsswitch: %s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "Шлях до ldap.conf: %s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "Шлях до ldap.secret: %s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "неможливо зареєструвати процедуру перехоплення типу %d (версія %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "неможливо скасувати реєстрацію процедури перехоплення типу %d (версія %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "не вдалося кешувати uid %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "не вдалося кешувати uid %u, запис вже існує"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "не вдалося кешувати користувача %s"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "не вдалося кешувати користувача %s, запис вже існує"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "не вдалося кешувати gid %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "не вдалося кешувати gid %u, запис вже існує"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "не вдалося кешувати групу %s"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "не вдалося кешувати групу %s, запис вже існує"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "не вдалося кешувати список груп %s, запис вже існує"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "не вдалося кешувати список груп %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "не вдалося обробити записи груп %s"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "не вдалося обробити записи ідентифікаторів груп %s"
@@ -2535,135 +2636,139 @@ msgstr "Не вдалося ініціалізувати джерело SSS. Ч
msgid "unable to find symbol \"%s\" in %s"
msgstr "не вдалося знайти символ «%s» у %s"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "проблема з типовими записами"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "не знайдено коректних джерел даних sudoers, завершення роботи"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "користувачеві заборонено змінювати кореневий каталог на %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "вам не дозволено використовувати параметр -R з %s"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "користувачеві заборонено змінювати каталог на %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "вам не дозволено використовувати параметр -D з %s"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "не вказано команду"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers вказує, що sudo не можна користуватися для виконання команд від root"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "користувачеві заборонено перевизначати обмеження closefrom"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "вам не дозволено використовувати параметр -C"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "власник часового штампа (%s): не знайдено користувача з таким іменем"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "немає tty"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "вибачте, для виконання sudo вашому користувачеві потрібен tty"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "некоректний запис оболонки для користувача %s: %s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "команда у поточному каталозі"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "користувачеві заборонено встановлювати час очікування на виконання команди"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "вибачте, вам не дозволено встановлювати час очікування на виконання команди"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "користувачеві заборонено зберігати середовище"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "вибачте, вам не дозволено зберігати середовище"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "надто довга команда"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "Немає потреби у запуску sudoedit за допомогою sudo"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "не вдалося прочитати %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "не вдалося виконати stat для %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s не є звичайним файлом"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s належить uid %u, має належати %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "Запис до «%s» можливий для довільного користувача"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s належить gid %u, має належати %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "використовувати «-c %s» може лише root"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "невідомий клас входу: %s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "не вдалося визначити адресу вузла %s"
@@ -2813,11 +2918,11 @@ msgstr ""
" -s, --speed=коеф_швидк коефіцієнт прискорення або сповільнення виводу даних\n"
" -V, --version показати дані щодо версії і завершити роботу"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\tвідповідника вузла не знайдено"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2825,7 +2930,7 @@ msgstr ""
"\n"
"Команду дозволено"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2833,7 +2938,7 @@ msgstr ""
"\n"
"Команду заборонено"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2846,121 +2951,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s доступний до запису учасниками групи"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "не вдалося обрізати файл часової позначки до %lld байтів"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "ігноруємо часову позначку з майбутнього"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "занадто далека часова позначка у майбутньому: %20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "не вдалося заблокувати файл часової позначки %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "шлях до даних щодо стану отримання настанов є занадто довгим: %s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit не слід вказувати разом із шляхом"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "параметр -x буде вилучено у наступному випуску"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "будь ласка, скористайтеся замість нього програмою cvtsudoers"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "натисніть Enter для редагування %s: "
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "вказаного редактора (%s) не існує"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "не знайдено жодного редактора (шлях до редактора = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "помилка запису"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "не вдалося обробити stat файл тимчасових даних (%s), %s не змінено"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "файл тимчасових даних має нульовий об’єм (%s), %s не змінено"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "помилка редактора (%s), %s не змінено"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s не змінено"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "не вдалося повторно відкрити файл тимчасових даних (%s), %s не змінено."
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "не вдалося обробити файл тимчасових даних (%s), невідома помилка"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "внутрішня помилка, не вдалося знайти %s у списку!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "не вдалося встановити (uid, gid) %s у значення (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s і %s не перебувають у одній файловій системі, використовуємо mv для перейменування"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "помилка команди: «%s %s %s», %s не змінено"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "помилка перейменування %s, %s не змінено"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "А зараз що? "
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2972,66 +3077,46 @@ msgstr ""
" (x) — вийти без внесення змін до файла sudoers\n"
" (Q) — вийти зі збереженням файла sudoers (НЕБЕЗПЕЧНО!)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "не вдалося виконати %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s: помилковий власник (uid, gid), має бути (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s: помилкові права доступу, режим доступу має бути 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s: вдала обробка\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s зайнято, повторіть спробу пізніше"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "не вдалося заблокувати %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "Редагувати попри усе? [y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Помилка: %s:%d:%d: цикл у %s «%s»"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "Попередження: %s:%d:%d: цикл у %s «%s»"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Помилка: виявлено посилання %s:%d:%d: %s «%s», яке не визначено"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "Попередження: виявлено посилання %s:%d:%d: %s «%s», яке не визначено"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "Попередження: %s:%d:%d: не використано %s «%s»"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3040,7 +3125,7 @@ msgstr ""
"%s — безпечне редагування файла sudoers\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3060,34 +3145,88 @@ msgstr ""
" -s, --strict строга перевірка синтаксису\n"
" -V, --version показати дані щодо версії і завершити роботу\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "порожній рядок"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "порожня група"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "порожня мережева група"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "некоректне продовження рядка"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "некоректна адреса IPv6"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "неочікуваний розрив рядків у рядку"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "занадто високий рівень вкладеності"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u не вдалося обробити «%s»"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Параметри:\n"
+#~ " -f, --file шлях до файла налаштувань\n"
+#~ " -h --help показати довідкове повідомлення і вийти\n"
+#~ " -n, --no-fork не відгалужувати, запустити на передньому плані\n"
+#~ " -R, --random-drop ймовірність скидання з'єднань у відсотках\n"
+#~ " -V, --version вивести дані щодо версії і завершити роботу\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "Параметри:\n"
+#~ " --help вивести довідкове повідомлення і завершити роботу\n"
+#~ " -A, --accept надсилати лише подію прийняття (без введення-виведення)\n"
+#~ " -h, --host вказати вузол для надсилання журналів\n"
+#~ " -i, --iolog_id вказати ідентифікатор журналу введення-виведення, яки слід відновити\n"
+#~ " -p, --port вказати порт, яким слід скористатися для з'єднання з вузлом\n"
+#~ " -r, --restart перезапустити попереднє передавання журналу введення-виведення\n"
+#~ " -R, --reject відмовити у виконанні команди із зазначенням вказаної причини\n"
+#~ " -b, --ca-bundle вказати файла пакета сертифікатів для перевірки сертифіката сервера\n"
+#~ " -c, --cert вказати файл сертифіката для узгодження зв'язку TLS\n"
+#~ " -k, --key вказати файл закритого ключа\n"
+#~ " -n, --no-verify не перевіряти сертифікат сервера\n"
+#~ " -t, --test перевірити сервер аудиту надсиланням вибраного журналу введення-виведення\n"
+#~ " паралельно n разів\n"
+#~ " -V, --version вивести дані щодо версії і завершити роботу\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "Попередньо завантажувати фіктивні функції виконання з бібліотеки sudo_noexec"
diff --git a/plugins/sudoers/po/zh_CN.mo b/plugins/sudoers/po/zh_CN.mo
index a2e4c9cb2..18e8900e2 100644
--- a/plugins/sudoers/po/zh_CN.mo
+++ b/plugins/sudoers/po/zh_CN.mo
Binary files differ
diff --git a/plugins/sudoers/po/zh_CN.po b/plugins/sudoers/po/zh_CN.po
index 5c91d77a8..5a647ebf6 100644
--- a/plugins/sudoers/po/zh_CN.po
+++ b/plugins/sudoers/po/zh_CN.po
@@ -1,14 +1,14 @@
# Chinese simplified translation for sudoers.
# This file is put in the public domain.
# Wylmer Wang <wantinghard@gmail.com>, 2011-2018
-# Boyuan Yang <073plan@gmail.com>, 2019, 2020.
+# Boyuan Yang <073plan@gmail.com>, 2019, 2020, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-29 15:59-0500\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-03 20:26-0500\n"
"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
@@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.4.2\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "语法错误"
@@ -43,426 +43,459 @@ msgstr "*** %h 安全信息 ***"
msgid "Sorry, try again."
msgstr "对不起,请重试。"
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "无法分配内存"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "摘要需要路径参数"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "“CWD”的值必须以“/”、“~”或“*”开头"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "“CHROOT”的值必须以“/”、“~”或“*”开头"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "语法错误,保留字 %s 被用作别名"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "无效的 notbefore 值"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "无效的 notafter 值"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "超时值过大"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "无效的超时值"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "别名“%s”已定义过"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s:%s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "内部错误,%s 溢出"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "无法 dup stdin:%m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "无法执行 %s:%m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "无法执行 fork"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "无法执行 fork:%m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "无法打开管道:%m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s:%s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s:(命令继续执行) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s 存在,但不是目录(0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "无法创建目录 %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "无法将 %s 的模式更改为 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "期望得到 JSON_STRING,但得到了 %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "名称中缺少双引号"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "期望得到 JSON_OBJECT,但得到了 %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr ""
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "不匹配的右括号"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "未预期的数组"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "不匹配的右花括号"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "未预期的字符串"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "名称后缺少冒号"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "未预期的布尔值"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "未预期的 null"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "未预期的数字"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u 无法解析 \"%s\""
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "解析错误"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s:无效的日志文件"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s:缺少 时间戳 字段"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s:时间戳 %s:%s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s:缺少 用户 字段"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s:缺少 runas 用户 字段"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s:缺少 runas 组 字段"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s 存在,但不是目录(0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "无法创建目录 %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "无法将 %s 的模式更改为 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "读取时序文件出错:%s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "无效的时序文件行:%s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "日志已完成,无法重新启动"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "无法重新启动 log"
@@ -487,141 +520,141 @@ msgstr "%s/%s:无法向前查找 %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "无法找到恢复点 [%lld, %ld](在 %s/%s 中)"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "状态机错误"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "无效的 AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "解析 AcceptMessage 出错"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "创建 I/O 日志出错"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "记录接受事件时出错"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "无效的 RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "解析 RejectMessage 出错"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "记录拒绝事件时出错"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "无效的 AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "解析 AlertMessage 出错"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "记录警告事件时出错"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "协议错误"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "写入 IoBuffer 出错"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "写入 ChangeWindowSize 出错"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "写入 CommandSuspend 出错"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "无法识别的 ClientMessage 类型"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "客户端消息过长"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "无法将 TLS 1.2 密码套件设置为 %s: %s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "无法将 TLS 1.3 密码套件设置为 %s: %s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "无法获取 TLS 服务器方法:%s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "无法创建 TLS 上下文:%s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "无法加载证书 %s"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "无法加载数字证书认证机构集合(CA bundle) %s"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "无法加载私钥 %s"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "无法设置 diffie-hellman 参数:%s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "无法将最低协议版本设置为 TLS 1.2:%s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "无法获取远程 IP 地址"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "无法将用户数据附加到 ssl 对象上:%s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -631,269 +664,291 @@ msgstr "无法将用户数据附加到 ssl 对象上:%s"
msgid "unable to add event to queue"
msgstr "无法将事件添加到队列"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "无法设置监听套接字"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - 将 sudo I/O 日志发送到远程服务器\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "sudo 日志服务器"
-#: logsrvd/logsrvd.c:1920
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "选项:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "配置文件路径"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "显示帮助信息并退出"
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "不要进行 fork,在前台运行"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
msgstr ""
-"\n"
-"选项:\n"
-" -f, --file 指定配置文件的位置\n"
-" -h, --help 显示帮助信息并退出\n"
-" -n, --no-fork 不要进行 fork,在前台运行\n"
-" -R, --random-drop 指定丢弃连接的百分比概率\n"
-" -V, --version 显示版本信息并退出\n"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "显示版本信息并退出"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "需要 Protobuf-C 1.3 版或更高版本"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "无效的随机丢弃值:%s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s 版本 %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "不支持 TLS"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s:不是完全合格的路径"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d 不匹配的 '[':%s"
-#: logsrvd/logsrvd_conf.c:778
-#, fuzzy, c-format
-#| msgid "invalid filter option: %s"
+#: logsrvd/logsrvd_conf.c:781
+#, c-format
msgid "%s:%d invalid config section: %s"
-msgstr "无效的过滤器选项:%s"
+msgstr "%s:%d 无效的配置段:%s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d 无效的配置行:%s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr ""
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "用于 %s 的无效的值:%s"
-#: logsrvd/logsrvd_conf.c:814
-#, fuzzy, c-format
-#| msgid "%s: unknown key word: %s"
+#: logsrvd/logsrvd_conf.c:817
+#, c-format
msgid "%s:%d unknown key: %s"
-msgstr "%s:未知的关键词:%s"
+msgstr "%s:%d 未知的键:%s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, fuzzy, c-format
#| msgid "unknown login class: %s"
msgid "unknown syslog facility %s"
msgstr "未知的登录类别:%s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "位置的 syslog 优先级 %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "将 sudo I/O 日志发送到远程服务器"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
msgstr ""
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
-#, fuzzy, c-format
-#| msgid "unable to load %s: %s"
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr ""
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr ""
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr ""
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr ""
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr ""
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "不要验证服务器证书"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "连接到主机时使用的端口"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr ""
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr ""
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr ""
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
+#, c-format
msgid "unable to look up %s:%s: %s"
-msgstr "无法加载 %s:%s"
+msgstr "无法查找 %s:%s:%s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "无法获取服务器 IP 地址"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "无法读取 %s/%s:%s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "客户端消息过大:%zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s:写缓冲已在使用"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "未预期的 I/O 事件 %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s:未预期的状态 %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "无效的 ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "从服务器收到了错误消息:%s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "从服务器收到了中止消息:%s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "无法解包 ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr ""
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "从服务器读取超时"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "过早的文件结束"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "服务器消息过大:%u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "写入服务器时超时"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "TLS 握手超时"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "无法设置事件"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS 连接失败:%s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "无法初始化 ssl 上下文:%s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "无法分配 ssl 对象:%s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "无法将套接字附加给 ssl 对象:%s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr ""
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr ""
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "过早地退出,状态码为 %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr ""
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr ""
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "别名“%s”已定义过"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "无法获取时间"
@@ -999,38 +1054,38 @@ msgstr "%s:无法验证目标!可能遭到了攻击!:%s"
msgid "unable to initialize PAM: %s"
msgstr "无法初始化 PAM:%s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "PAM 认证出错:%s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "账户验证失败,您的账户是不是上锁了?"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "账户或密码过期,重置您的密码并重试"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "无法更改过期的密码:%s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "密码过期,联系您的系统管理员"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "账户过期,或 PAM 配置缺少 sudo 使用的“account”节,联系您的系统管理员"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "PAM 账户管理出错:%s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "%s 数据库中没有您"
@@ -1103,7 +1158,29 @@ msgstr "无法确定审核条件"
msgid "unable to commit audit record"
msgstr "无法提交审核记录"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, fuzzy, c-format
+#| msgid "error reading timing file: %s"
+msgid "error reading lecture file %s"
+msgstr "读取时序文件出错:%s"
+
+#: plugins/sudoers/check.c:270
+#, fuzzy, c-format
+#| msgid "%s is not a regular file"
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "%s 不是常规文件"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "无法打开 %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1123,21 +1200,41 @@ msgstr ""
" #3) 权力越大,责任越大。\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "未知的用户 ID:%u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "未知用户:%s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "错误:%s:%d:%d 在 %s “%s”中循环"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "警告:%s:%d:%d 在 %s “%s”中循环"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "错误:%s:%d:%d:引用了 %s“%s”但尚未定义"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "警告:%s:%d:%d:引用了 %s“%s”但尚未定义"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1153,7 +1250,7 @@ msgstr "起始顺序:%s:%s"
msgid "order padding: %s: %s"
msgstr "顺序填充:%s: %s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s 语法版本 %d\n"
@@ -1173,9 +1270,9 @@ msgstr "不支持的输出格式 %s"
msgid "%s: input and output files must be different"
msgstr "%s:输入和输出文件不能相同"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "无法初始化 sudoers 默认值"
@@ -1204,37 +1301,28 @@ msgstr "无效的压缩类型:%s"
msgid "invalid filter: %s"
msgstr "无效的过滤器:%s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "无法打开 %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "解析 %s 文件失败,未知错误"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "%s 中第 %d 行附近出现解析错误\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "%s 中出现解析错误\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "无法写入 %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1243,7 +1331,7 @@ msgstr ""
"%s - 转换 sudoers 文件格式\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1892,6 +1980,15 @@ msgstr ">= %d 的文件描述符将会在执行命令前关闭"
msgid "The format of logs to produce: %s"
msgstr "要产生日志的格式:%s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "启用 SELinux RBAC 支持"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr ""
+
#: plugins/sudoers/defaults.c:185
#, fuzzy, c-format
#| msgid "%s:%d: unknown defaults entry \"%s\""
@@ -1947,38 +2044,38 @@ msgstr "%1$s:%2$d 值“%3$s”对选项“%4$s”无效"
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s:值“%s”对选项“%s”无效"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, fuzzy, c-format
#| msgid "%s:%d values for \"%s\" must start with a '/'"
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d “%s”的值必须以“/”开头"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, fuzzy, c-format
#| msgid "%s: values for \"%s\" must start with a '/'"
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:“%s”的值必须以“/”开头"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, fuzzy, c-format
#| msgid "%s:%d values for \"%s\" must start with a '/'"
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d “%s”的值必须以“/”开头"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s:“%s”的值必须以“/”开头"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv:envp 损坏,长度不符"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "无法重建环境"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "对不起,您无权设置以下环境变量:%s"
@@ -2042,42 +2139,42 @@ msgstr "无法解析网络掩码“%s”"
msgid "Local IP address and netmask pairs:\n"
msgstr "本地 IP 地址和网络掩码对:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "未知组:%s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "无法更新序列文件"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "无法写入 I/O 日志文件:%s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "无法创建 %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s:内部错误,事件 %d 的 I/O 日志文件未打开"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "无法读取时钟"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s:内部错误,信号 %d 无效"
@@ -2105,7 +2202,7 @@ msgstr "无法初始化 LDAP:%s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "指定了 start_tls,但 LDAP 库不支持 ldap_start_tls_s() 或 ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "无效的 sudoOrder 属性:%s"
@@ -2124,21 +2221,29 @@ msgstr "不支持的 LDAP URI 类型:%s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "无法混合 ldap 和 ldaps URI"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "重复的 sudoOption: %s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "无法转换 sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "无法打开审核系统"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "无法发送审核消息"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "事件循环中出错"
@@ -2160,20 +2265,20 @@ msgstr "TLS 初始化不成功"
msgid "TLS handshake was unsuccessful"
msgstr "TLS 握手不成功"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s:内部错误,无效的退出状态 %d"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "丢失了到日志服务器的连接"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "缺失写缓冲"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "无法连接到日志服务器"
@@ -2209,15 +2314,15 @@ msgstr "对不起,用户 %s 不能在 %s 上运行 sudo。\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "对不起,用户 %1$s 无权以 %5$s%6$s%7$s 的身份在 %8$s 上执行 %2$s%3$s%4$s。\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s:找不到命令"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2240,12 +2345,12 @@ msgstr "认证失败"
msgid "a password is required"
msgstr "需要密码"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "无法打开日志文件:%s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "无法写入日志文件: %s"
@@ -2255,7 +2360,7 @@ msgstr "无法写入日志文件: %s"
msgid "digest for %s (%s) is not in %s form"
msgstr "%s(%s) 的摘要不是 %s 形式"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2264,7 +2369,7 @@ msgstr ""
"\n"
"LDAP 角色:%s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2272,104 +2377,111 @@ msgstr ""
"\n"
"Sudoers 条目:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAs 用户:"
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAs 组:"
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " 选项:"
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " 命令:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "匹配 %2$s 上 %1$s 的默认条目:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "%s Runas 和命令特定的默认值:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "用户 %s 可以在 %s 上运行以下命令:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "用户 %s 无权在 %s 上运行 sudo。\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "将忽略不完整的 sudoRole:cn:%s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "无效的 LDIF 属性:%s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "sudo 前端设置了无效的 %.*s"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "无法解析网络地址列表"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "用户名未通过 sudo 前端设置"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "用户 ID 未通过 sudo 前端设置"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "组 ID 未通过 sudo 前端设置"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "主机名未通过 sudo 前端设置"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "无效的工作目录:%s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "无法的 chroot 目录:%s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "无法执行 %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, fuzzy, c-format
+#| msgid "invalid %.*s set by sudo front-end"
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "sudo 前端设置了无效的 %.*s"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Sudoers 策略插件版本 %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Sudoers 文件语法版本 %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2378,86 +2490,91 @@ msgstr ""
"\n"
"Sudoers 路径:%s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch 路径:%s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf 路径:%s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret 路径:%s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "无法注册类型为 %d 的钩子(hook)(版本 %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "无法取消注册类型为 %d 的钩子(hook)(版本 %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "无法缓存用户 ID %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "无法缓存用户 ID %u,已存在"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "无法缓存用户 %s"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "无法缓存用户 %s,已存在"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "无法缓存组 ID %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "无法缓存组 ID %u,已存在"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "无法缓存组 %s"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "无法缓存组 %s,已存在"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "无法缓存组列表 %s,已存在"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "无法缓存组列表 %s"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "无法对 %s 解析组"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "无法解析 %s 的组 ID"
@@ -2532,142 +2649,141 @@ msgstr "无法初始化 SSS 资源。您的计算机上安装 SSSD 了吗?"
msgid "unable to find symbol \"%s\" in %s"
msgstr "无法在 %s 中找到符号“%s”"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "默认条目有问题"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "没有找到有效的 sudoers 资源,退出"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "用户不允许将根目录设置为 %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, fuzzy, c-format
#| msgid "you are not permitted to use the -C option"
msgid "you are not permitted to use the -R option with %s"
msgstr "您无权使用 -C 选项"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "用户不允许将目录变更为 %s"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, fuzzy, c-format
#| msgid "you are not permitted to use the -C option"
msgid "you are not permitted to use the -D option with %s"
msgstr "您无权使用 -C 选项"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "未指定命令"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers 指定 root 不允许执行 sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr ""
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "您无权使用 -C 选项"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "时间戳所有者(%s):无此用户"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "无终端"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "抱歉,您必须拥有一个终端来执行 sudo"
-#: plugins/sudoers/sudoers.c:495
-#, fuzzy, c-format
-#| msgid "invalid speed factor: %s"
+#: plugins/sudoers/sudoers.c:487
+#, c-format
msgid "invalid shell for user %s: %s"
-msgstr "无法的速度系数:%s"
+msgstr "用户 %s 的无效 shell:%s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "当前目录中的命令"
-#: plugins/sudoers/sudoers.c:597
-#, fuzzy
-#| msgid "sorry, you are not allowed set a command timeout"
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
-msgstr "抱歉,您无权设置超时时间"
+msgstr "不允许用户设置超时时间"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "抱歉,您无权设置超时时间"
-#: plugins/sudoers/sudoers.c:607
-#, fuzzy
-#| msgid "sorry, you are not allowed to preserve the environment"
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
-msgstr "抱歉,您无权保留环境"
+msgstr "不允许用户保留环境"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "抱歉,您无权保留环境"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "命令过长"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit 无需经由 sudo 运行"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "无法读取 %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "无法 stat %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s 不是常规文件"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s 属于用户 ID %u,应为 %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s 可被任何人写"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s 属于组 ID %u,应为 %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "只有 root 才能使用“-c %s”"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "未知的登录类别:%s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "无法解析主机:%s"
@@ -2817,11 +2933,11 @@ msgstr ""
" -s, --speed=数值 加速或减慢输出\n"
" -V, --version 显示版本信息并退出"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\t主机不匹配"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2829,7 +2945,7 @@ msgstr ""
"\n"
"命令允许"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2837,7 +2953,7 @@ msgstr ""
"\n"
"命令被拒"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2850,121 +2966,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s 可被组写"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "无法将时间戳文件截短为 %lld 字节"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "将忽略超前的时间戳"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "时间戳太超前:%20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "无法锁定时间戳文件 %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "致辞(lecture)状态路径过长:%s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "不应当带路径调用 sudoedit"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "未来版本中 -x 选项会移除"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "请考虑换用 cvtsudoers 工具"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "按回车键编辑 %s:"
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "指定的编辑器(%s)不存在"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "未找到编辑器(编辑器路径 = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "写错误"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "无法 stat 临时文件(%s),%s 未更改"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "零长度的临时文件(%s),%s 未更改"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "编辑器(%s)失败,%s 未更改"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s 未更改"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "无法重新打开临时文件(%s),%s 未更改。"
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "无法解析临时文件(%s),未知错误"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "内部错误,在列表中找不到 %s!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "无法将 %s 的 (uid, gid) 设为 (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s 和 %s 不在同一个文件系统,使用 mv 进行重命名"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "命令失败:“%s %s %s”,%s 未更改"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "重命名 %s 出错,%s 未更改"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "现在做什么?"
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2976,70 +3092,46 @@ msgstr ""
" 退出,不保存对 sudoers 文件的更改(x)\n"
" 退出并将更改保存到 sudoers 文件(危险!)(Q)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "无法运行 %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s:错误的所有者(uid, gid),应为 (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s:权限不正确,模式应该是 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s:解析正确\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s 忙,请稍后重试"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "无法锁定 %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "仍然编辑?[y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, fuzzy, c-format
-#| msgid "Error: %s:%d cycle in %s \"%s\""
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "错误:%s:%d 在 %s “%s”中循环"
-
-#: plugins/sudoers/visudo.c:1092
-#, fuzzy, c-format
-#| msgid "Warning: %s:%d cycle in %s \"%s\""
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "警告:%s:%d 在 %s “%s”中循环"
-
-#: plugins/sudoers/visudo.c:1096
-#, fuzzy, c-format
-#| msgid "Error: %s:%d %s \"%s\" referenced but not defined"
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "错误:%s:%d 引用了 %s “%s”但尚未定义"
-
-#: plugins/sudoers/visudo.c:1097
-#, fuzzy, c-format
-#| msgid "Warning: %s:%d %s \"%s\" referenced but not defined"
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "警告:%s:%d 引用了 %s “%s”但尚未定义"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "警告:%s:%d:%d:未使用的 %s“%s”"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3048,7 +3140,7 @@ msgstr ""
"%s - 安全地编辑 sudoers 文件\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3068,36 +3160,56 @@ msgstr ""
" -s, --strict 严格语法检查\n"
" -V, --version 显示版本信息并退出\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "空字符串"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "空组"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr ""
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
#, fuzzy
#| msgid "invalid authentication type"
msgid "invalid line continuation"
msgstr "无效的认证类型"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "无效的 IPv6 地址"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "字符串中未预期的换行"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "include 嵌套层数过多"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u 无法解析 \"%s\""
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "选项:\n"
+#~ " -f, --file 指定配置文件的位置\n"
+#~ " -h, --help 显示帮助信息并退出\n"
+#~ " -n, --no-fork 不要进行 fork,在前台运行\n"
+#~ " -R, --random-drop 指定丢弃连接的百分比概率\n"
+#~ " -V, --version 显示版本信息并退出\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "预加载“sudo_noexec”库中包含的哑 exec 函数"
diff --git a/plugins/sudoers/po/zh_TW.mo b/plugins/sudoers/po/zh_TW.mo
index af4f54e09..5a95791f8 100644
--- a/plugins/sudoers/po/zh_TW.mo
+++ b/plugins/sudoers/po/zh_TW.mo
Binary files differ
diff --git a/plugins/sudoers/po/zh_TW.po b/plugins/sudoers/po/zh_TW.po
index 05ec214f9..a245eb2dc 100644
--- a/plugins/sudoers/po/zh_TW.po
+++ b/plugins/sudoers/po/zh_TW.po
@@ -3,13 +3,13 @@
#
# Todd C. Miller <Todd.Miller@sudo.ws>, 2011-2018.
# Hugwalk <baozou0421@gmail.com>, 2019.
-# Yi-Jyun Pan <pan93412@gmail.com>, 2019, 2020.
+# Yi-Jyun Pan <pan93412@gmail.com>, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudoers 1.9.4b1\n"
+"Project-Id-Version: sudoers 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-11-14 06:24-0700\n"
-"PO-Revision-Date: 2020-11-19 00:53+0800\n"
+"POT-Creation-Date: 2021-03-02 19:29-0700\n"
+"PO-Revision-Date: 2021-03-06 03:06+0800\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n"
"Language: zh_TW\n"
@@ -18,9 +18,9 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 2.4.2\n"
-#: confstr.sh:1 gram.y:1077
+#: confstr.sh:1 gram.y:1183
msgid "syntax error"
msgstr "語法錯誤"
@@ -44,426 +44,459 @@ msgstr "*** %h 須知的安全資訊 ***"
msgid "Sorry, try again."
msgstr "抱歉,請重試。"
-#: gram.y:220 gram.y:286 gram.y:293 gram.y:300 gram.y:307 gram.y:314
-#: gram.y:334 gram.y:358 gram.y:365 gram.y:372 gram.y:379 gram.y:386
-#: gram.y:455 gram.y:464 gram.y:475 gram.y:510 gram.y:517 gram.y:524
-#: gram.y:531 gram.y:558 gram.y:654 gram.y:661 gram.y:670 gram.y:679
-#: gram.y:696 gram.y:834 gram.y:841 gram.y:849 gram.y:855 gram.y:971
-#: gram.y:978 gram.y:985 gram.y:992 gram.y:999 gram.y:1025 gram.y:1032
-#: gram.y:1039 gram.y:1236 gram.y:1526 lib/eventlog/eventlog.c:280
-#: lib/eventlog/eventlog.c:352 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:817 lib/eventlog/eventlog.c:1062
-#: lib/iolog/iolog_fileio.c:998 lib/iolog/iolog_json.c:120
-#: lib/iolog/iolog_json.c:305 lib/iolog/iolog_json.c:335
-#: lib/iolog/iolog_json.c:457 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/sendlog.c:480
-#: plugins/sudoers/alias.c:126 plugins/sudoers/alias.c:134
-#: plugins/sudoers/alias.c:153 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/bsdauth.c:143
+#: gram.y:233 gram.y:300 gram.y:309 gram.y:318 gram.y:328 gram.y:338
+#: gram.y:362 gram.y:389 gram.y:398 gram.y:406 gram.y:415 gram.y:424
+#: gram.y:496 gram.y:506 gram.y:518 gram.y:562 gram.y:571 gram.y:580
+#: gram.y:589 gram.y:619 gram.y:716 gram.y:724 gram.y:735 gram.y:747
+#: gram.y:766 gram.y:914 gram.y:922 gram.y:932 gram.y:938 gram.y:1060
+#: gram.y:1069 gram.y:1077 gram.y:1086 gram.y:1095 gram.y:1124 gram.y:1133
+#: gram.y:1141 gram.y:1231 gram.y:1343 gram.y:1650 gram.y:1700
+#: lib/eventlog/eventlog.c:260 lib/eventlog/eventlog.c:333
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:797
+#: lib/eventlog/eventlog.c:1053 lib/iolog/iolog_json.c:125
+#: lib/iolog/iolog_json.c:330 lib/iolog/iolog_json.c:360
+#: lib/iolog/iolog_json.c:503 lib/iolog/iolog_legacy.c:100
+#: lib/iolog/iolog_legacy.c:111 lib/iolog/iolog_legacy.c:123
+#: lib/iolog/iolog_legacy.c:133 lib/iolog/iolog_legacy.c:139
+#: lib/iolog/iolog_loginfo.c:76 lib/iolog/iolog_loginfo.c:210
+#: logsrvd/sendlog.c:496 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/bsdauth.c:143
#: plugins/sudoers/auth/kerb5.c:118 plugins/sudoers/auth/kerb5.c:144
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/cvtsudoers.c:119
-#: plugins/sudoers/cvtsudoers.c:160 plugins/sudoers/cvtsudoers.c:177
-#: plugins/sudoers/cvtsudoers.c:188 plugins/sudoers/cvtsudoers.c:300
-#: plugins/sudoers/cvtsudoers.c:428 plugins/sudoers/cvtsudoers.c:561
-#: plugins/sudoers/cvtsudoers.c:578 plugins/sudoers/cvtsudoers.c:641
-#: plugins/sudoers/cvtsudoers.c:756 plugins/sudoers/cvtsudoers.c:764
-#: plugins/sudoers/cvtsudoers.c:1178 plugins/sudoers/cvtsudoers.c:1182
-#: plugins/sudoers/cvtsudoers.c:1284 plugins/sudoers/cvtsudoers_json.c:76
-#: plugins/sudoers/cvtsudoers_ldif.c:151 plugins/sudoers/cvtsudoers_ldif.c:194
-#: plugins/sudoers/cvtsudoers_ldif.c:235 plugins/sudoers/cvtsudoers_ldif.c:300
-#: plugins/sudoers/cvtsudoers_ldif.c:371 plugins/sudoers/cvtsudoers_ldif.c:421
-#: plugins/sudoers/cvtsudoers_ldif.c:429 plugins/sudoers/cvtsudoers_ldif.c:440
-#: plugins/sudoers/cvtsudoers_ldif.c:447 plugins/sudoers/cvtsudoers_ldif.c:460
-#: plugins/sudoers/cvtsudoers_ldif.c:468 plugins/sudoers/cvtsudoers_ldif.c:615
-#: plugins/sudoers/defaults.c:630 plugins/sudoers/defaults.c:923
-#: plugins/sudoers/defaults.c:1098 plugins/sudoers/editor.c:181
-#: plugins/sudoers/env.c:261 plugins/sudoers/exptilde.c:92
-#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
-#: plugins/sudoers/gc.c:56 plugins/sudoers/group_plugin.c:133
-#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:596
-#: plugins/sudoers/iolog.c:613 plugins/sudoers/ldap.c:184
-#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
-#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
-#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
-#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
-#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
-#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
-#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
-#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
-#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
-#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
-#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
-#: plugins/sudoers/ldap_conf.c:678 plugins/sudoers/ldap_conf.c:760
-#: plugins/sudoers/ldap_util.c:326 plugins/sudoers/ldap_util.c:333
-#: plugins/sudoers/ldap_util.c:603 plugins/sudoers/linux_audit.c:84
-#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:166
-#: plugins/sudoers/logging.c:426 plugins/sudoers/logging.c:446
-#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:281
-#: plugins/sudoers/match_command.c:449 plugins/sudoers/match_command.c:499
-#: plugins/sudoers/match_command.c:573 plugins/sudoers/match_digest.c:93
-#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:213
-#: plugins/sudoers/parse.c:230 plugins/sudoers/parse.c:244
-#: plugins/sudoers/parse.c:264 plugins/sudoers/parse.c:275
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/auth/sia.c:59 plugins/sudoers/check_aliases.c:95
+#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:160
+#: plugins/sudoers/cvtsudoers.c:177 plugins/sudoers/cvtsudoers.c:188
+#: plugins/sudoers/cvtsudoers.c:300 plugins/sudoers/cvtsudoers.c:428
+#: plugins/sudoers/cvtsudoers.c:561 plugins/sudoers/cvtsudoers.c:578
+#: plugins/sudoers/cvtsudoers.c:646 plugins/sudoers/cvtsudoers.c:761
+#: plugins/sudoers/cvtsudoers.c:769 plugins/sudoers/cvtsudoers.c:1183
+#: plugins/sudoers/cvtsudoers.c:1187 plugins/sudoers/cvtsudoers.c:1289
+#: plugins/sudoers/cvtsudoers_json.c:76 plugins/sudoers/cvtsudoers_ldif.c:151
+#: plugins/sudoers/cvtsudoers_ldif.c:194 plugins/sudoers/cvtsudoers_ldif.c:235
+#: plugins/sudoers/cvtsudoers_ldif.c:300 plugins/sudoers/cvtsudoers_ldif.c:371
+#: plugins/sudoers/cvtsudoers_ldif.c:421 plugins/sudoers/cvtsudoers_ldif.c:429
+#: plugins/sudoers/cvtsudoers_ldif.c:440 plugins/sudoers/cvtsudoers_ldif.c:447
+#: plugins/sudoers/cvtsudoers_ldif.c:460 plugins/sudoers/cvtsudoers_ldif.c:468
+#: plugins/sudoers/cvtsudoers_ldif.c:615 plugins/sudoers/defaults.c:638
+#: plugins/sudoers/defaults.c:933 plugins/sudoers/defaults.c:1108
+#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:262
+#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
+#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:57
+#: plugins/sudoers/group_plugin.c:133 plugins/sudoers/interfaces.c:72
+#: plugins/sudoers/iolog.c:609 plugins/sudoers/iolog.c:626
+#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
+#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
+#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
+#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
+#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
+#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
+#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
+#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
+#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
+#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
+#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
+#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:678
+#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:326
+#: plugins/sudoers/ldap_util.c:333 plugins/sudoers/ldap_util.c:648
+#: plugins/sudoers/linux_audit.c:86 plugins/sudoers/log_client.c:105
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:426
+#: plugins/sudoers/logging.c:446 plugins/sudoers/logging.c:527
+#: plugins/sudoers/match_command.c:286 plugins/sudoers/match_command.c:484
+#: plugins/sudoers/match_command.c:533 plugins/sudoers/match_command.c:604
+#: plugins/sudoers/match_command.c:650 plugins/sudoers/match_digest.c:93
+#: plugins/sudoers/parse.c:199 plugins/sudoers/parse.c:216
+#: plugins/sudoers/parse.c:236 plugins/sudoers/parse.c:253
+#: plugins/sudoers/parse.c:276 plugins/sudoers/parse.c:287
#: plugins/sudoers/parse_ldif.c:153 plugins/sudoers/parse_ldif.c:184
#: plugins/sudoers/parse_ldif.c:253 plugins/sudoers/parse_ldif.c:260
#: plugins/sudoers/parse_ldif.c:265 plugins/sudoers/parse_ldif.c:341
#: plugins/sudoers/parse_ldif.c:352 plugins/sudoers/parse_ldif.c:379
#: plugins/sudoers/parse_ldif.c:396 plugins/sudoers/parse_ldif.c:408
#: plugins/sudoers/parse_ldif.c:412 plugins/sudoers/parse_ldif.c:426
-#: plugins/sudoers/parse_ldif.c:594 plugins/sudoers/parse_ldif.c:624
-#: plugins/sudoers/parse_ldif.c:649 plugins/sudoers/parse_ldif.c:707
-#: plugins/sudoers/parse_ldif.c:724 plugins/sudoers/parse_ldif.c:752
-#: plugins/sudoers/parse_ldif.c:759 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/sssd.c:145 plugins/sudoers/sssd.c:407
-#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
-#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
-#: plugins/sudoers/stubs.c:110 plugins/sudoers/stubs.c:118
-#: plugins/sudoers/sudoers.c:300 plugins/sudoers/sudoers.c:326
-#: plugins/sudoers/sudoers.c:370 plugins/sudoers/sudoers.c:381
-#: plugins/sudoers/sudoers.c:391 plugins/sudoers/sudoers.c:433
-#: plugins/sudoers/sudoers.c:794 plugins/sudoers/sudoers.c:927
-#: plugins/sudoers/sudoers.c:961 plugins/sudoers/sudoers.c:1265
-#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
-#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
-#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
-#: plugins/sudoers/testsudoers.c:228 plugins/sudoers/testsudoers.c:245
-#: plugins/sudoers/testsudoers.c:587 plugins/sudoers/timestamp.c:432
-#: plugins/sudoers/timestamp.c:476 plugins/sudoers/timestamp.c:986
-#: plugins/sudoers/toke_util.c:51 plugins/sudoers/toke_util.c:104
-#: plugins/sudoers/toke_util.c:129 plugins/sudoers/toke_util.c:157
-#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:145
-#: plugins/sudoers/visudo.c:323 plugins/sudoers/visudo.c:329
-#: plugins/sudoers/visudo.c:439 plugins/sudoers/visudo.c:615
-#: plugins/sudoers/visudo.c:935 plugins/sudoers/visudo.c:1008
-#: plugins/sudoers/visudo.c:1129 toke.l:913 toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:483 plugins/sudoers/parse_ldif.c:596
+#: plugins/sudoers/parse_ldif.c:626 plugins/sudoers/parse_ldif.c:651
+#: plugins/sudoers/parse_ldif.c:709 plugins/sudoers/parse_ldif.c:726
+#: plugins/sudoers/parse_ldif.c:754 plugins/sudoers/parse_ldif.c:761
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/sssd.c:145
+#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
+#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
+#: plugins/sudoers/sssd.c:754 plugins/sudoers/strvec_join.c:53
+#: plugins/sudoers/stubs.c:111 plugins/sudoers/stubs.c:119
+#: plugins/sudoers/sudoers.c:299 plugins/sudoers/sudoers.c:325
+#: plugins/sudoers/sudoers.c:374 plugins/sudoers/sudoers.c:384
+#: plugins/sudoers/sudoers.c:425 plugins/sudoers/sudoers.c:787
+#: plugins/sudoers/sudoers.c:922 plugins/sudoers/sudoers.c:975
+#: plugins/sudoers/sudoers.c:1241 plugins/sudoers/sudoreplay.c:552
+#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
+#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
+#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:225
+#: plugins/sudoers/testsudoers.c:242 plugins/sudoers/testsudoers.c:581
+#: plugins/sudoers/timestamp.c:422 plugins/sudoers/timestamp.c:466
+#: plugins/sudoers/timestamp.c:967 plugins/sudoers/timestamp.c:1105
+#: plugins/sudoers/toke_util.c:77 plugins/sudoers/toke_util.c:105
+#: plugins/sudoers/toke_util.c:130 plugins/sudoers/toke_util.c:155
+#: plugins/sudoers/toke_util.c:193 plugins/sudoers/tsdump.c:123
+#: plugins/sudoers/visudo.c:143 plugins/sudoers/visudo.c:321
+#: plugins/sudoers/visudo.c:327 plugins/sudoers/visudo.c:433
+#: plugins/sudoers/visudo.c:609 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/visudo.c:999 toke.l:928 toke.l:1057 toke.l:1117
msgid "unable to allocate memory"
msgstr "無法分配記憶體"
-#: gram.y:552
+#: gram.y:613
msgid "a digest requires a path name"
msgstr "摘要需要路徑名稱"
-#: gram.y:581
+#: gram.y:643
msgid "values for \"CWD\" must start with a '/', '~', or '*'"
msgstr "\"CWD\" 的值開頭必須是 '/'、'~' 或 '*'"
-#: gram.y:593
+#: gram.y:655
msgid "values for \"CHROOT\" must start with a '/', '~', or '*'"
msgstr "\"CHROOT\" 的值開頭必須是 '/'、'~' 或 '*'"
-#: gram.y:715
+#: gram.y:786
#, c-format
msgid "syntax error, reserved word %s used as an alias name"
msgstr "語法錯誤,保留字 %s 被用作別名名稱"
-#: gram.y:735
+#: gram.y:809
msgid "invalid notbefore value"
msgstr "notbefore 的值無效"
-#: gram.y:743
+#: gram.y:818
msgid "invalid notafter value"
msgstr "notafter 的值無效"
-#: gram.y:752 plugins/sudoers/policy.c:335
+#: gram.y:828 plugins/sudoers/policy.c:339
msgid "timeout value too large"
msgstr "timeout 值過長"
-#: gram.y:754 plugins/sudoers/policy.c:337
+#: gram.y:830 plugins/sudoers/policy.c:341
msgid "invalid timeout value"
msgstr "timeout 值無效"
-#: gram.y:1079
+#: gram.y:1185
#, c-format
msgid "%s:%d:%d: %s\n"
msgstr "%s:%d:%d: %s\n"
-#: gram.y:1526 lib/eventlog/eventlog.c:280 lib/eventlog/eventlog.c:753
-#: lib/eventlog/eventlog.c:815 lib/eventlog/eventlog.c:816
-#: lib/eventlog/eventlog.c:1062 lib/iolog/iolog_fileio.c:998
-#: lib/iolog/iolog_json.c:120 lib/iolog/iolog_json.c:304
-#: lib/iolog/iolog_json.c:335 lib/iolog/iolog_json.c:457
-#: lib/iolog/iolog_json.c:735 lib/iolog/iolog_util.c:106
-#: lib/iolog/iolog_util.c:115 lib/iolog/iolog_util.c:125
-#: lib/iolog/iolog_util.c:133 lib/iolog/iolog_util.c:137
-#: lib/iolog/iolog_util.c:196 logsrvd/logsrvd.c:1280 logsrvd/logsrvd.c:1293
-#: logsrvd/logsrvd.c:1338 logsrvd/sendlog.c:480 logsrvd/sendlog.c:1321
-#: logsrvd/sendlog.c:1328 logsrvd/sendlog.c:1746 plugins/sudoers/audit.c:115
-#: plugins/sudoers/audit.c:210 plugins/sudoers/auth/pam.c:482
-#: plugins/sudoers/auth/pam.c:669 plugins/sudoers/auth/rfc1938.c:111
-#: plugins/sudoers/cvtsudoers.c:119 plugins/sudoers/cvtsudoers.c:159
-#: plugins/sudoers/cvtsudoers.c:176 plugins/sudoers/cvtsudoers.c:187
-#: plugins/sudoers/cvtsudoers.c:299 plugins/sudoers/cvtsudoers.c:427
-#: plugins/sudoers/cvtsudoers.c:560 plugins/sudoers/cvtsudoers.c:577
-#: plugins/sudoers/cvtsudoers.c:641 plugins/sudoers/cvtsudoers.c:756
-#: plugins/sudoers/cvtsudoers.c:763 plugins/sudoers/cvtsudoers.c:1178
-#: plugins/sudoers/cvtsudoers.c:1182 plugins/sudoers/cvtsudoers.c:1284
-#: plugins/sudoers/cvtsudoers_json.c:75 plugins/sudoers/cvtsudoers_ldif.c:150
-#: plugins/sudoers/cvtsudoers_ldif.c:193 plugins/sudoers/cvtsudoers_ldif.c:234
-#: plugins/sudoers/cvtsudoers_ldif.c:299 plugins/sudoers/cvtsudoers_ldif.c:370
-#: plugins/sudoers/cvtsudoers_ldif.c:420 plugins/sudoers/cvtsudoers_ldif.c:428
-#: plugins/sudoers/cvtsudoers_ldif.c:439 plugins/sudoers/cvtsudoers_ldif.c:446
-#: plugins/sudoers/cvtsudoers_ldif.c:459 plugins/sudoers/cvtsudoers_ldif.c:467
-#: plugins/sudoers/cvtsudoers_ldif.c:614 plugins/sudoers/defaults.c:630
-#: plugins/sudoers/defaults.c:923 plugins/sudoers/defaults.c:1098
-#: plugins/sudoers/editor.c:181 plugins/sudoers/env.c:261
-#: plugins/sudoers/exptilde.c:92 plugins/sudoers/filedigest.c:54
-#: plugins/sudoers/filedigest.c:70 plugins/sudoers/gc.c:56
-#: plugins/sudoers/group_plugin.c:132 plugins/sudoers/interfaces.c:72
-#: plugins/sudoers/iolog.c:596 plugins/sudoers/iolog.c:613
-#: plugins/sudoers/ldap.c:184 plugins/sudoers/ldap.c:422
-#: plugins/sudoers/ldap.c:432 plugins/sudoers/ldap.c:437
-#: plugins/sudoers/ldap.c:441 plugins/sudoers/ldap.c:453
-#: plugins/sudoers/ldap.c:744 plugins/sudoers/ldap.c:908
-#: plugins/sudoers/ldap.c:1281 plugins/sudoers/ldap.c:1709
-#: plugins/sudoers/ldap.c:1746 plugins/sudoers/ldap.c:1827
-#: plugins/sudoers/ldap.c:1962 plugins/sudoers/ldap.c:2063
-#: plugins/sudoers/ldap.c:2079 plugins/sudoers/ldap_conf.c:218
-#: plugins/sudoers/ldap_conf.c:249 plugins/sudoers/ldap_conf.c:301
-#: plugins/sudoers/ldap_conf.c:337 plugins/sudoers/ldap_conf.c:441
-#: plugins/sudoers/ldap_conf.c:456 plugins/sudoers/ldap_conf.c:553
-#: plugins/sudoers/ldap_conf.c:586 plugins/sudoers/ldap_conf.c:677
-#: plugins/sudoers/ldap_conf.c:760 plugins/sudoers/ldap_util.c:325
-#: plugins/sudoers/ldap_util.c:332 plugins/sudoers/ldap_util.c:603
-#: plugins/sudoers/linux_audit.c:84 plugins/sudoers/log_client.c:105
-#: plugins/sudoers/log_client.c:214 plugins/sudoers/log_client.c:235
-#: plugins/sudoers/log_client.c:248 plugins/sudoers/log_client.c:381
-#: plugins/sudoers/log_client.c:688 plugins/sudoers/log_client.c:706
-#: plugins/sudoers/log_client.c:1407 plugins/sudoers/log_client.c:1620
-#: plugins/sudoers/log_client.c:1942 plugins/sudoers/log_client.c:1999
-#: plugins/sudoers/logging.c:100 plugins/sudoers/logging.c:165
-#: plugins/sudoers/logging.c:166 plugins/sudoers/logging.c:425
-#: plugins/sudoers/logging.c:445 plugins/sudoers/logging.c:527
-#: plugins/sudoers/match_command.c:280 plugins/sudoers/match_command.c:448
-#: plugins/sudoers/match_command.c:498 plugins/sudoers/match_command.c:573
+#: gram.y:1229
+#, c-format
+msgid "Alias \"%s\" already defined"
+msgstr "別名「%s」已定義過"
+
+#: gram.y:1650 gram.y:1700 lib/eventlog/eventlog.c:260
+#: lib/eventlog/eventlog.c:733 lib/eventlog/eventlog.c:795
+#: lib/eventlog/eventlog.c:796 lib/eventlog/eventlog.c:1053
+#: lib/iolog/iolog_json.c:125 lib/iolog/iolog_json.c:329
+#: lib/iolog/iolog_json.c:360 lib/iolog/iolog_json.c:503
+#: lib/iolog/iolog_legacy.c:100 lib/iolog/iolog_legacy.c:111
+#: lib/iolog/iolog_legacy.c:123 lib/iolog/iolog_legacy.c:133
+#: lib/iolog/iolog_legacy.c:139 lib/iolog/iolog_loginfo.c:76
+#: lib/iolog/iolog_loginfo.c:210 logsrvd/logsrvd.c:1291 logsrvd/logsrvd.c:1304
+#: logsrvd/logsrvd.c:1349 logsrvd/sendlog.c:496 logsrvd/sendlog.c:1337
+#: logsrvd/sendlog.c:1344 logsrvd/sendlog.c:1762 plugins/sudoers/audit.c:115
+#: plugins/sudoers/audit.c:263 plugins/sudoers/auth/pam.c:502
+#: plugins/sudoers/auth/pam.c:689 plugins/sudoers/auth/rfc1938.c:111
+#: plugins/sudoers/check_aliases.c:95 plugins/sudoers/cvtsudoers.c:119
+#: plugins/sudoers/cvtsudoers.c:159 plugins/sudoers/cvtsudoers.c:176
+#: plugins/sudoers/cvtsudoers.c:187 plugins/sudoers/cvtsudoers.c:299
+#: plugins/sudoers/cvtsudoers.c:427 plugins/sudoers/cvtsudoers.c:560
+#: plugins/sudoers/cvtsudoers.c:577 plugins/sudoers/cvtsudoers.c:646
+#: plugins/sudoers/cvtsudoers.c:761 plugins/sudoers/cvtsudoers.c:768
+#: plugins/sudoers/cvtsudoers.c:1183 plugins/sudoers/cvtsudoers.c:1187
+#: plugins/sudoers/cvtsudoers.c:1289 plugins/sudoers/cvtsudoers_json.c:75
+#: plugins/sudoers/cvtsudoers_ldif.c:150 plugins/sudoers/cvtsudoers_ldif.c:193
+#: plugins/sudoers/cvtsudoers_ldif.c:234 plugins/sudoers/cvtsudoers_ldif.c:299
+#: plugins/sudoers/cvtsudoers_ldif.c:370 plugins/sudoers/cvtsudoers_ldif.c:420
+#: plugins/sudoers/cvtsudoers_ldif.c:428 plugins/sudoers/cvtsudoers_ldif.c:439
+#: plugins/sudoers/cvtsudoers_ldif.c:446 plugins/sudoers/cvtsudoers_ldif.c:459
+#: plugins/sudoers/cvtsudoers_ldif.c:467 plugins/sudoers/cvtsudoers_ldif.c:614
+#: plugins/sudoers/defaults.c:638 plugins/sudoers/defaults.c:933
+#: plugins/sudoers/defaults.c:1108 plugins/sudoers/editor.c:181
+#: plugins/sudoers/env.c:262 plugins/sudoers/exptilde.c:92
+#: plugins/sudoers/filedigest.c:54 plugins/sudoers/filedigest.c:70
+#: plugins/sudoers/gc.c:57 plugins/sudoers/group_plugin.c:132
+#: plugins/sudoers/interfaces.c:72 plugins/sudoers/iolog.c:609
+#: plugins/sudoers/iolog.c:626 plugins/sudoers/ldap.c:184
+#: plugins/sudoers/ldap.c:422 plugins/sudoers/ldap.c:432
+#: plugins/sudoers/ldap.c:437 plugins/sudoers/ldap.c:441
+#: plugins/sudoers/ldap.c:453 plugins/sudoers/ldap.c:744
+#: plugins/sudoers/ldap.c:908 plugins/sudoers/ldap.c:1281
+#: plugins/sudoers/ldap.c:1709 plugins/sudoers/ldap.c:1746
+#: plugins/sudoers/ldap.c:1827 plugins/sudoers/ldap.c:1962
+#: plugins/sudoers/ldap.c:2063 plugins/sudoers/ldap.c:2079
+#: plugins/sudoers/ldap_conf.c:218 plugins/sudoers/ldap_conf.c:249
+#: plugins/sudoers/ldap_conf.c:301 plugins/sudoers/ldap_conf.c:337
+#: plugins/sudoers/ldap_conf.c:441 plugins/sudoers/ldap_conf.c:456
+#: plugins/sudoers/ldap_conf.c:553 plugins/sudoers/ldap_conf.c:586
+#: plugins/sudoers/ldap_conf.c:677 plugins/sudoers/ldap_conf.c:760
+#: plugins/sudoers/ldap_util.c:325 plugins/sudoers/ldap_util.c:332
+#: plugins/sudoers/ldap_util.c:648 plugins/sudoers/linux_audit.c:86
+#: plugins/sudoers/log_client.c:105 plugins/sudoers/log_client.c:214
+#: plugins/sudoers/log_client.c:235 plugins/sudoers/log_client.c:248
+#: plugins/sudoers/log_client.c:381 plugins/sudoers/log_client.c:686
+#: plugins/sudoers/log_client.c:704 plugins/sudoers/log_client.c:1413
+#: plugins/sudoers/log_client.c:1626 plugins/sudoers/log_client.c:1950
+#: plugins/sudoers/log_client.c:2007 plugins/sudoers/logging.c:100
+#: plugins/sudoers/logging.c:165 plugins/sudoers/logging.c:166
+#: plugins/sudoers/logging.c:425 plugins/sudoers/logging.c:445
+#: plugins/sudoers/logging.c:527 plugins/sudoers/match_command.c:285
+#: plugins/sudoers/match_command.c:483 plugins/sudoers/match_command.c:532
+#: plugins/sudoers/match_command.c:604 plugins/sudoers/match_command.c:649
#: plugins/sudoers/match_digest.c:93 plugins/sudoers/parse.c:198
-#: plugins/sudoers/parse.c:212 plugins/sudoers/parse.c:229
-#: plugins/sudoers/parse.c:243 plugins/sudoers/parse.c:263
-#: plugins/sudoers/parse.c:274 plugins/sudoers/parse_ldif.c:152
+#: plugins/sudoers/parse.c:215 plugins/sudoers/parse.c:235
+#: plugins/sudoers/parse.c:252 plugins/sudoers/parse.c:275
+#: plugins/sudoers/parse.c:286 plugins/sudoers/parse_ldif.c:152
#: plugins/sudoers/parse_ldif.c:183 plugins/sudoers/parse_ldif.c:252
#: plugins/sudoers/parse_ldif.c:259 plugins/sudoers/parse_ldif.c:264
#: plugins/sudoers/parse_ldif.c:340 plugins/sudoers/parse_ldif.c:351
#: plugins/sudoers/parse_ldif.c:378 plugins/sudoers/parse_ldif.c:395
#: plugins/sudoers/parse_ldif.c:407 plugins/sudoers/parse_ldif.c:411
-#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:594
-#: plugins/sudoers/parse_ldif.c:623 plugins/sudoers/parse_ldif.c:648
-#: plugins/sudoers/parse_ldif.c:706 plugins/sudoers/parse_ldif.c:723
-#: plugins/sudoers/parse_ldif.c:751 plugins/sudoers/parse_ldif.c:758
-#: plugins/sudoers/policy.c:139 plugins/sudoers/policy.c:148
-#: plugins/sudoers/policy.c:157 plugins/sudoers/policy.c:183
-#: plugins/sudoers/policy.c:320 plugins/sudoers/policy.c:335
-#: plugins/sudoers/policy.c:337 plugins/sudoers/policy.c:366
-#: plugins/sudoers/policy.c:375 plugins/sudoers/policy.c:418
-#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:437
-#: plugins/sudoers/policy.c:446 plugins/sudoers/policy.c:526
-#: plugins/sudoers/policy.c:874 plugins/sudoers/prompt.c:93
-#: plugins/sudoers/pwutil.c:194 plugins/sudoers/pwutil.c:265
-#: plugins/sudoers/pwutil.c:343 plugins/sudoers/pwutil.c:517
-#: plugins/sudoers/pwutil.c:581 plugins/sudoers/pwutil.c:652
-#: plugins/sudoers/pwutil.c:811 plugins/sudoers/pwutil.c:867
-#: plugins/sudoers/pwutil.c:911 plugins/sudoers/pwutil.c:968
-#: plugins/sudoers/set_perms.c:359 plugins/sudoers/set_perms.c:698
-#: plugins/sudoers/set_perms.c:1061 plugins/sudoers/set_perms.c:1364
-#: plugins/sudoers/set_perms.c:1529 plugins/sudoers/sssd.c:144
-#: plugins/sudoers/sssd.c:407 plugins/sudoers/sssd.c:470
-#: plugins/sudoers/sssd.c:514 plugins/sudoers/sssd.c:561
-#: plugins/sudoers/sssd.c:754 plugins/sudoers/stubs.c:110
-#: plugins/sudoers/stubs.c:118 plugins/sudoers/sudoers.c:300
-#: plugins/sudoers/sudoers.c:326 plugins/sudoers/sudoers.c:370
-#: plugins/sudoers/sudoers.c:381 plugins/sudoers/sudoers.c:391
-#: plugins/sudoers/sudoers.c:433 plugins/sudoers/sudoers.c:794
-#: plugins/sudoers/sudoers.c:927 plugins/sudoers/sudoers.c:961
-#: plugins/sudoers/sudoers.c:1265 plugins/sudoers/sudoreplay.c:552
-#: plugins/sudoers/sudoreplay.c:555 plugins/sudoers/sudoreplay.c:1259
-#: plugins/sudoers/sudoreplay.c:1469 plugins/sudoers/sudoreplay.c:1473
-#: plugins/sudoers/testsudoers.c:128 plugins/sudoers/testsudoers.c:228
-#: plugins/sudoers/testsudoers.c:245 plugins/sudoers/testsudoers.c:587
-#: plugins/sudoers/timestamp.c:432 plugins/sudoers/timestamp.c:476
-#: plugins/sudoers/timestamp.c:986 plugins/sudoers/toke_util.c:51
-#: plugins/sudoers/toke_util.c:104 plugins/sudoers/toke_util.c:128
-#: plugins/sudoers/toke_util.c:157 plugins/sudoers/tsdump.c:123
-#: plugins/sudoers/visudo.c:145 plugins/sudoers/visudo.c:323
-#: plugins/sudoers/visudo.c:329 plugins/sudoers/visudo.c:439
-#: plugins/sudoers/visudo.c:615 plugins/sudoers/visudo.c:935
-#: plugins/sudoers/visudo.c:1008 plugins/sudoers/visudo.c:1129 toke.l:913
-#: toke.l:1033 toke.l:1091
+#: plugins/sudoers/parse_ldif.c:425 plugins/sudoers/parse_ldif.c:483
+#: plugins/sudoers/parse_ldif.c:596 plugins/sudoers/parse_ldif.c:625
+#: plugins/sudoers/parse_ldif.c:650 plugins/sudoers/parse_ldif.c:708
+#: plugins/sudoers/parse_ldif.c:725 plugins/sudoers/parse_ldif.c:753
+#: plugins/sudoers/parse_ldif.c:760 plugins/sudoers/policy.c:149
+#: plugins/sudoers/policy.c:158 plugins/sudoers/policy.c:167
+#: plugins/sudoers/policy.c:193 plugins/sudoers/policy.c:324
+#: plugins/sudoers/policy.c:339 plugins/sudoers/policy.c:341
+#: plugins/sudoers/policy.c:371 plugins/sudoers/policy.c:380
+#: plugins/sudoers/policy.c:428 plugins/sudoers/policy.c:438
+#: plugins/sudoers/policy.c:447 plugins/sudoers/policy.c:456
+#: plugins/sudoers/policy.c:543 plugins/sudoers/policy.c:890
+#: plugins/sudoers/prompt.c:93 plugins/sudoers/pwutil.c:195
+#: plugins/sudoers/pwutil.c:266 plugins/sudoers/pwutil.c:344
+#: plugins/sudoers/pwutil.c:518 plugins/sudoers/pwutil.c:583
+#: plugins/sudoers/pwutil.c:655 plugins/sudoers/pwutil.c:854
+#: plugins/sudoers/pwutil.c:910 plugins/sudoers/pwutil.c:954
+#: plugins/sudoers/pwutil.c:1011 plugins/sudoers/set_perms.c:359
+#: plugins/sudoers/set_perms.c:698 plugins/sudoers/set_perms.c:1061
+#: plugins/sudoers/set_perms.c:1364 plugins/sudoers/set_perms.c:1529
+#: plugins/sudoers/sssd.c:144 plugins/sudoers/sssd.c:407
+#: plugins/sudoers/sssd.c:470 plugins/sudoers/sssd.c:514
+#: plugins/sudoers/sssd.c:561 plugins/sudoers/sssd.c:754
+#: plugins/sudoers/strvec_join.c:53 plugins/sudoers/stubs.c:111
+#: plugins/sudoers/stubs.c:119 plugins/sudoers/sudoers.c:299
+#: plugins/sudoers/sudoers.c:325 plugins/sudoers/sudoers.c:374
+#: plugins/sudoers/sudoers.c:384 plugins/sudoers/sudoers.c:425
+#: plugins/sudoers/sudoers.c:787 plugins/sudoers/sudoers.c:922
+#: plugins/sudoers/sudoers.c:975 plugins/sudoers/sudoers.c:1241
+#: plugins/sudoers/sudoreplay.c:552 plugins/sudoers/sudoreplay.c:555
+#: plugins/sudoers/sudoreplay.c:1259 plugins/sudoers/sudoreplay.c:1469
+#: plugins/sudoers/sudoreplay.c:1473 plugins/sudoers/testsudoers.c:128
+#: plugins/sudoers/testsudoers.c:225 plugins/sudoers/testsudoers.c:242
+#: plugins/sudoers/testsudoers.c:581 plugins/sudoers/timestamp.c:422
+#: plugins/sudoers/timestamp.c:466 plugins/sudoers/timestamp.c:967
+#: plugins/sudoers/timestamp.c:1105 plugins/sudoers/toke_util.c:77
+#: plugins/sudoers/toke_util.c:105 plugins/sudoers/toke_util.c:130
+#: plugins/sudoers/toke_util.c:154 plugins/sudoers/toke_util.c:193
+#: plugins/sudoers/tsdump.c:123 plugins/sudoers/visudo.c:143
+#: plugins/sudoers/visudo.c:321 plugins/sudoers/visudo.c:327
+#: plugins/sudoers/visudo.c:433 plugins/sudoers/visudo.c:609
+#: plugins/sudoers/visudo.c:926 plugins/sudoers/visudo.c:999 toke.l:928
+#: toke.l:1057 toke.l:1109 toke.l:1117
#, c-format
msgid "%s: %s"
msgstr "%s:%s"
-#: lib/eventlog/eventlog.c:285 lib/iolog/iolog_json.c:463
-#: lib/iolog/iolog_json.c:466 lib/iolog/iolog_json.c:468
-#: lib/iolog/iolog_json.c:560 plugins/sudoers/cvtsudoers_ldif.c:244
-#: plugins/sudoers/cvtsudoers_ldif.c:251 plugins/sudoers/cvtsudoers_ldif.c:571
-#: plugins/sudoers/env.c:323 plugins/sudoers/env.c:330
-#: plugins/sudoers/env.c:437 plugins/sudoers/iolog.c:618
-#: plugins/sudoers/ldap.c:517 plugins/sudoers/ldap.c:748
-#: plugins/sudoers/ldap.c:1081 plugins/sudoers/ldap_conf.c:222
-#: plugins/sudoers/ldap_conf.c:312 plugins/sudoers/linux_audit.c:90
-#: plugins/sudoers/policy.c:556 plugins/sudoers/policy.c:711
-#: plugins/sudoers/policy.c:721 plugins/sudoers/prompt.c:161
-#: plugins/sudoers/sudoers.c:983 plugins/sudoers/testsudoers.c:249
-#: plugins/sudoers/toke_util.c:169
+#: lib/eventlog/eventlog.c:265 lib/iolog/iolog_json.c:509
+#: lib/iolog/iolog_json.c:512 lib/iolog/iolog_json.c:514
+#: plugins/sudoers/cvtsudoers_ldif.c:244 plugins/sudoers/cvtsudoers_ldif.c:251
+#: plugins/sudoers/cvtsudoers_ldif.c:571 plugins/sudoers/env.c:326
+#: plugins/sudoers/env.c:333 plugins/sudoers/env.c:444
+#: plugins/sudoers/iolog.c:631 plugins/sudoers/ldap.c:517
+#: plugins/sudoers/ldap.c:748 plugins/sudoers/ldap.c:1081
+#: plugins/sudoers/ldap_conf.c:222 plugins/sudoers/ldap_conf.c:312
+#: plugins/sudoers/linux_audit.c:92 plugins/sudoers/policy.c:573
+#: plugins/sudoers/policy.c:728 plugins/sudoers/policy.c:738
+#: plugins/sudoers/prompt.c:161 plugins/sudoers/strvec_join.c:62
+#: plugins/sudoers/testsudoers.c:246 plugins/sudoers/toke_util.c:206
#, c-format
msgid "internal error, %s overflow"
msgstr "內部錯誤,%s 溢出"
-#: lib/eventlog/eventlog.c:343
+#: lib/eventlog/eventlog.c:324
#, c-format
msgid "unable to dup stdin: %m"
msgstr "無法 dup stdin:%m"
-#: lib/eventlog/eventlog.c:388
+#: lib/eventlog/eventlog.c:366
#, c-format
msgid "unable to execute %s: %m"
msgstr "無法執行 %s:%m"
-#: lib/eventlog/eventlog.c:428 plugins/sudoers/auth/aix_auth.c:198
+#: lib/eventlog/eventlog.c:407 plugins/sudoers/auth/aix_auth.c:198
msgid "unable to fork"
msgstr "無法執行 fork"
-#: lib/eventlog/eventlog.c:436 lib/eventlog/eventlog.c:490
+#: lib/eventlog/eventlog.c:415 lib/eventlog/eventlog.c:469
#, c-format
msgid "unable to fork: %m"
msgstr "無法執行 fork:%m"
-#: lib/eventlog/eventlog.c:480
+#: lib/eventlog/eventlog.c:459
#, c-format
msgid "unable to open pipe: %m"
msgstr "無法開啟管線:%m"
-#: lib/eventlog/eventlog.c:894
+#: lib/eventlog/eventlog.c:882
#, c-format
msgid "%8s : %s"
msgstr "%8s : %s"
-#: lib/eventlog/eventlog.c:923
+#: lib/eventlog/eventlog.c:911
#, c-format
msgid "%8s : (command continued) %s"
msgstr "%8s : (指令繼續執行) %s"
-#: lib/iolog/iolog_fileio.c:155
-#, c-format
-msgid "%s exists but is not a directory (0%o)"
-msgstr "%s 存在,但非目錄 (0%o)"
-
-#: lib/iolog/iolog_fileio.c:185 lib/iolog/iolog_fileio.c:231
-#: plugins/sudoers/timestamp.c:205
-#, c-format
-msgid "unable to mkdir %s"
-msgstr "無法建立目錄 %s"
-
-#: lib/iolog/iolog_fileio.c:235 plugins/sudoers/visudo.c:732
-#: plugins/sudoers/visudo.c:743
-#, c-format
-msgid "unable to change mode of %s to 0%o"
-msgstr "無法將 %s 的模式變更為 0%o"
-
-#: lib/iolog/iolog_json.c:114
+#: lib/iolog/iolog_json.c:115
#, c-format
msgid "expected JSON_STRING, got %d"
msgstr "應為 JSON_STRNG,但收到 %d"
-#: lib/iolog/iolog_json.c:327
+#: lib/iolog/iolog_json.c:120
+msgid "JSON_ARRAY too large"
+msgstr "JSON_ARRAY 太大"
+
+#: lib/iolog/iolog_json.c:352
msgid "missing double quote in name"
msgstr "名稱中缺少雙引號"
-#: lib/iolog/iolog_json.c:414
+#: lib/iolog/iolog_json.c:449
+msgid "missing JSON_OBJECT"
+msgstr "缺少 JSON_OBJECT"
+
+#: lib/iolog/iolog_json.c:453
#, c-format
msgid "expected JSON_OBJECT, got %d"
msgstr "應為 JSON_OBJECT,但收到 %d"
-#: lib/iolog/iolog_json.c:629 lib/iolog/iolog_json.c:753
+#: lib/iolog/iolog_json.c:599
+#, c-format
+msgid "json stack exhausted (max %u frames)"
+msgstr "JSON 堆疊用盡(最多 %u 個框架)"
+
+#: lib/iolog/iolog_json.c:673
+msgid "objects must consist of name:value pairs"
+msgstr "物件必須由「鍵:值」對組成"
+
+#: lib/iolog/iolog_json.c:678 lib/iolog/iolog_json.c:709
+#: lib/iolog/iolog_json.c:753 lib/iolog/iolog_json.c:775
+#: lib/iolog/iolog_json.c:797 lib/iolog/iolog_json.c:819
+#: lib/iolog/iolog_json.c:841
+msgid "missing separator between values"
+msgstr "數值間缺少分隔符號"
+
+#: lib/iolog/iolog_json.c:693 lib/iolog/iolog_json.c:867
msgid "unmatched close brace"
msgstr "未對稱的右大括弧"
-#: lib/iolog/iolog_json.c:638
+#: lib/iolog/iolog_json.c:704
msgid "unexpected array"
msgstr "不應有陣列"
-#: lib/iolog/iolog_json.c:651 lib/iolog/iolog_json.c:755
+#: lib/iolog/iolog_json.c:724 lib/iolog/iolog_json.c:870
msgid "unmatched close bracket"
msgstr "未對稱的右中括弧"
-#: lib/iolog/iolog_json.c:659
+#: lib/iolog/iolog_json.c:735
msgid "unexpected string"
msgstr "不應有字串"
-#: lib/iolog/iolog_json.c:669
+#: lib/iolog/iolog_json.c:746
msgid "missing colon after name"
msgstr "名稱後缺少冒號"
-#: lib/iolog/iolog_json.c:680 lib/iolog/iolog_json.c:695
-#: lib/iolog/iolog_json.c:710
+#: lib/iolog/iolog_json.c:767 lib/iolog/iolog_json.c:789
msgid "unexpected boolean"
msgstr "不應有布林值"
-#: lib/iolog/iolog_json.c:726
+#: lib/iolog/iolog_json.c:811
+msgid "unexpected null"
+msgstr "不應有 null"
+
+#: lib/iolog/iolog_json.c:832
msgid "unexpected number"
msgstr "不應有數字"
-#: lib/iolog/iolog_json.c:763
-#, c-format
-msgid "%s:%u unable to parse \"%s\""
-msgstr "%s:%u 無法解析「%s」"
+#: lib/iolog/iolog_json.c:879
+msgid "parse error"
+msgstr "解析發生錯誤"
-#: lib/iolog/iolog_util.c:71
+#: lib/iolog/iolog_legacy.c:65
#, c-format
msgid "%s: invalid log file"
msgstr "%s:無效的記錄檔案"
-#: lib/iolog/iolog_util.c:89
+#: lib/iolog/iolog_legacy.c:83
#, c-format
msgid "%s: time stamp field is missing"
msgstr "%s:缺少 時間戳 欄位"
-#: lib/iolog/iolog_util.c:95
+#: lib/iolog/iolog_legacy.c:89
#, c-format
msgid "%s: time stamp %s: %s"
msgstr "%s:時間戳 %s:%s"
-#: lib/iolog/iolog_util.c:102
+#: lib/iolog/iolog_legacy.c:96
#, c-format
msgid "%s: user field is missing"
msgstr "%s:缺少 使用者 欄位"
-#: lib/iolog/iolog_util.c:111
+#: lib/iolog/iolog_legacy.c:107
#, c-format
msgid "%s: runas user field is missing"
msgstr "%s:缺少 runas 使用者 欄位"
-#: lib/iolog/iolog_util.c:120
+#: lib/iolog/iolog_legacy.c:118
#, c-format
msgid "%s: runas group field is missing"
msgstr "%s:缺少 runas 群組 欄位"
-#: lib/iolog/iolog_util.c:419
+#: lib/iolog/iolog_mkdirs.c:89
+#, c-format
+msgid "%s exists but is not a directory (0%o)"
+msgstr "%s 存在,但非目錄 (0%o)"
+
+#: lib/iolog/iolog_mkdirs.c:119 lib/iolog/iolog_mkdtemp.c:72
+#: plugins/sudoers/timestamp.c:205
+#, c-format
+msgid "unable to mkdir %s"
+msgstr "無法建立目錄 %s"
+
+#: lib/iolog/iolog_mkdtemp.c:76 plugins/sudoers/visudo.c:726
+#: plugins/sudoers/visudo.c:737
+#, c-format
+msgid "unable to change mode of %s to 0%o"
+msgstr "無法將 %s 的模式變更為 0%o"
+
+#: lib/iolog/iolog_timing.c:255
#, c-format
msgid "error reading timing file: %s"
msgstr "讀取計時檔案時發生錯誤:%s"
-#: lib/iolog/iolog_util.c:426
+#: lib/iolog/iolog_timing.c:262
#, c-format
msgid "invalid timing file line: %s"
msgstr "無效的計時檔案行號:%s"
-#: logsrvd/iolog_writer.c:919
+#: logsrvd/iolog_writer.c:946
msgid "log is already complete, cannot be restarted"
msgstr "記錄已完成,無法重新開始"
-#: logsrvd/iolog_writer.c:950
+#: logsrvd/iolog_writer.c:977
msgid "unable to restart log"
msgstr "無法重新啟動記錄"
@@ -488,141 +521,141 @@ msgstr "%s/%s:無法往前搜尋 %zu"
msgid "unable to find resume point [%lld, %ld] in %s/%s"
msgstr "%3$s/%4$s 中找不到繼續點 [%1$lld, %2$ld]"
-#: logsrvd/logsrvd.c:290 logsrvd/logsrvd.c:353 logsrvd/logsrvd.c:394
-#: logsrvd/logsrvd.c:449 logsrvd/logsrvd.c:517 logsrvd/logsrvd.c:568
-#: logsrvd/logsrvd.c:600 logsrvd/logsrvd.c:632
+#: logsrvd/logsrvd.c:294 logsrvd/logsrvd.c:357 logsrvd/logsrvd.c:398
+#: logsrvd/logsrvd.c:453 logsrvd/logsrvd.c:522 logsrvd/logsrvd.c:573
+#: logsrvd/logsrvd.c:605 logsrvd/logsrvd.c:637
msgid "state machine error"
msgstr "狀態機器發生錯誤"
-#: logsrvd/logsrvd.c:299
+#: logsrvd/logsrvd.c:303
msgid "invalid AcceptMessage"
msgstr "無效的 AcceptMessage"
-#: logsrvd/logsrvd.c:307
+#: logsrvd/logsrvd.c:311
msgid "error parsing AcceptMessage"
msgstr "解析 AcceptMessage 時發生錯誤"
-#: logsrvd/logsrvd.c:314
+#: logsrvd/logsrvd.c:318
msgid "error creating I/O log"
msgstr "建立 I/O 日誌時發生錯誤"
-#: logsrvd/logsrvd.c:321
+#: logsrvd/logsrvd.c:325
msgid "error logging accept event"
msgstr "記錄接受事件時發生錯誤"
-#: logsrvd/logsrvd.c:362
+#: logsrvd/logsrvd.c:366
msgid "invalid RejectMessage"
msgstr "無效的 RejectMessage"
-#: logsrvd/logsrvd.c:370
+#: logsrvd/logsrvd.c:374
msgid "error parsing RejectMessage"
msgstr "解析 RejectMessage 時發生錯誤"
-#: logsrvd/logsrvd.c:376
+#: logsrvd/logsrvd.c:380
msgid "error logging reject event"
msgstr "記錄拒絕事件時發生錯誤"
-#: logsrvd/logsrvd.c:486
+#: logsrvd/logsrvd.c:490
msgid "invalid AlertMessage"
msgstr "無效的 AlertMessage"
-#: logsrvd/logsrvd.c:494
+#: logsrvd/logsrvd.c:499
msgid "error parsing AlertMessage"
msgstr "解析 AlertMessage 時發生錯誤"
-#: logsrvd/logsrvd.c:502
+#: logsrvd/logsrvd.c:507
msgid "error logging alert event"
msgstr "記錄提醒事件時發生錯誤"
-#: logsrvd/logsrvd.c:523 logsrvd/logsrvd.c:574 logsrvd/logsrvd.c:606
+#: logsrvd/logsrvd.c:528 logsrvd/logsrvd.c:579 logsrvd/logsrvd.c:611
msgid "protocol error"
msgstr "通訊協定錯誤"
-#: logsrvd/logsrvd.c:533
+#: logsrvd/logsrvd.c:538
msgid "error writing IoBuffer"
msgstr "寫入 IoBuffer 時發生錯誤"
-#: logsrvd/logsrvd.c:585
+#: logsrvd/logsrvd.c:590
msgid "error writing ChangeWindowSize"
msgstr "寫入 ChangeWindowSize 時發生錯誤"
-#: logsrvd/logsrvd.c:617
+#: logsrvd/logsrvd.c:622
msgid "error writing CommandSuspend"
msgstr "寫入 CommandSuspend 時發生錯誤"
-#: logsrvd/logsrvd.c:702
+#: logsrvd/logsrvd.c:707
msgid "unrecognized ClientMessage type"
msgstr "無法識別的 ClientMessage 類型"
-#: logsrvd/logsrvd.c:967
+#: logsrvd/logsrvd.c:978
msgid "client message too large"
msgstr "用戶端訊息過長"
-#: logsrvd/logsrvd.c:1197 logsrvd/logsrvd.c:1205
+#: logsrvd/logsrvd.c:1208 logsrvd/logsrvd.c:1216
#, c-format
msgid "unable to set TLS 1.2 ciphersuite to %s: %s"
msgstr "無法將 TLS 1.2 加密套件設為 %s:%s"
-#: logsrvd/logsrvd.c:1225 logsrvd/logsrvd.c:1233
+#: logsrvd/logsrvd.c:1236 logsrvd/logsrvd.c:1244
#, c-format
msgid "unable to set TLS 1.3 ciphersuite to %s: %s"
msgstr "無法將 TLS 1.3 加密套件設為 %s:%s"
-#: logsrvd/logsrvd.c:1269
+#: logsrvd/logsrvd.c:1280
#, c-format
msgid "unable to get TLS server method: %s"
msgstr "無法取得 TLS 伺服器方法:%s"
-#: logsrvd/logsrvd.c:1274
+#: logsrvd/logsrvd.c:1285
#, c-format
msgid "unable to create TLS context: %s"
msgstr "無法建立 TLS 情境:%s"
-#: logsrvd/logsrvd.c:1281 plugins/sudoers/log_client.c:236
+#: logsrvd/logsrvd.c:1292 plugins/sudoers/log_client.c:236
#, c-format
msgid "unable to load certificate %s"
msgstr "無法載入 %s 憑證"
-#: logsrvd/logsrvd.c:1294 plugins/sudoers/log_client.c:216
+#: logsrvd/logsrvd.c:1305 plugins/sudoers/log_client.c:216
#, c-format
msgid "unable to load certificate authority bundle %s"
msgstr "無法載入 %s 憑證授權單位組合"
-#: logsrvd/logsrvd.c:1339 plugins/sudoers/log_client.c:249
+#: logsrvd/logsrvd.c:1350 plugins/sudoers/log_client.c:249
#, c-format
msgid "unable to load private key %s"
msgstr "無法載入 %s 私鑰"
-#: logsrvd/logsrvd.c:1356 logsrvd/logsrvd.c:1365
+#: logsrvd/logsrvd.c:1367 logsrvd/logsrvd.c:1376
#, c-format
msgid "unable to set diffie-hellman parameters: %s"
msgstr "無法設定迪菲-赫爾曼參數:%s"
-#: logsrvd/logsrvd.c:1378
+#: logsrvd/logsrvd.c:1389
#, c-format
msgid "unable to set minimum protocol version to TLS 1.2: %s"
msgstr "無法將最低通訊協定版本設為 TLS 1.2:%s"
-#: logsrvd/logsrvd.c:1563
+#: logsrvd/logsrvd.c:1574
msgid "unable to get remote IP addr"
msgstr "無法取得遠端 IP 地址"
-#: logsrvd/logsrvd.c:1591 plugins/sudoers/log_client.c:263
+#: logsrvd/logsrvd.c:1602 plugins/sudoers/log_client.c:263
#, c-format
msgid "Unable to attach user data to the ssl object: %s"
msgstr "無法將使用者資料連結至 SSL 物件:%s"
-#: logsrvd/logsrvd.c:1599 logsrvd/logsrvd.c:1721 logsrvd/logsrvd.c:1823
-#: logsrvd/sendlog.c:1125 logsrvd/sendlog.c:1481 logsrvd/sendlog.c:1496
-#: logsrvd/sendlog.c:1554 plugins/sudoers/iolog.c:956
-#: plugins/sudoers/iolog.c:1089 plugins/sudoers/iolog.c:1187
+#: logsrvd/logsrvd.c:1610 logsrvd/logsrvd.c:1732 logsrvd/logsrvd.c:1834
+#: logsrvd/sendlog.c:1141 logsrvd/sendlog.c:1497 logsrvd/sendlog.c:1512
+#: logsrvd/sendlog.c:1570 plugins/sudoers/iolog.c:969
+#: plugins/sudoers/iolog.c:1102 plugins/sudoers/iolog.c:1200
#: plugins/sudoers/log_client.c:109 plugins/sudoers/log_client.c:324
#: plugins/sudoers/log_client.c:340 plugins/sudoers/log_client.c:386
-#: plugins/sudoers/log_client.c:587 plugins/sudoers/log_client.c:594
-#: plugins/sudoers/log_client.c:1103 plugins/sudoers/log_client.c:1376
-#: plugins/sudoers/log_client.c:1417 plugins/sudoers/log_client.c:1425
-#: plugins/sudoers/log_client.c:1576 plugins/sudoers/log_client.c:1692
-#: plugins/sudoers/log_client.c:2007 plugins/sudoers/log_client.c:2015
+#: plugins/sudoers/log_client.c:585 plugins/sudoers/log_client.c:592
+#: plugins/sudoers/log_client.c:1109 plugins/sudoers/log_client.c:1382
+#: plugins/sudoers/log_client.c:1423 plugins/sudoers/log_client.c:1431
+#: plugins/sudoers/log_client.c:1582 plugins/sudoers/log_client.c:1698
+#: plugins/sudoers/log_client.c:2015 plugins/sudoers/log_client.c:2023
#: plugins/sudoers/sudoreplay.c:512 plugins/sudoers/sudoreplay.c:559
#: plugins/sudoers/sudoreplay.c:791 plugins/sudoers/sudoreplay.c:903
#: plugins/sudoers/sudoreplay.c:993 plugins/sudoers/sudoreplay.c:1008
@@ -632,281 +665,290 @@ msgstr "無法將使用者資料連結至 SSL 物件:%s"
msgid "unable to add event to queue"
msgstr "無法將事件附加到佇列"
-#: logsrvd/logsrvd.c:1775 logsrvd/logsrvd.c:2011
+#: logsrvd/logsrvd.c:1786 logsrvd/logsrvd.c:2033
msgid "unable setup listen socket"
msgstr "無法設定監聽通訊端 (socket)"
-#: logsrvd/logsrvd.c:1917 logsrvd/sendlog.c:124
-#, c-format
-msgid ""
-"%s - send sudo I/O log to remote server\n"
-"\n"
-msgstr ""
-"%s - 傳送 sudo I/O 記錄至遠端伺服器\n"
-"\n"
+#: logsrvd/logsrvd.c:1934
+msgid "sudo log server"
+msgstr "sudo 記錄伺服器"
-#: logsrvd/logsrvd.c:1920
-#, fuzzy
-msgid ""
-"\n"
-"Options:\n"
-" -f, --file path to configuration file\n"
-" -h --help display help message and exit\n"
-" -n, --no-fork do not fork, run in the foreground\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"選項:\n"
-" -f, --file 設定檔路徑\n"
-" -h, --help 顯示說明訊息並退出\n"
-" -n, --no-fork 不要 fork,在前景執行\n"
-" -R, --random-drop percent chance connections will drop\n"
-" -V, --version 顯示版本資訊後離開\n"
+#: logsrvd/logsrvd.c:1936 logsrvd/sendlog.c:127
+msgid "Options:"
+msgstr "選項:"
+
+#: logsrvd/logsrvd.c:1938
+msgid "path to configuration file"
+msgstr "設定檔路徑"
+
+#: logsrvd/logsrvd.c:1940 logsrvd/sendlog.c:129
+msgid "display help message and exit"
+msgstr "顯示說明訊息後結束"
+
+#: logsrvd/logsrvd.c:1942
+msgid "do not fork, run in the foreground"
+msgstr "不要 fork,在前景執行"
+
+#: logsrvd/logsrvd.c:1944
+msgid "percent chance connections will drop"
+msgstr "拋棄連線的機率百分比"
-#: logsrvd/logsrvd.c:1972 logsrvd/sendlog.c:1719
+#: logsrvd/logsrvd.c:1946 logsrvd/sendlog.c:157
+msgid "display version information and exit"
+msgstr "顯示版本資訊後結束"
+
+#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1735
msgid "Protobuf-C version 1.3 or higher required"
msgstr "需要 Protobuf-C 版本 1.3 或更高版本"
-#: logsrvd/logsrvd.c:1990
+#: logsrvd/logsrvd.c:2012
#, c-format
msgid "invalid random drop value: %s"
msgstr "隨機丟棄值無效:%s"
-#: logsrvd/logsrvd.c:1994 logsrvd/sendlog.c:1769
+#: logsrvd/logsrvd.c:2016 logsrvd/sendlog.c:1785
#: plugins/sudoers/cvtsudoers.c:228 plugins/sudoers/sudoreplay.c:299
-#: plugins/sudoers/visudo.c:177
+#: plugins/sudoers/visudo.c:175
#, c-format
msgid "%s version %s\n"
msgstr "%s 版本 %s\n"
-#: logsrvd/logsrvd_conf.c:331
+#: logsrvd/logsrvd_conf.c:332
msgid "TLS not supported"
msgstr "不支援 TLS"
-#: logsrvd/logsrvd_conf.c:343
+#: logsrvd/logsrvd_conf.c:344
#, c-format
msgid "%s:%s"
msgstr "%s:%s"
-#: logsrvd/logsrvd_conf.c:409 logsrvd/logsrvd_conf.c:653
+#: logsrvd/logsrvd_conf.c:411 logsrvd/logsrvd_conf.c:656
#, c-format
msgid "%s: not a fully qualified path"
msgstr "%s:路徑不完全合法"
-#: logsrvd/logsrvd_conf.c:767
+#: logsrvd/logsrvd_conf.c:770
#, c-format
msgid "%s:%d unmatched '[': %s"
msgstr "%s:%d 不對稱的 '[': %s"
-#: logsrvd/logsrvd_conf.c:778
+#: logsrvd/logsrvd_conf.c:781
#, c-format
msgid "%s:%d invalid config section: %s"
msgstr "%s:%d 無效的設定檔區段:%s"
-#: logsrvd/logsrvd_conf.c:786
+#: logsrvd/logsrvd_conf.c:789
#, c-format
msgid "%s:%d invalid configuration line: %s"
msgstr "%s:%d 無效的設定檔行:%s"
-#: logsrvd/logsrvd_conf.c:792
+#: logsrvd/logsrvd_conf.c:795
#, c-format
msgid "%s:%d expected section name: %s"
msgstr "%s:%d 應有區段名稱:%s"
-#: logsrvd/logsrvd_conf.c:806
+#: logsrvd/logsrvd_conf.c:809
#, c-format
msgid "invalid value for %s: %s"
msgstr "%s 的值無效:%s"
-#: logsrvd/logsrvd_conf.c:814
+#: logsrvd/logsrvd_conf.c:817
#, c-format
msgid "%s:%d unknown key: %s"
msgstr "%s:%d 未知鍵:%s"
-#: logsrvd/logsrvd_conf.c:1003
+#: logsrvd/logsrvd_conf.c:1006
#, c-format
msgid "unknown syslog facility %s"
msgstr "未知的 syslog 裝置 %s"
-#: logsrvd/logsrvd_conf.c:1007 logsrvd/logsrvd_conf.c:1011
-#: logsrvd/logsrvd_conf.c:1015
+#: logsrvd/logsrvd_conf.c:1010 logsrvd/logsrvd_conf.c:1014
+#: logsrvd/logsrvd_conf.c:1018
#, c-format
msgid "unknown syslog priority %s"
msgstr "未知 syslog 優先級 %s"
-#: logsrvd/sendlog.c:127
-msgid ""
-"\n"
-"Options:\n"
-" --help display help message and exit\n"
-" -A, --accept only send an accept event (no I/O)\n"
-" -h, --host host to send logs to\n"
-" -i, --iolog_id remote ID of I/O log to be resumed\n"
-" -p, --port port to use when connecting to host\n"
-" -r, --restart restart previous I/O log transfer\n"
-" -R, --reject reject the command with the given reason\n"
-" -b, --ca-bundle certificate bundle file to verify server's cert against\n"
-" -c, --cert certificate file for TLS handshake\n"
-" -k, --key private key file\n"
-" -n, --no-verify do not verify server certificate\n"
-" -t, --test test audit server by sending selected I/O log n times in parallel\n"
-" -V, --version display version information and exit\n"
-msgstr ""
-"\n"
-"選項:\n"
-" --help 顯示說明訊息後離開\n"
-" -A, --accept 只傳送接受事件 (無 I/O)\n"
-" -h, --host 要傳送記錄至的目標主機\n"
-" -i, --iolog_id 要繼續的 I/O 記錄的遠端 ID\n"
-" -p, --port 連線到主機時要使用的連線埠\n"
-" -r, --restart 重新啟動上次的 I/O 記錄傳輸\n"
-" -R, --reject 以提供的原因拒絕命令\n"
-" -b, --ca-bundle 用來核驗伺服器憑證針對對象的憑證組合檔案\n"
-" -c, --cert 用於 TLS 交握的憑證檔案\n"
-" -k, --key 私鑰檔案\n"
-" -n, --no-verify 不核驗伺服器憑證\n"
-" -t, --test 透過並行傳送選取的 I/O 記錄 n 次來測試稽核伺服器\n"
-" -V, --version 顯示版本資訊後離開\n"
-
-#: logsrvd/sendlog.c:164 plugins/sudoers/log_client.c:432
+#: logsrvd/sendlog.c:125
+msgid "send sudo I/O log to remote server"
+msgstr "傳送 sudo I/O 記錄到遠端伺服器"
+
+#: logsrvd/sendlog.c:131
+msgid "only send an accept event (no I/O)"
+msgstr "只傳送接受事件(無 I/O)"
+
+#: logsrvd/sendlog.c:134
+msgid "certificate bundle file to verify server's cert against"
+msgstr "用來驗證伺服器 cert against 的憑證組合檔案"
+
+#: logsrvd/sendlog.c:136
+msgid "certificate file for TLS handshake"
+msgstr "用在 TLS 交握的憑證檔案"
+
+#: logsrvd/sendlog.c:139
+msgid "host to send logs to"
+msgstr "記錄的傳送目的地主機"
+
+#: logsrvd/sendlog.c:141
+msgid "remote ID of I/O log to be resumed"
+msgstr "要恢復的 I/O 記錄的遠端 ID"
+
+#: logsrvd/sendlog.c:144
+msgid "private key file"
+msgstr "私鑰檔案"
+
+#: logsrvd/sendlog.c:146
+msgid "do not verify server certificate"
+msgstr "不要驗證伺服器的憑證"
+
+#: logsrvd/sendlog.c:149
+msgid "port to use when connecting to host"
+msgstr "連接主機時要使用的連接埠"
+
+#: logsrvd/sendlog.c:151
+msgid "restart previous I/O log transfer"
+msgstr "重新開始上一個 I/O 記錄傳輸"
+
+#: logsrvd/sendlog.c:153
+msgid "reject the command with the given reason"
+msgstr "以指定理由拒絕命令"
+
+#: logsrvd/sendlog.c:155
+msgid "test audit server by sending selected I/O log n times in parallel"
+msgstr "透過平行傳送選取 I/O 記錄 n 次來測試稽核伺服器"
+
+#: logsrvd/sendlog.c:180 plugins/sudoers/log_client.c:432
#, c-format
msgid "unable to look up %s:%s: %s"
msgstr "無法查看 %s:%s: %s"
-#: logsrvd/sendlog.c:202
+#: logsrvd/sendlog.c:218
msgid "unable to get server IP addr"
msgstr "無法取得伺服器 IP 地址"
-#: logsrvd/sendlog.c:256 plugins/sudoers/sudoreplay.c:851
+#: logsrvd/sendlog.c:272 plugins/sudoers/sudoreplay.c:851
#, c-format
msgid "unable to read %s/%s: %s"
msgstr "無法讀取 %s/%s: %s"
-#: logsrvd/sendlog.c:277 plugins/sudoers/log_client.c:694
+#: logsrvd/sendlog.c:293 plugins/sudoers/log_client.c:692
#, c-format
msgid "client message too large: %zu"
msgstr "用戶端訊息過長:%zu"
-#: logsrvd/sendlog.c:810
+#: logsrvd/sendlog.c:826
#, c-format
msgid "%s: write buffer already in use"
msgstr "%s:寫入緩衝區正被使用"
-#: logsrvd/sendlog.c:862 plugins/sudoers/iolog.c:880
-#: plugins/sudoers/iolog.c:949
+#: logsrvd/sendlog.c:878 plugins/sudoers/iolog.c:893
+#: plugins/sudoers/iolog.c:962
#, c-format
msgid "unexpected I/O event %d"
msgstr "不應有的 I/O 事件 %d"
-#: logsrvd/sendlog.c:908 logsrvd/sendlog.c:925 logsrvd/sendlog.c:959
-#: plugins/sudoers/log_client.c:1118 plugins/sudoers/log_client.c:1386
-#: plugins/sudoers/log_client.c:1454 plugins/sudoers/log_client.c:1490
+#: logsrvd/sendlog.c:924 logsrvd/sendlog.c:941 logsrvd/sendlog.c:975
+#: plugins/sudoers/log_client.c:1124 plugins/sudoers/log_client.c:1392
+#: plugins/sudoers/log_client.c:1460 plugins/sudoers/log_client.c:1496
#, c-format
msgid "%s: unexpected state %d"
msgstr "%s:不應有的狀態 %d"
-#: logsrvd/sendlog.c:931 plugins/sudoers/log_client.c:1460
+#: logsrvd/sendlog.c:947 plugins/sudoers/log_client.c:1466
msgid "invalid ServerHello"
msgstr "無效的 ServerHello"
-#: logsrvd/sendlog.c:995 plugins/sudoers/log_client.c:1534
+#: logsrvd/sendlog.c:1011 plugins/sudoers/log_client.c:1540
#, c-format
msgid "error message received from server: %s"
msgstr "自伺服器接收到錯誤訊息:%s"
-#: logsrvd/sendlog.c:1008 plugins/sudoers/log_client.c:1547
+#: logsrvd/sendlog.c:1024 plugins/sudoers/log_client.c:1553
#, c-format
msgid "abort message received from server: %s"
msgstr "自伺服器接收到中止訊息:%s"
-#: logsrvd/sendlog.c:1027 plugins/sudoers/log_client.c:1566
+#: logsrvd/sendlog.c:1043 plugins/sudoers/log_client.c:1572
msgid "unable to unpack ServerMessage"
msgstr "無法解開 ServerMessage"
-#: logsrvd/sendlog.c:1067 plugins/sudoers/log_client.c:1597
+#: logsrvd/sendlog.c:1083 plugins/sudoers/log_client.c:1603
#, c-format
msgid "%s: unexpected type_case value %d"
msgstr "%s:不應有的 type_case 值 %d"
-#: logsrvd/sendlog.c:1096
+#: logsrvd/sendlog.c:1112
msgid "timeout reading from server"
msgstr "從伺服器讀取逾時"
-#: logsrvd/sendlog.c:1174
+#: logsrvd/sendlog.c:1190
msgid "premature EOF"
msgstr "檔案過早結束"
-#: logsrvd/sendlog.c:1187 plugins/sudoers/log_client.c:1751
+#: logsrvd/sendlog.c:1203 plugins/sudoers/log_client.c:1761
#, c-format
msgid "server message too large: %u"
msgstr "伺服器訊息過長:%u"
-#: logsrvd/sendlog.c:1238
+#: logsrvd/sendlog.c:1254
msgid "timeout writing to server"
msgstr "寫入至伺服器逾時"
-#: logsrvd/sendlog.c:1457 plugins/sudoers/log_client.c:296
+#: logsrvd/sendlog.c:1473 plugins/sudoers/log_client.c:296
msgid "TLS handshake timeout occurred"
msgstr "遇到 TLS 交握逾時"
-#: logsrvd/sendlog.c:1476 logsrvd/sendlog.c:1491
+#: logsrvd/sendlog.c:1492 logsrvd/sendlog.c:1507
#: plugins/sudoers/log_client.c:318 plugins/sudoers/log_client.c:334
msgid "unable to set event"
msgstr "無法設定事件"
-#: logsrvd/sendlog.c:1501 logsrvd/sendlog.c:1505
+#: logsrvd/sendlog.c:1517 logsrvd/sendlog.c:1521
#, c-format
msgid "TLS connection failed: %s"
msgstr "TLS 連線失敗:%s"
-#: logsrvd/sendlog.c:1538
+#: logsrvd/sendlog.c:1554
#, c-format
msgid "Unable to initialize ssl context: %s"
msgstr "無法初始化 SSL 上下文:%s"
-#: logsrvd/sendlog.c:1543 plugins/sudoers/log_client.c:258
+#: logsrvd/sendlog.c:1559 plugins/sudoers/log_client.c:258
#, c-format
msgid "Unable to allocate ssl object: %s"
msgstr "無法配置 SSL 物件:%s"
-#: logsrvd/sendlog.c:1548
+#: logsrvd/sendlog.c:1564
#, c-format
msgid "Unable to attach socket to the ssl object: %s"
msgstr "無法將 socket 通訊端連結至 SSL 物件:%s"
-#: logsrvd/sendlog.c:1792
+#: logsrvd/sendlog.c:1808
msgid "both restart point and iolog ID must be specified"
msgstr "必須指定重新啟動點 (restart point) 和 iolog ID"
-#: logsrvd/sendlog.c:1796
+#: logsrvd/sendlog.c:1812
msgid "a restart point may not be set when no I/O is sent"
msgstr "未傳送 I/O 時,不應設定重新開始點"
-#: logsrvd/sendlog.c:1871
+#: logsrvd/sendlog.c:1887
#, c-format
msgid "exited prematurely with state %d"
msgstr "過早結束,狀態碼 %d"
-#: logsrvd/sendlog.c:1872
+#: logsrvd/sendlog.c:1888
#, c-format
msgid "elapsed time sent to server [%lld, %ld]"
msgstr "已傳送耗用時間至伺服器 [%lld, %ld]"
-#: logsrvd/sendlog.c:1874
+#: logsrvd/sendlog.c:1890
#, c-format
msgid "commit point received from server [%lld, %ld]"
msgstr "自伺服器接收到提交點 (commit point) [%lld, %ld]"
-#: plugins/sudoers/alias.c:148
-#, c-format
-msgid "Alias \"%s\" already defined"
-msgstr "別名「%s」已定義過"
-
-#: plugins/sudoers/audit.c:206 plugins/sudoers/audit.c:343
-#: plugins/sudoers/log_client.c:954 plugins/sudoers/log_client.c:1002
-#: plugins/sudoers/log_client.c:1050 plugins/sudoers/log_client.c:1175
-#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:114
+#: plugins/sudoers/audit.c:259 plugins/sudoers/audit.c:398
+#: plugins/sudoers/log_client.c:960 plugins/sudoers/log_client.c:1008
+#: plugins/sudoers/log_client.c:1056 plugins/sudoers/log_client.c:1181
+#: plugins/sudoers/logging.c:548 plugins/sudoers/policy.c:120
msgid "unable to get time of day"
msgstr "無法取得一日時間"
@@ -1012,38 +1054,38 @@ msgstr "%s:無法驗證 TGT!可能發生攻擊事件!:%s"
msgid "unable to initialize PAM: %s"
msgstr "無法初始化 PAM:%s"
-#: plugins/sudoers/auth/pam.c:317
+#: plugins/sudoers/auth/pam.c:337
#, c-format
msgid "PAM authentication error: %s"
msgstr "PAM 認證發生錯誤:%s"
-#: plugins/sudoers/auth/pam.c:336
+#: plugins/sudoers/auth/pam.c:356
msgid "account validation failure, is your account locked?"
msgstr "檢查帳號有效性失敗,請檢查您的帳號是否被鎖定。"
-#: plugins/sudoers/auth/pam.c:347
+#: plugins/sudoers/auth/pam.c:367
msgid "Account or password is expired, reset your password and try again"
msgstr "帳號或密碼已標為過期,請重設密碼後重試"
-#: plugins/sudoers/auth/pam.c:353
+#: plugins/sudoers/auth/pam.c:373
#, c-format
msgid "unable to change expired password: %s"
msgstr "無法變更已過期密碼:%s"
-#: plugins/sudoers/auth/pam.c:364
+#: plugins/sudoers/auth/pam.c:384
msgid "Password expired, contact your system administrator"
msgstr "密碼已標為過期,請聯絡您的系統管理員"
-#: plugins/sudoers/auth/pam.c:369
+#: plugins/sudoers/auth/pam.c:389
msgid "Account expired or PAM config lacks an \"account\" section for sudo, contact your system administrator"
msgstr "帳號已過期或是 PAM 組態設定缺少 sudo 的 \"account\" 部份,請聯絡您的系統管理員"
-#: plugins/sudoers/auth/pam.c:377 plugins/sudoers/auth/pam.c:382
+#: plugins/sudoers/auth/pam.c:397 plugins/sudoers/auth/pam.c:402
#, c-format
msgid "PAM account management error: %s"
msgstr "PAM 帳號管理發生錯誤:%s"
-#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:243
+#: plugins/sudoers/auth/rfc1938.c:99 plugins/sudoers/visudo.c:241
#, c-format
msgid "you do not exist in the %s database"
msgstr "您不在 %s 資料庫中"
@@ -1116,7 +1158,27 @@ msgstr "無法確定稽核條件"
msgid "unable to commit audit record"
msgstr "無法提交稽核記錄"
-#: plugins/sudoers/check.c:258
+#: plugins/sudoers/check.c:264
+#, c-format
+msgid "error reading lecture file %s"
+msgstr "讀取使用指引檔案 %s 時發生錯誤"
+
+#: plugins/sudoers/check.c:270
+#, c-format
+msgid "ignoring lecture file %s: not a regular file"
+msgstr "忽略使用指引檔案 %s:不是一般檔案"
+
+#: plugins/sudoers/check.c:274 plugins/sudoers/cvtsudoers.c:618
+#: plugins/sudoers/cvtsudoers.c:639 plugins/sudoers/cvtsudoers.c:1249
+#: plugins/sudoers/cvtsudoers_json.c:872 plugins/sudoers/cvtsudoers_ldif.c:688
+#: plugins/sudoers/sudoers.c:1028 plugins/sudoers/sudoreplay.c:1435
+#: plugins/sudoers/timestamp.c:431 plugins/sudoers/tsdump.c:128
+#: plugins/sudoers/visudo.c:913
+#, c-format
+msgid "unable to open %s"
+msgstr "無法開啟 %s"
+
+#: plugins/sudoers/check.c:283
msgid ""
"\n"
"We trust you have received the usual lecture from the local System\n"
@@ -1136,21 +1198,41 @@ msgstr ""
" #3) 權力越大則責任越大。\n"
"\n"
-#: plugins/sudoers/check.c:301 plugins/sudoers/check.c:311
-#: plugins/sudoers/sudoers.c:837 plugins/sudoers/sudoers.c:858
+#: plugins/sudoers/check.c:325 plugins/sudoers/check.c:335
+#: plugins/sudoers/sudoers.c:830 plugins/sudoers/sudoers.c:851
#: plugins/sudoers/tsdump.c:119
#, c-format
msgid "unknown uid: %u"
msgstr "未知 UID:%u"
-#: plugins/sudoers/check.c:306 plugins/sudoers/exptilde.c:85
-#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1088
-#: plugins/sudoers/sudoers.c:440 plugins/sudoers/sudoers.c:1307
-#: plugins/sudoers/testsudoers.c:219 plugins/sudoers/testsudoers.c:386
+#: plugins/sudoers/check.c:330 plugins/sudoers/exptilde.c:85
+#: plugins/sudoers/iolog.c:118 plugins/sudoers/policy.c:1123
+#: plugins/sudoers/sudoers.c:432 plugins/sudoers/sudoers.c:1283
+#: plugins/sudoers/testsudoers.c:216 plugins/sudoers/testsudoers.c:383
#, c-format
msgid "unknown user: %s"
msgstr "未知使用者:%s"
+#: plugins/sudoers/check_aliases.c:56
+#, c-format
+msgid "Error: %s:%d:%d: cycle in %s \"%s\""
+msgstr "錯誤:%s:%d:%d: %s「%s」中有循環"
+
+#: plugins/sudoers/check_aliases.c:57
+#, c-format
+msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
+msgstr "警告:%s:%d:%d: %s「%s」中有循環"
+
+#: plugins/sudoers/check_aliases.c:61
+#, c-format
+msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "錯誤:%s:%d:%d: 已引用但未定義 %s「%s」"
+
+#: plugins/sudoers/check_aliases.c:62
+#, c-format
+msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
+msgstr "警告:%s:%d:%d: 已引用但未定義 %s「%s」"
+
#: plugins/sudoers/cvtsudoers.c:194
#, c-format
msgid "order increment: %s: %s"
@@ -1166,7 +1248,7 @@ msgstr "順序開頭:%s:%s"
msgid "order padding: %s: %s"
msgstr "順序間距:%s:%s"
-#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:179
+#: plugins/sudoers/cvtsudoers.c:230 plugins/sudoers/visudo.c:177
#, c-format
msgid "%s grammar version %d\n"
msgstr "%s 語法版本 %d\n"
@@ -1186,9 +1268,9 @@ msgstr "不支援的輸出格式 %s"
msgid "%s: input and output files must be different"
msgstr "%s:輸入及輸出檔案必須不一致"
-#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:178
-#: plugins/sudoers/testsudoers.c:258 plugins/sudoers/visudo.c:249
-#: plugins/sudoers/visudo.c:603 plugins/sudoers/visudo.c:926
+#: plugins/sudoers/cvtsudoers.c:330 plugins/sudoers/sudoers.c:177
+#: plugins/sudoers/testsudoers.c:255 plugins/sudoers/visudo.c:247
+#: plugins/sudoers/visudo.c:597 plugins/sudoers/visudo.c:917
msgid "unable to initialize sudoers default values"
msgstr "無法初始化 sudoers 預設值"
@@ -1217,37 +1299,28 @@ msgstr "隱藏類型無效:%s"
msgid "invalid filter: %s"
msgstr "篩選器無效:%s"
-#: plugins/sudoers/cvtsudoers.c:617 plugins/sudoers/cvtsudoers.c:634
-#: plugins/sudoers/cvtsudoers.c:1244 plugins/sudoers/cvtsudoers_json.c:872
-#: plugins/sudoers/cvtsudoers_ldif.c:688 plugins/sudoers/sudoers.c:1053
-#: plugins/sudoers/sudoreplay.c:1435 plugins/sudoers/timestamp.c:441
-#: plugins/sudoers/tsdump.c:128 plugins/sudoers/visudo.c:922
-#, c-format
-msgid "unable to open %s"
-msgstr "無法開啟 %s"
-
-#: plugins/sudoers/cvtsudoers.c:637 plugins/sudoers/visudo.c:931
+#: plugins/sudoers/cvtsudoers.c:642 plugins/sudoers/visudo.c:922
#, c-format
msgid "failed to parse %s file, unknown error"
msgstr "無法解析 %s 檔案,原因:未知錯誤"
-#: plugins/sudoers/cvtsudoers.c:645
+#: plugins/sudoers/cvtsudoers.c:650
#, c-format
msgid "parse error in %s near line %d\n"
msgstr "因接近行 %2$d 的 %1$s 字串而導致解析錯誤\n"
-#: plugins/sudoers/cvtsudoers.c:648
+#: plugins/sudoers/cvtsudoers.c:653
#, c-format
msgid "parse error in %s\n"
msgstr "因 %s 導致解析錯誤\n"
-#: plugins/sudoers/cvtsudoers.c:1291 plugins/sudoers/sudoreplay.c:1124
-#: plugins/sudoers/timestamp.c:325 plugins/sudoers/timestamp.c:328
+#: plugins/sudoers/cvtsudoers.c:1296 plugins/sudoers/sudoreplay.c:1124
+#: plugins/sudoers/timestamp.c:315 plugins/sudoers/timestamp.c:318
#, c-format
msgid "unable to write to %s"
msgstr "無法寫入 %s"
-#: plugins/sudoers/cvtsudoers.c:1314
+#: plugins/sudoers/cvtsudoers.c:1319
#, c-format
msgid ""
"%s - convert between sudoers file formats\n"
@@ -1256,7 +1329,7 @@ msgstr ""
"%s - 轉換 sudoers 檔案之間的格式\n"
"\n"
-#: plugins/sudoers/cvtsudoers.c:1316
+#: plugins/sudoers/cvtsudoers.c:1321
msgid ""
"\n"
"Options:\n"
@@ -1902,6 +1975,15 @@ msgstr "執行命令前,要切換到的根目錄:%s"
msgid "The format of logs to produce: %s"
msgstr "要產出的記錄格式:%s"
+#: plugins/sudoers/def_data.c:574
+msgid "Enable SELinux RBAC support"
+msgstr "啟用 SELinux RBAC 支援"
+
+#: plugins/sudoers/def_data.c:578
+#, c-format
+msgid "Path to the file that is created the first time sudo is run: %s"
+msgstr "sudo 第一次執行時建立的檔案路徑:%s"
+
#: plugins/sudoers/defaults.c:185
#, c-format
msgid "%s:%d:%d: unknown defaults entry \"%s\""
@@ -1952,35 +2034,35 @@ msgstr "%s:%d:%d: 「%s」值對「%s」選項無效"
msgid "%s: value \"%s\" is invalid for option \"%s\""
msgstr "%s:值「%s」對選項「%s」無效"
-#: plugins/sudoers/defaults.c:1030
+#: plugins/sudoers/defaults.c:1040
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s:%d:%d: \"%s\" 的值開頭必須是 '/'、'~' 或 '*'"
-#: plugins/sudoers/defaults.c:1034
+#: plugins/sudoers/defaults.c:1044
#, c-format
msgid "%s: values for \"%s\" must start with a '/', '~', or '*'"
msgstr "%s: \"%s\" 的值開頭必須是 '/'、'~' 或 '*'"
-#: plugins/sudoers/defaults.c:1045
+#: plugins/sudoers/defaults.c:1055
#, c-format
msgid "%s:%d:%d: values for \"%s\" must start with a '/'"
msgstr "%s:%d:%d: \"%s\" 的值開頭必須是 '/'"
-#: plugins/sudoers/defaults.c:1049
+#: plugins/sudoers/defaults.c:1059
#, c-format
msgid "%s: values for \"%s\" must start with a '/'"
msgstr "%s:「%s」的值必須以「/」開頭"
-#: plugins/sudoers/env.c:405
+#: plugins/sudoers/env.c:412
msgid "sudo_putenv: corrupted envp, length mismatch"
msgstr "sudo_putenv:envp 損壞,長度不符"
-#: plugins/sudoers/env.c:1133
+#: plugins/sudoers/env.c:1095
msgid "unable to rebuild the environment"
msgstr "無法重建環境"
-#: plugins/sudoers/env.c:1207
+#: plugins/sudoers/env.c:1169
#, c-format
msgid "sorry, you are not allowed to set the following environment variables: %s"
msgstr "對不起,您沒有權限設定以下環境變數:%s"
@@ -2044,42 +2126,42 @@ msgstr "無法解析網路遮罩「%s」"
msgid "Local IP address and netmask pairs:\n"
msgstr "本機 IP 位址和網路遮罩配對:\n"
-#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:445
-#: plugins/sudoers/sudoers.c:1341 plugins/sudoers/testsudoers.c:410
+#: plugins/sudoers/iolog.c:143 plugins/sudoers/sudoers.c:437
+#: plugins/sudoers/sudoers.c:1317 plugins/sudoers/testsudoers.c:407
#, c-format
msgid "unknown group: %s"
msgstr "未知群組:%s"
-#: plugins/sudoers/iolog.c:622
+#: plugins/sudoers/iolog.c:635
msgid "unable to update sequence file"
msgstr "無法更新序列檔"
-#: plugins/sudoers/iolog.c:653 plugins/sudoers/iolog.c:841
-#: plugins/sudoers/iolog.c:994 plugins/sudoers/iolog.c:1001
-#: plugins/sudoers/iolog.c:1122 plugins/sudoers/iolog.c:1129
-#: plugins/sudoers/iolog.c:1228 plugins/sudoers/iolog.c:1235
+#: plugins/sudoers/iolog.c:666 plugins/sudoers/iolog.c:854
+#: plugins/sudoers/iolog.c:1007 plugins/sudoers/iolog.c:1014
+#: plugins/sudoers/iolog.c:1135 plugins/sudoers/iolog.c:1142
+#: plugins/sudoers/iolog.c:1241 plugins/sudoers/iolog.c:1248
#, c-format
msgid "unable to write to I/O log file: %s"
msgstr "無法寫入 I/O 記錄檔案:%s"
-#: plugins/sudoers/iolog.c:661
+#: plugins/sudoers/iolog.c:674
#, c-format
msgid "unable to create %s/%s"
msgstr "無法建立 %s/%s"
-#: plugins/sudoers/iolog.c:886
+#: plugins/sudoers/iolog.c:899
#, c-format
msgid "%s: internal error, I/O log file for event %d not open"
msgstr "%s:內部錯誤,未開啟事件 %d 的 I/O 記錄檔案"
-#: plugins/sudoers/iolog.c:979 plugins/sudoers/iolog.c:1107
-#: plugins/sudoers/iolog.c:1212 plugins/sudoers/timestamp.c:855
-#: plugins/sudoers/timestamp.c:947 plugins/sudoers/visudo.c:493
-#: plugins/sudoers/visudo.c:499
+#: plugins/sudoers/iolog.c:992 plugins/sudoers/iolog.c:1120
+#: plugins/sudoers/iolog.c:1225 plugins/sudoers/timestamp.c:836
+#: plugins/sudoers/timestamp.c:928 plugins/sudoers/visudo.c:487
+#: plugins/sudoers/visudo.c:493
msgid "unable to read the clock"
msgstr "無法讀取時鐘"
-#: plugins/sudoers/iolog.c:1204 plugins/sudoers/log_client.c:1193
+#: plugins/sudoers/iolog.c:1217 plugins/sudoers/log_client.c:1199
#, c-format
msgid "%s: internal error, invalid signal %d"
msgstr "%s:內部錯誤,訊號 %d 無效"
@@ -2107,7 +2189,7 @@ msgstr "無法初始化 LDAP:%s"
msgid "start_tls specified but LDAP libs do not support ldap_start_tls_s() or ldap_start_tls_s_np()"
msgstr "指定了 start_tls,但 LDAP 函式庫不支援 ldap_start_tls_s() 或 ldap_start_tls_s_np()"
-#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:744
+#: plugins/sudoers/ldap.c:1834 plugins/sudoers/parse_ldif.c:746
#, c-format
msgid "invalid sudoOrder attribute: %s"
msgstr "無效的 sudoOrder 屬性:%s"
@@ -2126,21 +2208,29 @@ msgstr "不支援的 LDAP URI 類型:%s"
msgid "unable to mix ldap and ldaps URIs"
msgstr "無法混合 ldap 和 ldaps URI"
-#: plugins/sudoers/ldap_util.c:553 plugins/sudoers/ldap_util.c:555
+#: plugins/sudoers/ldap_util.c:529 plugins/sudoers/ldap_util.c:536
+#: plugins/sudoers/ldap_util.c:544 plugins/sudoers/ldap_util.c:553
+#: plugins/sudoers/ldap_util.c:561 plugins/sudoers/ldap_util.c:571
+#: plugins/sudoers/ldap_util.c:579
+#, c-format
+msgid "duplicate sudoOption: %s%s%s"
+msgstr "sudoOption 有重複:%s%s%s"
+
+#: plugins/sudoers/ldap_util.c:598 plugins/sudoers/ldap_util.c:600
#, c-format
msgid "unable to convert sudoOption: %s%s%s"
msgstr "無法轉換 sudoOption: %s%s%s"
-#: plugins/sudoers/linux_audit.c:58
+#: plugins/sudoers/linux_audit.c:58 plugins/sudoers/linux_audit.c:60
msgid "unable to open audit system"
msgstr "無法開啟稽核系統"
-#: plugins/sudoers/linux_audit.c:101
+#: plugins/sudoers/linux_audit.c:103
msgid "unable to send audit message"
msgstr "無法傳送稽核訊息"
#: plugins/sudoers/log_client.c:113 plugins/sudoers/log_client.c:391
-#: plugins/sudoers/log_client.c:1431 plugins/sudoers/log_client.c:2023
+#: plugins/sudoers/log_client.c:1437 plugins/sudoers/log_client.c:2031
msgid "error in event loop"
msgstr "事件循環中發生錯誤"
@@ -2162,20 +2252,20 @@ msgstr "TLS 初始化失敗"
msgid "TLS handshake was unsuccessful"
msgstr "TLS 交握失敗"
-#: plugins/sudoers/log_client.c:1202
+#: plugins/sudoers/log_client.c:1208
#, c-format
msgid "%s: internal error, invalid exit status %d"
msgstr "%s:內部錯誤,退出狀態碼 %d 無效"
-#: plugins/sudoers/log_client.c:1738
+#: plugins/sudoers/log_client.c:1724 plugins/sudoers/log_client.c:1748
msgid "lost connection to log server"
msgstr "失去對記錄伺服器的連線"
-#: plugins/sudoers/log_client.c:1815
+#: plugins/sudoers/log_client.c:1825
msgid "missing write buffer"
msgstr "缺少寫入緩衝區"
-#: plugins/sudoers/log_client.c:1964
+#: plugins/sudoers/log_client.c:1972
msgid "unable to connect to log server"
msgstr "無法連線到記錄伺服器"
@@ -2211,15 +2301,15 @@ msgstr "對不起,使用者 %s 不能在 %s 上執行 sudo。\n"
msgid "Sorry, user %s is not allowed to execute '%s%s%s' as %s%s%s on %s.\n"
msgstr "對不起,使用者 %1$s 不允許以 %8$s 上的 %5$s%6$s%7$s 身份執行「%2$s%3$s%4$s」\n"
-#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:583
-#: plugins/sudoers/sudoers.c:585 plugins/sudoers/sudoers.c:587
-#: plugins/sudoers/sudoers.c:589 plugins/sudoers/sudoers.c:739
-#: plugins/sudoers/sudoers.c:741
+#: plugins/sudoers/logging.c:316 plugins/sudoers/sudoers.c:575
+#: plugins/sudoers/sudoers.c:577 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/sudoers.c:581 plugins/sudoers/sudoers.c:723
+#: plugins/sudoers/sudoers.c:725
#, c-format
msgid "%s: command not found"
msgstr "%s:找不到指令"
-#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:579
+#: plugins/sudoers/logging.c:318 plugins/sudoers/sudoers.c:571
#, c-format
msgid ""
"ignoring \"%s\" found in '.'\n"
@@ -2242,12 +2332,12 @@ msgstr "認證失敗"
msgid "a password is required"
msgstr "需要密碼"
-#: plugins/sudoers/logging.c:729
+#: plugins/sudoers/logging.c:739
#, c-format
msgid "unable to open log file: %s"
msgstr "無法開啟記錄檔案:%s"
-#: plugins/sudoers/logging.c:762
+#: plugins/sudoers/logging.c:772
#, c-format
msgid "unable to write log file: %s"
msgstr "無法寫入記錄檔案:%s"
@@ -2257,7 +2347,7 @@ msgstr "無法寫入記錄檔案:%s"
msgid "digest for %s (%s) is not in %s form"
msgstr "%s(%s) 的摘要的形式不是 %s"
-#: plugins/sudoers/parse.c:518
+#: plugins/sudoers/parse.c:530
#, c-format
msgid ""
"\n"
@@ -2266,7 +2356,7 @@ msgstr ""
"\n"
"LDAP 角色:%s\n"
-#: plugins/sudoers/parse.c:521
+#: plugins/sudoers/parse.c:533
msgid ""
"\n"
"Sudoers entry:\n"
@@ -2274,104 +2364,110 @@ msgstr ""
"\n"
"Sudoers 條目:\n"
-#: plugins/sudoers/parse.c:523
+#: plugins/sudoers/parse.c:535
msgid " RunAsUsers: "
msgstr " RunAs 使用者:"
-#: plugins/sudoers/parse.c:538
+#: plugins/sudoers/parse.c:550
msgid " RunAsGroups: "
msgstr " RunAs 群組:"
-#: plugins/sudoers/parse.c:548
+#: plugins/sudoers/parse.c:560
msgid " Options: "
msgstr " 選項:"
-#: plugins/sudoers/parse.c:602
+#: plugins/sudoers/parse.c:614
msgid " Commands:\n"
msgstr " 指令:\n"
-#: plugins/sudoers/parse.c:793
+#: plugins/sudoers/parse.c:805
#, c-format
msgid "Matching Defaults entries for %s on %s:\n"
msgstr "比較 %s (%s 上) 的預設條目:\n"
-#: plugins/sudoers/parse.c:811
+#: plugins/sudoers/parse.c:823
#, c-format
msgid "Runas and Command-specific defaults for %s:\n"
msgstr "%s RunAs 和指令指定的預設值:\n"
-#: plugins/sudoers/parse.c:829
+#: plugins/sudoers/parse.c:841
#, c-format
msgid "User %s may run the following commands on %s:\n"
msgstr "使用者 %s 可以在 %s 上執行以下指令:\n"
-#: plugins/sudoers/parse.c:844
+#: plugins/sudoers/parse.c:856
#, c-format
msgid "User %s is not allowed to run sudo on %s.\n"
msgstr "使用者 %s 沒有權限在 %s 上執行 sudo。\n"
-#: plugins/sudoers/parse_ldif.c:614
+#: plugins/sudoers/parse_ldif.c:616
#, c-format
msgid "ignoring incomplete sudoRole: cn: %s"
msgstr "將忽略不完整的 sudoRole:cn:%s"
-#: plugins/sudoers/parse_ldif.c:674
+#: plugins/sudoers/parse_ldif.c:676
#, c-format
msgid "invalid LDIF attribute: %s"
msgstr "LDIF 屬性無效:%s"
-#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:102
+#: plugins/sudoers/policy.c:78 plugins/sudoers/policy.c:108
#, c-format
msgid "invalid %.*s set by sudo front-end"
msgstr "sudo 前端設定的 %.*s 無效"
-#: plugins/sudoers/policy.c:310 plugins/sudoers/testsudoers.c:272
+#: plugins/sudoers/policy.c:314 plugins/sudoers/testsudoers.c:269
msgid "unable to parse network address list"
msgstr "無法解析網路位址列表"
-#: plugins/sudoers/policy.c:455
+#: plugins/sudoers/policy.c:465
msgid "user name not set by sudo front-end"
msgstr "sudo 前端未設定使用者名稱"
-#: plugins/sudoers/policy.c:459
+#: plugins/sudoers/policy.c:469
msgid "user-ID not set by sudo front-end"
msgstr "sudo 前端未設定使用者 ID (user-ID)"
-#: plugins/sudoers/policy.c:463
+#: plugins/sudoers/policy.c:473
msgid "group-ID not set by sudo front-end"
msgstr "sudo 前端未設定群組 ID (group-ID)"
-#: plugins/sudoers/policy.c:467
+#: plugins/sudoers/policy.c:477
msgid "host name not set by sudo front-end"
msgstr "sudo 前端未設定主機名稱"
-#: plugins/sudoers/policy.c:643
+#: plugins/sudoers/policy.c:660
#, c-format
msgid "invalid working directory: %s"
msgstr "無效的工作目錄:%s"
-#: plugins/sudoers/policy.c:811
+#: plugins/sudoers/policy.c:828
#, c-format
msgid "invalid chroot directory: %s"
msgstr "無效的 chroot 目錄:%s"
-#: plugins/sudoers/policy.c:947 plugins/sudoers/visudo.c:231
-#: plugins/sudoers/visudo.c:860
+#: plugins/sudoers/policy.c:963 plugins/sudoers/visudo.c:229
+#: plugins/sudoers/visudo.c:851
#, c-format
msgid "unable to execute %s"
msgstr "無法執行 %s"
-#: plugins/sudoers/policy.c:1111
+#: plugins/sudoers/policy.c:1030 plugins/sudoers/policy.c:1067
+#: plugins/sudoers/policy.c:1089 plugins/sudoers/policy.c:1115
+#, c-format
+msgid "%s: invalid mode flags from sudo front end: 0x%x"
+msgstr "%s:來自 sudo 前端的無效 mode 旗標:0x%x"
+
+#: plugins/sudoers/policy.c:1146
#, c-format
msgid "Sudoers policy plugin version %s\n"
msgstr "Sudoers 策略外掛程式版本 %s\n"
-#: plugins/sudoers/policy.c:1113
+#: plugins/sudoers/policy.c:1148
#, c-format
msgid "Sudoers file grammar version %d\n"
msgstr "Sudoers 檔案文法版本 %d\n"
-#: plugins/sudoers/policy.c:1117
+#: plugins/sudoers/policy.c:1152
#, c-format
msgid ""
"\n"
@@ -2380,86 +2476,91 @@ msgstr ""
"\n"
"Sudoers 路徑:%s\n"
-#: plugins/sudoers/policy.c:1120
+#: plugins/sudoers/policy.c:1155
#, c-format
msgid "nsswitch path: %s\n"
msgstr "nsswitch 路徑:%s\n"
-#: plugins/sudoers/policy.c:1122
+#: plugins/sudoers/policy.c:1157
#, c-format
msgid "ldap.conf path: %s\n"
msgstr "ldap.conf 路徑:%s\n"
-#: plugins/sudoers/policy.c:1123
+#: plugins/sudoers/policy.c:1158
#, c-format
msgid "ldap.secret path: %s\n"
msgstr "ldap.secret 路徑:%s\n"
-#: plugins/sudoers/policy.c:1156
+#: plugins/sudoers/policy.c:1191
#, c-format
msgid "unable to register hook of type %d (version %d.%d)"
msgstr "無法註冊類型為 %d 的觸發器 (版本 %d.%d)"
-#: plugins/sudoers/pwutil.c:217 plugins/sudoers/pwutil.c:235
+#: plugins/sudoers/policy.c:1209
+#, c-format
+msgid "unable to deregister hook of type %d (version %d.%d)"
+msgstr "無法取消註冊類型為 %d 的觸發器 (版本 %d.%d)"
+
+#: plugins/sudoers/pwutil.c:218 plugins/sudoers/pwutil.c:236
#, c-format
msgid "unable to cache uid %u"
msgstr "無法快取使用者 ID %u"
-#: plugins/sudoers/pwutil.c:229
+#: plugins/sudoers/pwutil.c:230
#, c-format
msgid "unable to cache uid %u, already exists"
msgstr "無法快取使用者 ID %u,原因:使用者 ID 已存在"
-#: plugins/sudoers/pwutil.c:289 plugins/sudoers/pwutil.c:307
-#: plugins/sudoers/pwutil.c:370 plugins/sudoers/pwutil.c:415
+#: plugins/sudoers/pwutil.c:290 plugins/sudoers/pwutil.c:308
+#: plugins/sudoers/pwutil.c:371 plugins/sudoers/pwutil.c:416
#, c-format
msgid "unable to cache user %s"
msgstr "無法快取 %s 使用者"
-#: plugins/sudoers/pwutil.c:302
+#: plugins/sudoers/pwutil.c:303
#, c-format
msgid "unable to cache user %s, already exists"
msgstr "無法快取使用者 %s,原因:已存在"
-#: plugins/sudoers/pwutil.c:534 plugins/sudoers/pwutil.c:552
+#: plugins/sudoers/pwutil.c:535 plugins/sudoers/pwutil.c:553
#, c-format
msgid "unable to cache gid %u"
msgstr "無法快取群組 ID %u"
-#: plugins/sudoers/pwutil.c:546
+#: plugins/sudoers/pwutil.c:547
#, c-format
msgid "unable to cache gid %u, already exists"
msgstr "無法快取群組 ID %u,原因:已經存在"
-#: plugins/sudoers/pwutil.c:599 plugins/sudoers/pwutil.c:617
-#: plugins/sudoers/pwutil.c:665 plugins/sudoers/pwutil.c:707
+#: plugins/sudoers/pwutil.c:601 plugins/sudoers/pwutil.c:619
+#: plugins/sudoers/pwutil.c:680 plugins/sudoers/pwutil.c:730
#, c-format
msgid "unable to cache group %s"
msgstr "無法快取 %s 群組"
-#: plugins/sudoers/pwutil.c:612
+#: plugins/sudoers/pwutil.c:614
#, c-format
msgid "unable to cache group %s, already exists"
msgstr "無法快取群組 %s,原因:已經存在"
-#: plugins/sudoers/pwutil.c:834 plugins/sudoers/pwutil.c:885
-#: plugins/sudoers/pwutil.c:935 plugins/sudoers/pwutil.c:987
+#: plugins/sudoers/pwutil.c:877 plugins/sudoers/pwutil.c:928
+#: plugins/sudoers/pwutil.c:978 plugins/sudoers/pwutil.c:1030
#, c-format
msgid "unable to cache group list for %s, already exists"
msgstr "無法快取群組列表 %s,原因:已經存在"
-#: plugins/sudoers/pwutil.c:840 plugins/sudoers/pwutil.c:890
-#: plugins/sudoers/pwutil.c:941 plugins/sudoers/pwutil.c:992
+#: plugins/sudoers/pwutil.c:883 plugins/sudoers/pwutil.c:933
+#: plugins/sudoers/pwutil.c:984 plugins/sudoers/pwutil.c:1035
#, c-format
msgid "unable to cache group list for %s"
msgstr "無法快取 %s 的群組列表"
-#: plugins/sudoers/pwutil.c:879
+#: plugins/sudoers/pwutil.c:922
#, c-format
msgid "unable to parse groups for %s"
msgstr "無法解析 %s 的群組"
-#: plugins/sudoers/pwutil.c:981
+#: plugins/sudoers/pwutil.c:1024
#, c-format
msgid "unable to parse gids for %s"
msgstr "無法解析 %s 的群組 ID"
@@ -2534,135 +2635,139 @@ msgstr "無法初始化 SSS 來源。是否已在您的電腦上安裝 SSSD?"
msgid "unable to find symbol \"%s\" in %s"
msgstr "無法在 %2$s 中找到符號「%1$s」"
-#: plugins/sudoers/sudoers.c:214 plugins/sudoers/sudoers.c:1010
+#: plugins/sudoers/sudoers.c:213 plugins/sudoers/sudoers.c:985
msgid "problem with defaults entries"
msgstr "預設條目有問題"
-#: plugins/sudoers/sudoers.c:218
+#: plugins/sudoers/sudoers.c:217
msgid "no valid sudoers sources found, quitting"
msgstr "未找到有效的 sudoers 來源,退出"
-#: plugins/sudoers/sudoers.c:292
+#: plugins/sudoers/sudoers.c:291
#, c-format
msgid "user not allowed to change root directory to %s"
msgstr "不允許使用者切換根目錄至 %s"
-#: plugins/sudoers/sudoers.c:294
+#: plugins/sudoers/sudoers.c:293
#, c-format
msgid "you are not permitted to use the -R option with %s"
msgstr "不允許您將 -R 選項與 %s 一起使用"
-#: plugins/sudoers/sudoers.c:319
+#: plugins/sudoers/sudoers.c:318
#, c-format
msgid "user not allowed to change directory to %s"
msgstr "不允許使用者切換至 %s 目錄"
-#: plugins/sudoers/sudoers.c:320
+#: plugins/sudoers/sudoers.c:319
#, c-format
msgid "you are not permitted to use the -D option with %s"
msgstr "不允許您將 -D 選項與 %s 一起使用"
-#: plugins/sudoers/sudoers.c:351
+#: plugins/sudoers/sudoers.c:345
+msgid "no command specified"
+msgstr "未指定命令"
+
+#: plugins/sudoers/sudoers.c:355
msgid "sudoers specifies that root is not allowed to sudo"
msgstr "sudoers 指定 root 不允許執行 sudo"
-#: plugins/sudoers/sudoers.c:411
+#: plugins/sudoers/sudoers.c:403
msgid "user not allowed to override closefrom limit"
msgstr "使用者不允許覆蓋 closefrom 限制"
-#: plugins/sudoers/sudoers.c:412
+#: plugins/sudoers/sudoers.c:404
msgid "you are not permitted to use the -C option"
msgstr "您沒有權限使用 -C 選項"
-#: plugins/sudoers/sudoers.c:472
+#: plugins/sudoers/sudoers.c:464
#, c-format
msgid "timestamp owner (%s): No such user"
msgstr "時間戳所有者 (%s):無此使用者"
-#: plugins/sudoers/sudoers.c:487
+#: plugins/sudoers/sudoers.c:479
msgid "no tty"
msgstr "找不到終端"
-#: plugins/sudoers/sudoers.c:488
+#: plugins/sudoers/sudoers.c:480
msgid "sorry, you must have a tty to run sudo"
msgstr "抱歉,您必須先要有終端才能執行 sudo"
-#: plugins/sudoers/sudoers.c:495
+#: plugins/sudoers/sudoers.c:487
#, c-format
msgid "invalid shell for user %s: %s"
msgstr "%s 使用者的 Shell 無效:%s"
-#: plugins/sudoers/sudoers.c:578
+#: plugins/sudoers/sudoers.c:570
msgid "command in current directory"
msgstr "目前目錄中的指令"
-#: plugins/sudoers/sudoers.c:597
+#: plugins/sudoers/sudoers.c:589
msgid "user not allowed to set a command timeout"
msgstr "使用者不允許設定命令逾時"
-#: plugins/sudoers/sudoers.c:599
+#: plugins/sudoers/sudoers.c:591
msgid "sorry, you are not allowed set a command timeout"
msgstr "抱歉,您沒有權限設定逾時時間"
-#: plugins/sudoers/sudoers.c:607
+#: plugins/sudoers/sudoers.c:599
msgid "user not allowed to preserve the environment"
msgstr "使用者不允許保留環境"
-#: plugins/sudoers/sudoers.c:609
+#: plugins/sudoers/sudoers.c:601
msgid "sorry, you are not allowed to preserve the environment"
msgstr "抱歉,您沒有權限保留環境"
-#: plugins/sudoers/sudoers.c:945
+#: plugins/sudoers/sudoers.c:936
msgid "command too long"
msgstr "指令過長"
-#: plugins/sudoers/sudoers.c:1003
+#: plugins/sudoers/sudoers.c:973
msgid "sudoedit doesn't need to be run via sudo"
msgstr "sudoedit 不用以 sudo 執行"
-#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/sudoreplay.c:1547
+#: plugins/sudoers/sudoers.c:1032 plugins/sudoers/sudoreplay.c:1547
#: plugins/sudoers/tsdump.c:138
#, c-format
msgid "unable to read %s"
msgstr "無法讀取 %s"
-#: plugins/sudoers/sudoers.c:1082 plugins/sudoers/visudo.c:432
-#: plugins/sudoers/visudo.c:726
+#: plugins/sudoers/sudoers.c:1057 plugins/sudoers/visudo.c:426
+#: plugins/sudoers/visudo.c:720
#, c-format
msgid "unable to stat %s"
msgstr "無法 stat %s"
-#: plugins/sudoers/sudoers.c:1086 plugins/sudoers/visudo.c:1018
+#: plugins/sudoers/sudoers.c:1061 plugins/sudoers/visudo.c:1009
#, c-format
msgid "%s is not a regular file"
msgstr "%s 不是一般檔案"
-#: plugins/sudoers/sudoers.c:1090 plugins/sudoers/timestamp.c:252 toke.l:1112
+#: plugins/sudoers/sudoers.c:1065 plugins/sudoers/timestamp.c:252 toke.l:1138
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s 由使用者 ID %u 所有,應為 %u"
-#: plugins/sudoers/sudoers.c:1094 toke.l:1117
+#: plugins/sudoers/sudoers.c:1069 toke.l:1143
#, c-format
msgid "%s is world writable"
msgstr "%s 允許任何人寫入"
-#: plugins/sudoers/sudoers.c:1098 toke.l:1120
+#: plugins/sudoers/sudoers.c:1073 toke.l:1146
#, c-format
msgid "%s is owned by gid %u, should be %u"
msgstr "%s 屬於群組 ID %u,應為 %u"
-#: plugins/sudoers/sudoers.c:1131
+#: plugins/sudoers/sudoers.c:1106
#, c-format
msgid "only root can use \"-c %s\""
msgstr "只有 root 才能使用「-c %s」"
-#: plugins/sudoers/sudoers.c:1150
+#: plugins/sudoers/sudoers.c:1125
#, c-format
msgid "unknown login class: %s"
msgstr "未知的登入類別:%s"
-#: plugins/sudoers/sudoers.c:1235 plugins/sudoers/sudoers.c:1250
+#: plugins/sudoers/sudoers.c:1211 plugins/sudoers/sudoers.c:1226
#, c-format
msgid "unable to resolve host %s"
msgstr "無法解析主機:%s"
@@ -2812,11 +2917,11 @@ msgstr ""
" -s, --speed=數值 加速或減速輸出速度\n"
" -V, --version 顯示版本訊息並退出"
-#: plugins/sudoers/testsudoers.c:348
+#: plugins/sudoers/testsudoers.c:345
msgid "\thost unmatched"
msgstr "\t主機不相符"
-#: plugins/sudoers/testsudoers.c:351
+#: plugins/sudoers/testsudoers.c:348
msgid ""
"\n"
"Command allowed"
@@ -2824,7 +2929,7 @@ msgstr ""
"\n"
"指令已允許"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command denied"
@@ -2832,7 +2937,7 @@ msgstr ""
"\n"
"指令被拒"
-#: plugins/sudoers/testsudoers.c:352
+#: plugins/sudoers/testsudoers.c:349
msgid ""
"\n"
"Command unmatched"
@@ -2845,121 +2950,121 @@ msgstr ""
msgid "%s is group writable"
msgstr "%s 允許群組寫入"
-#: plugins/sudoers/timestamp.c:336 plugins/sudoers/timestamp.c:680
+#: plugins/sudoers/timestamp.c:326 plugins/sudoers/timestamp.c:661
#, c-format
msgid "unable to truncate time stamp file to %lld bytes"
msgstr "無法將時間戳檔案截短為 %lld 位元組"
-#: plugins/sudoers/timestamp.c:866
+#: plugins/sudoers/timestamp.c:847
msgid "ignoring time stamp from the future"
msgstr "將忽略未來時間的時間戳"
-#: plugins/sudoers/timestamp.c:889
+#: plugins/sudoers/timestamp.c:870
#, c-format
msgid "time stamp too far in the future: %20.20s"
msgstr "時間戳超前目前時間過多:%20.20s"
-#: plugins/sudoers/timestamp.c:1011
+#: plugins/sudoers/timestamp.c:992
#, c-format
msgid "unable to lock time stamp file %s"
msgstr "無法鎖定時間戳檔案 %s"
-#: plugins/sudoers/timestamp.c:1055 plugins/sudoers/timestamp.c:1075
+#: plugins/sudoers/timestamp.c:1036 plugins/sudoers/timestamp.c:1056
#, c-format
msgid "lecture status path too long: %s/%s"
msgstr "指引狀態路徑過長:%s/%s"
-#: plugins/sudoers/toke_util.c:124
+#: plugins/sudoers/toke_util.c:150
msgid "sudoedit should not be specified with a path"
msgstr "sudoedit 不應用路徑指定"
-#: plugins/sudoers/visudo.c:226
+#: plugins/sudoers/visudo.c:224
msgid "the -x option will be removed in a future release"
msgstr "未來版本會移除 -x 選項"
-#: plugins/sudoers/visudo.c:228
+#: plugins/sudoers/visudo.c:226
msgid "please consider using the cvtsudoers utility instead"
msgstr "請考慮換用 cvtsudoers 工具"
-#: plugins/sudoers/visudo.c:279 plugins/sudoers/visudo.c:659
+#: plugins/sudoers/visudo.c:277 plugins/sudoers/visudo.c:653
#, c-format
msgid "press return to edit %s: "
msgstr "按確認鍵編輯 %s:"
-#: plugins/sudoers/visudo.c:340
+#: plugins/sudoers/visudo.c:338
#, c-format
msgid "specified editor (%s) doesn't exist"
msgstr "指定的編輯器 (%s) 不存在"
-#: plugins/sudoers/visudo.c:342
+#: plugins/sudoers/visudo.c:340
#, c-format
msgid "no editor found (editor path = %s)"
msgstr "未找到編輯器 (編輯器路徑 = %s)"
-#: plugins/sudoers/visudo.c:452 plugins/sudoers/visudo.c:460
+#: plugins/sudoers/visudo.c:446 plugins/sudoers/visudo.c:454
msgid "write error"
msgstr "寫入時發生錯誤"
-#: plugins/sudoers/visudo.c:506
+#: plugins/sudoers/visudo.c:500
#, c-format
msgid "unable to stat temporary file (%s), %s unchanged"
msgstr "無法 stat 暫存檔 (%s),%s 未變更"
-#: plugins/sudoers/visudo.c:513
+#: plugins/sudoers/visudo.c:507
#, c-format
msgid "zero length temporary file (%s), %s unchanged"
msgstr "暫存檔內沒有內容 (%s),%s 未變更"
-#: plugins/sudoers/visudo.c:519
+#: plugins/sudoers/visudo.c:513
#, c-format
msgid "editor (%s) failed, %s unchanged"
msgstr "編輯器 (%s) 執行失敗,%s 未變更"
-#: plugins/sudoers/visudo.c:541
+#: plugins/sudoers/visudo.c:535
#, c-format
msgid "%s unchanged"
msgstr "%s 未變更"
-#: plugins/sudoers/visudo.c:598
+#: plugins/sudoers/visudo.c:592
#, c-format
msgid "unable to re-open temporary file (%s), %s unchanged."
msgstr "無法重新開啟暫存檔 (%s),%s 未變更。"
-#: plugins/sudoers/visudo.c:610
+#: plugins/sudoers/visudo.c:604
#, c-format
msgid "unable to parse temporary file (%s), unknown error"
msgstr "無法解析暫存檔 (%s),未知錯誤"
-#: plugins/sudoers/visudo.c:648
+#: plugins/sudoers/visudo.c:642
#, c-format
msgid "internal error, unable to find %s in list!"
msgstr "內部錯誤,原因:列表中找不到 %s!"
-#: plugins/sudoers/visudo.c:728 plugins/sudoers/visudo.c:737
+#: plugins/sudoers/visudo.c:722 plugins/sudoers/visudo.c:731
#, c-format
msgid "unable to set (uid, gid) of %s to (%u, %u)"
msgstr "無法將 %s 的 (uid, gid) 設為 (%u, %u)"
-#: plugins/sudoers/visudo.c:760
+#: plugins/sudoers/visudo.c:754
#, c-format
msgid "%s and %s not on the same file system, using mv to rename"
msgstr "%s 和 %s 不在同一個檔案系統,將使用 mv 進行重新命名"
-#: plugins/sudoers/visudo.c:774
+#: plugins/sudoers/visudo.c:765
#, c-format
msgid "command failed: '%s %s %s', %s unchanged"
msgstr "指令失敗:「%s %s %s」,%s 未變更"
-#: plugins/sudoers/visudo.c:784
+#: plugins/sudoers/visudo.c:775
#, c-format
msgid "error renaming %s, %s unchanged"
msgstr "重新命名 %s 發生錯誤,%s 未變更"
-#: plugins/sudoers/visudo.c:805
+#: plugins/sudoers/visudo.c:796
msgid "What now? "
msgstr "現在該做些什麼?"
-#: plugins/sudoers/visudo.c:819
+#: plugins/sudoers/visudo.c:810
msgid ""
"Options are:\n"
" (e)dit sudoers file again\n"
@@ -2971,66 +3076,46 @@ msgstr ""
" 退出,不儲存對 sudoers 檔案的變更 (x)\n"
" 退出並將變更儲存到 sudoers 檔案(十分危險!)(Q)\n"
-#: plugins/sudoers/visudo.c:865
+#: plugins/sudoers/visudo.c:856
#, c-format
msgid "unable to run %s"
msgstr "無法執行 %s"
-#: plugins/sudoers/visudo.c:895
+#: plugins/sudoers/visudo.c:886
#, c-format
msgid "%s: wrong owner (uid, gid) should be (%u, %u)\n"
msgstr "%s:所有者無效,(uid, gid) 應為 (%u, %u)\n"
-#: plugins/sudoers/visudo.c:902
+#: plugins/sudoers/visudo.c:893
#, c-format
msgid "%s: bad permissions, should be mode 0%o\n"
msgstr "%s:權限不正確,模式應該是 0%o\n"
-#: plugins/sudoers/visudo.c:951 plugins/sudoers/visudo.c:958
+#: plugins/sudoers/visudo.c:942 plugins/sudoers/visudo.c:949
#, c-format
msgid "%s: parsed OK\n"
msgstr "%s:解析正確\n"
-#: plugins/sudoers/visudo.c:977
+#: plugins/sudoers/visudo.c:968
#, c-format
msgid "%s busy, try again later"
msgstr "%s 忙碌中,請稍後重試"
-#: plugins/sudoers/visudo.c:980
+#: plugins/sudoers/visudo.c:971
#, c-format
msgid "unable to lock %s"
msgstr "無法鎖定 %s"
-#: plugins/sudoers/visudo.c:981
+#: plugins/sudoers/visudo.c:972
msgid "Edit anyway? [y/N]"
msgstr "仍然編輯?[y/N]"
-#: plugins/sudoers/visudo.c:1091
-#, c-format
-msgid "Error: %s:%d:%d: cycle in %s \"%s\""
-msgstr "錯誤:%s:%d:%d: %s「%s」中有循環"
-
-#: plugins/sudoers/visudo.c:1092
-#, c-format
-msgid "Warning: %s:%d:%d: cycle in %s \"%s\""
-msgstr "警告:%s:%d:%d: %s「%s」中有循環"
-
-#: plugins/sudoers/visudo.c:1096
-#, c-format
-msgid "Error: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "錯誤:%s:%d:%d: 已引用但未定義 %s「%s」"
-
-#: plugins/sudoers/visudo.c:1097
-#, c-format
-msgid "Warning: %s:%d:%d: %s \"%s\" referenced but not defined"
-msgstr "警告:%s:%d:%d: 已引用但未定義 %s「%s」"
-
-#: plugins/sudoers/visudo.c:1188
+#: plugins/sudoers/visudo.c:1067
#, c-format
msgid "Warning: %s:%d:%d: unused %s \"%s\""
msgstr "警告:%s:%d:%d: %s「%s」未使用"
-#: plugins/sudoers/visudo.c:1303
+#: plugins/sudoers/visudo.c:1183
#, c-format
msgid ""
"%s - safely edit the sudoers file\n"
@@ -3039,7 +3124,7 @@ msgstr ""
"%s - 安全地編輯 sudoers 檔案\n"
"\n"
-#: plugins/sudoers/visudo.c:1305
+#: plugins/sudoers/visudo.c:1185
msgid ""
"\n"
"Options:\n"
@@ -3059,34 +3144,88 @@ msgstr ""
" -s, --strict 嚴格語法檢查\n"
" -V, --version 顯示版本訊息並退出\n"
-#: toke.l:179
+#: toke.l:187
msgid "empty string"
msgstr "字串空白"
-#: toke.l:189 toke.l:491
+#: toke.l:199 toke.l:503
msgid "empty group"
msgstr "group 空白"
-#: toke.l:197 toke.l:489
+#: toke.l:209 toke.l:501
msgid "empty netgroup"
msgstr "netgroup 空白"
-#: toke.l:293 toke.l:305 toke.l:317 toke.l:333 toke.l:352 toke.l:392
+#: toke.l:305 toke.l:317 toke.l:329 toke.l:345 toke.l:364 toke.l:404
msgid "invalid line continuation"
msgstr "無效的行接續符號"
-#: toke.l:528 toke.l:540
+#: toke.l:540 toke.l:552
msgid "invalid IPv6 address"
msgstr "無效的 IPv6 地址"
-#: toke.l:764
+#: toke.l:779
msgid "unexpected line break in string"
msgstr "字串中有非預期的斷行字元"
-#: toke.l:1084
+#: toke.l:1109
msgid "too many levels of includes"
msgstr "include 嵌套層數過多"
+#~ msgid "%s:%u unable to parse \"%s\""
+#~ msgstr "%s:%u 無法解析「%s」"
+
+#, fuzzy
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " -f, --file path to configuration file\n"
+#~ " -h --help display help message and exit\n"
+#~ " -n, --no-fork do not fork, run in the foreground\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "選項:\n"
+#~ " -f, --file 設定檔路徑\n"
+#~ " -h, --help 顯示說明訊息並退出\n"
+#~ " -n, --no-fork 不要 fork,在前景執行\n"
+#~ " -R, --random-drop percent chance connections will drop\n"
+#~ " -V, --version 顯示版本資訊後離開\n"
+
+#~ msgid ""
+#~ "\n"
+#~ "Options:\n"
+#~ " --help display help message and exit\n"
+#~ " -A, --accept only send an accept event (no I/O)\n"
+#~ " -h, --host host to send logs to\n"
+#~ " -i, --iolog_id remote ID of I/O log to be resumed\n"
+#~ " -p, --port port to use when connecting to host\n"
+#~ " -r, --restart restart previous I/O log transfer\n"
+#~ " -R, --reject reject the command with the given reason\n"
+#~ " -b, --ca-bundle certificate bundle file to verify server's cert against\n"
+#~ " -c, --cert certificate file for TLS handshake\n"
+#~ " -k, --key private key file\n"
+#~ " -n, --no-verify do not verify server certificate\n"
+#~ " -t, --test test audit server by sending selected I/O log n times in parallel\n"
+#~ " -V, --version display version information and exit\n"
+#~ msgstr ""
+#~ "\n"
+#~ "選項:\n"
+#~ " --help 顯示說明訊息後離開\n"
+#~ " -A, --accept 只傳送接受事件 (無 I/O)\n"
+#~ " -h, --host 要傳送記錄至的目標主機\n"
+#~ " -i, --iolog_id 要繼續的 I/O 記錄的遠端 ID\n"
+#~ " -p, --port 連線到主機時要使用的連線埠\n"
+#~ " -r, --restart 重新啟動上次的 I/O 記錄傳輸\n"
+#~ " -R, --reject 以提供的原因拒絕命令\n"
+#~ " -b, --ca-bundle 用來核驗伺服器憑證針對對象的憑證組合檔案\n"
+#~ " -c, --cert 用於 TLS 交握的憑證檔案\n"
+#~ " -k, --key 私鑰檔案\n"
+#~ " -n, --no-verify 不核驗伺服器憑證\n"
+#~ " -t, --test 透過並行傳送選取的 I/O 記錄 n 次來測試稽核伺服器\n"
+#~ " -V, --version 顯示版本資訊後離開\n"
+
#~ msgid "Preload the dummy exec functions contained in the sudo_noexec library"
#~ msgstr "預載「sudo_noexec」函式庫中包含的空 exec 函數"
diff --git a/plugins/sudoers/policy.c b/plugins/sudoers/policy.c
index d675d2fd4..59a61886e 100644
--- a/plugins/sudoers/policy.c
+++ b/plugins/sudoers/policy.c
@@ -75,12 +75,18 @@ parse_bool(const char *line, int varlen, int *flags, int fval)
CLR(*flags, fval);
debug_return_int(false);
default:
- sudo_warn(U_("invalid %.*s set by sudo front-end"),
+ sudo_warnx(U_("invalid %.*s set by sudo front-end"),
varlen, line);
debug_return_int(-1);
}
}
+#define RUN_VALID_FLAGS (MODE_BACKGROUND|MODE_PRESERVE_ENV|MODE_RESET_HOME|MODE_LOGIN_SHELL|MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_PRESERVE_GROUPS|MODE_SHELL|MODE_RUN)
+#define EDIT_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_EDIT)
+#define LIST_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_LIST|MODE_CHECK)
+#define VALIDATE_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_VALIDATE)
+#define INVALIDATE_VALID_FLAGS (MODE_NONINTERACTIVE|MODE_IGNORE_TICKET|MODE_INVALIDATE)
+
/*
* Deserialize args, settings and user_info arrays.
* Fills in struct sudo_user and other common sudoers state.
@@ -88,7 +94,6 @@ parse_bool(const char *line, int varlen, int *flags, int fval)
int
sudoers_policy_deserialize_info(void *v)
{
- const int edit_mask = MODE_EDIT|MODE_IGNORE_TICKET|MODE_NONINTERACTIVE;
struct sudoers_open_info *info = v;
const char *p, *errstr, *groups = NULL;
const char *remhost = NULL;
@@ -100,7 +105,7 @@ sudoers_policy_deserialize_info(void *v)
(strncmp((s), (v), sizeof(v) - 1) == 0)
#define INVALID(v) do { \
- sudo_warn(U_("invalid %.*s set by sudo front-end"), \
+ sudo_warnx(U_("invalid %.*s set by sudo front-end"), \
(int)(sizeof(v) - 2), (v)); \
} while (0)
@@ -117,6 +122,10 @@ sudoers_policy_deserialize_info(void *v)
}
/* Parse sudo.conf plugin args. */
+ sudoers_file = _PATH_SUDOERS;
+ sudoers_mode = SUDOERS_MODE;
+ sudoers_uid = SUDOERS_UID;
+ sudoers_gid = SUDOERS_GID;
if (info->plugin_args != NULL) {
for (cur = info->plugin_args; *cur != NULL; cur++) {
if (MATCHES(*cur, "error_recovery=")) {
@@ -274,27 +283,21 @@ sudoers_policy_deserialize_info(void *v)
def_use_loginclass = true;
continue;
}
-#ifdef HAVE_PRIV_SET
- if (MATCHES(*cur, "runas_privs=")) {
- CHECK(*cur, "runas_privs=");
- def_privs = *cur + sizeof("runas_privs=") - 1;
- continue;
- }
- if (MATCHES(*cur, "runas_limitprivs=")) {
- CHECK(*cur, "runas_limitprivs=");
- def_limitprivs = *cur + sizeof("runas_limitprivs=") - 1;
- continue;
- }
-#endif /* HAVE_PRIV_SET */
#ifdef HAVE_SELINUX
if (MATCHES(*cur, "selinux_role=")) {
CHECK(*cur, "selinux_role=");
- user_role = *cur + sizeof("selinux_role=") - 1;
+ free(user_role);
+ user_role = strdup(*cur + sizeof("selinux_role=") - 1);
+ if (user_role == NULL)
+ goto oom;
continue;
}
if (MATCHES(*cur, "selinux_type=")) {
CHECK(*cur, "selinux_type=");
- user_type = *cur + sizeof("selinux_type=") - 1;
+ free(user_type);
+ user_type = strdup(*cur + sizeof("selinux_type=") - 1);
+ if (user_type == NULL)
+ goto oom;
continue;
}
#endif /* HAVE_SELINUX */
@@ -316,7 +319,7 @@ sudoers_policy_deserialize_info(void *v)
if (MATCHES(*cur, "max_groups=")) {
errno = 0;
p = *cur + sizeof("max_groups=") - 1;
- sudo_user.max_groups = sudo_strtonum(p, 1, INT_MAX, &errstr);
+ sudo_user.max_groups = sudo_strtonum(p, 1, 1024, &errstr);
if (sudo_user.max_groups == 0) {
sudo_warnx(U_("%s: %s"), *cur, U_(errstr));
goto bad;
@@ -349,12 +352,6 @@ sudoers_policy_deserialize_info(void *v)
#endif
}
- /* Sudo front-end should restrict mode flags for sudoedit. */
- if (ISSET(flags, MODE_EDIT) && (flags & edit_mask) != flags) {
- sudo_warnx(U_("invalid mode flags from sudo front end: 0x%x"), flags);
- goto bad;
- }
-
user_gid = (gid_t)-1;
user_sid = (pid_t)-1;
user_uid = (gid_t)-1;
@@ -362,6 +359,7 @@ sudoers_policy_deserialize_info(void *v)
for (cur = info->user_info; *cur != NULL; cur++) {
if (MATCHES(*cur, "user=")) {
CHECK(*cur, "user=");
+ free(user_name);
if ((user_name = strdup(*cur + sizeof("user=") - 1)) == NULL)
goto oom;
continue;
@@ -391,12 +389,14 @@ sudoers_policy_deserialize_info(void *v)
}
if (MATCHES(*cur, "cwd=")) {
CHECK(*cur, "cwd=");
+ free(user_cwd);
if ((user_cwd = strdup(*cur + sizeof("cwd=") - 1)) == NULL)
goto oom;
continue;
}
if (MATCHES(*cur, "tty=")) {
CHECK(*cur, "tty=");
+ free(user_ttypath);
if ((user_ttypath = strdup(*cur + sizeof("tty=") - 1)) == NULL)
goto oom;
user_tty = user_ttypath;
@@ -406,6 +406,9 @@ sudoers_policy_deserialize_info(void *v)
}
if (MATCHES(*cur, "host=")) {
CHECK(*cur, "host=");
+ if (user_shost != user_host)
+ free(user_shost);
+ free(user_host);
if ((user_host = strdup(*cur + sizeof("host=") - 1)) == NULL)
goto oom;
if ((p = strchr(user_host, '.')) != NULL) {
@@ -475,6 +478,9 @@ sudoers_policy_deserialize_info(void *v)
goto bad;
}
+ if (user_srunhost != user_runhost)
+ free(user_srunhost);
+ free(user_runhost);
if ((user_runhost = strdup(remhost ? remhost : user_host)) == NULL)
goto oom;
if ((p = strchr(user_runhost, '.')) != NULL) {
@@ -489,8 +495,8 @@ sudoers_policy_deserialize_info(void *v)
goto oom;
}
if (user_runcwd == NULL) {
- if ((user_runcwd = strdup(user_cwd)) == NULL)
- goto oom;
+ /* Unlike user_cwd, user_runcwd is not free()d. */
+ user_runcwd = user_cwd;
}
if (user_tty == NULL) {
if ((user_tty = strdup("unknown")) == NULL)
@@ -518,6 +524,10 @@ sudoers_policy_deserialize_info(void *v)
/* Some systems support fexecve() which we use for digest matches. */
cmnd_fd = -1;
+#ifdef NO_ROOT_MAILER
+ eventlog_set_mailuid(user_uid);
+#endif
+
/* Dump settings and user info (XXX - plugin args) */
for (cur = info->settings; *cur != NULL; cur++)
sudo_debug_printf(SUDO_DEBUG_INFO, "settings: %s", *cur);
@@ -866,15 +876,14 @@ sudoers_policy_store_result(bool accepted, char *argv[], char *envp[],
}
#endif /* HAVE_SELINUX */
- /* Free on exit; they are not available in the close function. */
- sudoers_gc_add(GC_VECTOR, envp);
- sudoers_gc_add(GC_VECTOR, command_info);
-
/* Fill in exec environment info. */
*(exec_args->argv) = argv;
*(exec_args->envp) = envp;
*(exec_args->info) = command_info;
+ /* Free command_info on exit. */
+ sudoers_gc_add(GC_VECTOR, command_info);
+
debug_return_bool(true);
oom:
@@ -961,29 +970,15 @@ sudoers_policy_close(int exit_status, int error_code)
/* Free stashed copy of the environment. */
(void)env_init(NULL);
- /* Free remaining references to password and group entries. */
- /* XXX - move cleanup to function in sudoers.c */
- if (sudo_user.pw != NULL) {
- sudo_pw_delref(sudo_user.pw);
- sudo_user.pw = NULL;
- }
- if (runas_pw != NULL) {
- sudo_pw_delref(runas_pw);
- runas_pw = NULL;
- }
- if (runas_gr != NULL) {
- sudo_gr_delref(runas_gr);
- runas_gr = NULL;
- }
- if (user_gid_list != NULL) {
- sudo_gidlist_delref(user_gid_list);
- user_gid_list = NULL;
- }
- free(user_gids);
- user_gids = NULL;
+ /* Free sudoers sources, sudo_user and passwd/group caches. */
+ sudoers_cleanup();
+
+ /* Free error message passed back to front-end, if any. */
free(audit_msg);
audit_msg = NULL;
+ /* XXX - leaks NewArgv */
+
/* sudoers_debug_deregister() calls sudo_debug_exit() for us. */
sudoers_debug_deregister();
}
@@ -1021,24 +1016,35 @@ sudoers_policy_check(int argc, char * const argv[], char *env_add[],
char **command_infop[], char **argv_out[], char **user_env_out[],
const char **errstr)
{
+ int valid_flags = RUN_VALID_FLAGS;
struct sudoers_exec_args exec_args;
int ret;
debug_decl(sudoers_policy_check, SUDOERS_DEBUG_PLUGIN);
- if (!ISSET(sudo_mode, MODE_EDIT))
+ if (ISSET(sudo_mode, MODE_EDIT))
+ valid_flags = EDIT_VALID_FLAGS;
+ else
SET(sudo_mode, MODE_RUN);
+ if ((sudo_mode & valid_flags) != sudo_mode) {
+ sudo_warnx(U_("%s: invalid mode flags from sudo front end: 0x%x"),
+ __func__, sudo_mode);
+ debug_return_int(-1);
+ }
+
exec_args.argv = argv_out;
exec_args.envp = user_env_out;
exec_args.info = command_infop;
ret = sudoers_policy_main(argc, argv, 0, env_add, false, &exec_args);
+#ifndef NO_LEAKS
if (ret == true && sudo_version >= SUDO_API_MKVERSION(1, 3)) {
/* Unset close function if we don't need it to avoid extra process. */
if (!def_log_input && !def_log_output && !def_use_pty &&
!sudo_auth_needs_end_session())
sudoers_policy.close = NULL;
}
+#endif
/* The audit functions set audit_msg on failure. */
if (ret != 1 && audit_msg != NULL) {
@@ -1051,13 +1057,19 @@ sudoers_policy_check(int argc, char * const argv[], char *env_add[],
static int
sudoers_policy_validate(const char **errstr)
{
+ char *argv[] = { "validate", NULL };
+ const int argc = 1;
int ret;
debug_decl(sudoers_policy_validate, SUDOERS_DEBUG_PLUGIN);
- user_cmnd = "validate";
SET(sudo_mode, MODE_VALIDATE);
+ if ((sudo_mode & VALIDATE_VALID_FLAGS) != sudo_mode) {
+ sudo_warnx(U_("%s: invalid mode flags from sudo front end: 0x%x"),
+ __func__, sudo_mode);
+ debug_return_int(-1);
+ }
- ret = sudoers_policy_main(0, NULL, I_VERIFYPW, NULL, false, NULL);
+ ret = sudoers_policy_main(argc, argv, I_VERIFYPW, NULL, false, NULL);
/* The audit functions set audit_msg on failure. */
if (ret != 1 && audit_msg != NULL) {
@@ -1072,10 +1084,13 @@ sudoers_policy_invalidate(int unlinkit)
{
debug_decl(sudoers_policy_invalidate, SUDOERS_DEBUG_PLUGIN);
- user_cmnd = "kill";
- /* XXX - plugin API should support a return value for fatal errors. */
- timestamp_remove(unlinkit);
- sudoers_cleanup();
+ SET(sudo_mode, MODE_INVALIDATE);
+ if ((sudo_mode & INVALIDATE_VALID_FLAGS) != sudo_mode) {
+ sudo_warnx(U_("%s: invalid mode flags from sudo front end: 0x%x"),
+ __func__, sudo_mode);
+ } else {
+ timestamp_remove(unlinkit);
+ }
debug_return;
}
@@ -1084,14 +1099,24 @@ static int
sudoers_policy_list(int argc, char * const argv[], int verbose,
const char *list_user, const char **errstr)
{
+ char *list_argv[] = { "list", NULL };
int ret;
debug_decl(sudoers_policy_list, SUDOERS_DEBUG_PLUGIN);
- user_cmnd = "list";
- if (argc)
- SET(sudo_mode, MODE_CHECK);
- else
+ if (argc == 0) {
SET(sudo_mode, MODE_LIST);
+ argc = 1;
+ argv = list_argv;
+ } else {
+ SET(sudo_mode, MODE_CHECK);
+ }
+
+ if ((sudo_mode & LIST_VALID_FLAGS) != sudo_mode) {
+ sudo_warnx(U_("%s: invalid mode flags from sudo front end: 0x%x"),
+ __func__, sudo_mode);
+ debug_return_int(-1);
+ }
+
if (list_user) {
list_pw = sudo_getpwnam(list_user);
if (list_pw == NULL) {
@@ -1170,6 +1195,24 @@ sudoers_policy_register_hooks(int version, int (*register_hook)(struct sudo_hook
}
}
+/*
+ * De-register environment function hooks.
+ */
+static void
+sudoers_policy_deregister_hooks(int version, int (*deregister_hook)(struct sudo_hook *hook))
+{
+ struct sudo_hook *hook;
+
+ for (hook = sudoers_hooks; hook->hook_fn != NULL; hook++) {
+ if (deregister_hook(hook) != 0) {
+ sudo_warn_nodebug(
+ U_("unable to deregister hook of type %d (version %d.%d)"),
+ hook->hook_type, SUDO_API_VERSION_GET_MAJOR(hook->hook_version),
+ SUDO_API_VERSION_GET_MINOR(hook->hook_version));
+ }
+ }
+}
+
sudo_dso_public struct policy_plugin sudoers_policy = {
SUDO_POLICY_PLUGIN,
SUDO_API_VERSION,
@@ -1182,5 +1225,6 @@ sudo_dso_public struct policy_plugin sudoers_policy = {
sudoers_policy_invalidate,
sudoers_policy_init_session,
sudoers_policy_register_hooks,
+ sudoers_policy_deregister_hooks,
NULL /* event_alloc() filled in by sudo */
};
diff --git a/plugins/sudoers/pwutil.c b/plugins/sudoers/pwutil.c
index ea0159fa8..1a3550e07 100644
--- a/plugins/sudoers/pwutil.c
+++ b/plugins/sudoers/pwutil.c
@@ -28,6 +28,7 @@
#include <config.h>
+#include <stdarg.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
@@ -561,7 +562,8 @@ done:
item->d.gr ? item->d.gr->gr_name : "unknown",
item->registry, node ? "cache hit" : "cached");
}
- item->refcnt++;
+ if (item->d.gr != NULL)
+ item->refcnt++;
debug_return_ptr(item->d.gr);
}
@@ -631,18 +633,19 @@ done:
}
/*
- * Take a gid in string form "#123" and return a faked up group struct.
+ * Take a group name, ID, members and return a faked up group struct.
*/
struct group *
-sudo_fakegrnam(const char *group)
+sudo_mkgrent(const char *group, gid_t gid, ...)
{
struct cache_item_gr *gritem;
struct cache_item *item;
- const char *errstr;
struct group *gr;
- size_t len, name_len;
+ size_t nmem, nsize, total;
+ char *cp, *mem;
+ va_list ap;
int i;
- debug_decl(sudo_fakegrnam, SUDOERS_DEBUG_NSS);
+ debug_decl(sudo_mkgrent, SUDOERS_DEBUG_NSS);
if (grcache_bygid == NULL)
grcache_bygid = rbcreate(cmp_grgid);
@@ -653,28 +656,47 @@ sudo_fakegrnam(const char *group)
debug_return_ptr(NULL);
}
- name_len = strlen(group);
- len = sizeof(*gritem) + name_len + 1;
+ /* Allocate in one big chunk for easy freeing. */
+ nsize = strlen(group) + 1;
+ total = sizeof(*gritem) + nsize;
+ va_start(ap, gid);
+ for (nmem = 1; (mem = va_arg(ap, char *)) != NULL; nmem++) {
+ total += strlen(mem) + 1;
+ }
+ va_end(ap);
+ total += sizeof(char *) * nmem;
for (i = 0; i < 2; i++) {
struct rbtree *grcache;
struct rbnode *node;
- gritem = calloc(1, len);
+ /*
+ * Fill in group contents and make strings relative to space
+ * at the end of the buffer. Note that gr_mem must come
+ * immediately after struct group to guarantee proper alignment.
+ */
+ gritem = calloc(1, total);
if (gritem == NULL) {
sudo_warn(U_("unable to cache group %s"), group);
debug_return_ptr(NULL);
}
gr = &gritem->gr;
- gr->gr_gid = (gid_t) sudo_strtoid(group + 1, &errstr);
- gr->gr_name = (char *)(gritem + 1);
- memcpy(gr->gr_name, group, name_len + 1);
- if (errstr != NULL) {
- sudo_debug_printf(SUDO_DEBUG_DIAG|SUDO_DEBUG_LINENO,
- "gid %s %s", group, errstr);
- free(gritem);
- debug_return_ptr(NULL);
+ gr->gr_gid = gid;
+ gr->gr_passwd = "*";
+ cp = (char *)(gritem + 1);
+ gr->gr_mem = (char **)cp;
+ cp += sizeof(char *) * nmem;
+ va_start(ap, gid);
+ for (nmem = 0; (mem = va_arg(ap, char *)) != NULL; nmem++) {
+ size_t len = strlen(mem) + 1;
+ memcpy(cp, mem, len);
+ gr->gr_mem[nmem] = cp;
+ cp += len;
}
+ va_end(ap);
+ gr->gr_mem[nmem] = NULL;
+ gr->gr_name = cp;
+ memcpy(gr->gr_name, group, nsize);
item = &gritem->cache;
item->refcnt = 1;
@@ -714,6 +736,26 @@ sudo_fakegrnam(const char *group)
debug_return_ptr(item->d.gr);
}
+/*
+ * Take a gid in string form "#123" and return a faked up group struct.
+ */
+struct group *
+sudo_fakegrnam(const char *group)
+{
+ const char *errstr;
+ gid_t gid;
+ debug_decl(sudo_fakegrnam, SUDOERS_DEBUG_NSS);
+
+ gid = (gid_t) sudo_strtoid(group + 1, &errstr);
+ if (errstr != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_DIAG|SUDO_DEBUG_LINENO,
+ "gid %s %s", group, errstr);
+ debug_return_ptr(NULL);
+ }
+
+ debug_return_ptr(sudo_mkgrent(group, gid, NULL));
+}
+
void
sudo_gidlist_addref(struct gid_list *gidlist)
{
diff --git a/plugins/sudoers/pwutil_impl.c b/plugins/sudoers/pwutil_impl.c
index 2e39e0802..3427ba65c 100644
--- a/plugins/sudoers/pwutil_impl.c
+++ b/plugins/sudoers/pwutil_impl.c
@@ -235,7 +235,7 @@ sudo_make_gritem(gid_t gid, const char *name)
* elements. Fills in datum from user_gids or from sudo_getgrouplist2(3).
*/
struct cache_item *
-sudo_make_gidlist_item(const struct passwd *pw, char * const *unused1,
+sudo_make_gidlist_item(const struct passwd *pw, char * const *gidstrs,
unsigned int type)
{
char *cp;
@@ -246,12 +246,42 @@ sudo_make_gidlist_item(const struct passwd *pw, char * const *unused1,
int i, ngids;
debug_decl(sudo_make_gidlist_item, SUDOERS_DEBUG_NSS);
- /* Don't use user_gids if the entry type says we must query the db. */
- if (type != ENTRY_TYPE_QUERIED && pw == sudo_user.pw && sudo_user.gids != NULL) {
- gids = user_gids;
- ngids = user_ngids;
- user_gids = NULL;
- user_ngids = 0;
+ /*
+ * Ignore supplied gids if the entry type says we must query the group db.
+ */
+ if (type != ENTRY_TYPE_QUERIED && (gidstrs != NULL ||
+ (pw == sudo_user.pw && sudo_user.gids != NULL))) {
+ if (gidstrs != NULL) {
+ /* Use supplied gids list (string format). */
+ ngids = 1;
+ for (i = 0; gidstrs[i] != NULL; i++)
+ ngids++;
+ gids = reallocarray(NULL, ngids, sizeof(GETGROUPS_T));
+ if (gids == NULL) {
+ sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
+ "unable to allocate memory");
+ debug_return_ptr(NULL);
+ }
+ ngids = 1;
+ gids[0] = pw->pw_gid;
+ for (i = 0; gidstrs[i] != NULL; i++) {
+ const char *errstr;
+ GETGROUPS_T gid = (gid_t) sudo_strtoid(gidstrs[i], &errstr);
+ if (errstr != NULL) {
+ sudo_debug_printf(SUDO_DEBUG_DIAG|SUDO_DEBUG_LINENO,
+ "gid %s %s", gidstrs[i], errstr);
+ continue;
+ }
+ if (gid != gids[0])
+ gids[ngids++] = gid;
+ }
+ } else {
+ /* Adopt sudo_user.gids. */
+ gids = user_gids;
+ ngids = user_ngids;
+ user_gids = NULL;
+ user_ngids = 0;
+ }
type = ENTRY_TYPE_FRONTEND;
} else {
type = ENTRY_TYPE_QUERIED;
@@ -263,7 +293,9 @@ sudo_make_gidlist_item(const struct passwd *pw, char * const *unused1,
"unable to allocate memory");
debug_return_ptr(NULL);
}
- (void)sudo_getgrouplist2(pw->pw_name, pw->pw_gid, &gids, &ngids);
+ /* Clamp to max_groups if insufficient space for all groups. */
+ if (sudo_getgrouplist2(pw->pw_name, pw->pw_gid, &gids, &ngids) == -1)
+ ngids = sudo_user.max_groups;
} else {
gids = NULL;
if (sudo_getgrouplist2(pw->pw_name, pw->pw_gid, &gids, &ngids) == -1) {
diff --git a/plugins/sudoers/regress/corpus/policy/policy.1 b/plugins/sudoers/regress/corpus/policy/policy.1
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/plugins/sudoers/regress/corpus/policy/policy.1
@@ -0,0 +1 @@
+
diff --git a/plugins/sudoers/regress/corpus/policy/policy.2 b/plugins/sudoers/regress/corpus/policy/policy.2
new file mode 100644
index 000000000..ea1793d37
--- /dev/null
+++ b/plugins/sudoers/regress/corpus/policy/policy.2
@@ -0,0 +1,5 @@
+# Minimal test case
+user=root
+uid=0
+gid=0
+host=localhost
diff --git a/plugins/sudoers/regress/corpus/policy/policy.3 b/plugins/sudoers/regress/corpus/policy/policy.3
new file mode 100644
index 000000000..b865e4c8e
--- /dev/null
+++ b/plugins/sudoers/regress/corpus/policy/policy.3
@@ -0,0 +1,11 @@
+# Reproduce CVE-2021-3156
+run_shell=true
+sudoedit=true
+user=millert
+uid=1000
+gid=1000
+cwd=/home/millert
+host=localhost
+argv=foo
+argv=\
+argv=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
diff --git a/plugins/sudoers/regress/corpus/policy/policy.4 b/plugins/sudoers/regress/corpus/policy/policy.4
new file mode 100644
index 000000000..e5e319152
--- /dev/null
+++ b/plugins/sudoers/regress/corpus/policy/policy.4
@@ -0,0 +1,36 @@
+# sudo -u nobody /usr/bin/id
+
+plugin_path=/usr/libexec/sudo/sudoers.so
+runas_user=nobody
+progname=sudo
+network_addrs=127.0.0.1/255.255.255.0
+plugin_dir=/usr/libexec/sudo/
+
+user=millert
+pid=1234
+ppid=1230
+pgid=1234
+tcpgid=1234
+sid=1230
+uid=1000
+euid=0
+gid=1000
+egid=1000
+groups=20,0,1000
+umask=022
+cwd=/home/millert
+tty=/dev/pts/1
+host=sudo.ws
+lines=24
+cols=80
+rlimit_core=infinity,infinity
+rlimit_cpu=infinity,infinity
+rlimit_data=1610612736,34359738368
+rlimit_fsize=infinity,infinity
+rlimit_memlock=2727370752,8182112256
+rlimit_nofile=256,1024
+rlimit_nproc=256,512
+rlimit_rss=8175603712,8182112256
+rlimit_stack=4194304,33554432
+
+argv=/usr/bin/id
diff --git a/plugins/sudoers/regress/corpus/policy/policy.5 b/plugins/sudoers/regress/corpus/policy/policy.5
new file mode 100644
index 000000000..bffae4d88
--- /dev/null
+++ b/plugins/sudoers/regress/corpus/policy/policy.5
@@ -0,0 +1,36 @@
+# sudoedit /etc/hosts
+
+plugin_path=/usr/libexec/sudo/sudoers.so
+progname=sudoedit
+network_addrs=127.0.0.1/255.255.255.0
+plugin_dir=/usr/libexec/sudo/
+
+user=millert
+pid=1234
+ppid=1230
+pgid=1234
+tcpgid=1234
+sid=1230
+uid=1000
+euid=0
+gid=1000
+egid=1000
+groups=20,0,1000
+umask=022
+cwd=/home/millert
+tty=/dev/pts/1
+host=sudo.ws
+lines=24
+cols=80
+rlimit_core=infinity,infinity
+rlimit_cpu=infinity,infinity
+rlimit_data=1610612736,34359738368
+rlimit_fsize=infinity,infinity
+rlimit_memlock=2727370752,8182112256
+rlimit_nofile=256,1024
+rlimit_nproc=256,512
+rlimit_rss=8175603712,8182112256
+rlimit_stack=4194304,33554432
+
+argv=sudoedit
+argv=/etc/hosts
diff --git a/plugins/sudoers/regress/exptilde/check_exptilde.c b/plugins/sudoers/regress/exptilde/check_exptilde.c
index 02d4bf087..c2054cb31 100644
--- a/plugins/sudoers/regress/exptilde/check_exptilde.c
+++ b/plugins/sudoers/regress/exptilde/check_exptilde.c
@@ -42,7 +42,9 @@ struct test_data {
{ "foo/bar", NULL, NULL, false },
{ "~root", "/", NULL, true },
{ "~", "/home/millert", "millert", true },
+ { "~/foo", "/home/millert/foo", "millert", true },
{ "~millert", "/home/millert", "millert", true },
+ { "~millert/bar", "/home/millert/bar", "millert", true },
{ NULL }
};
diff --git a/plugins/sudoers/regress/fuzz/fuzz_policy.c b/plugins/sudoers/regress/fuzz/fuzz_policy.c
new file mode 100644
index 000000000..c41ef03f3
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_policy.c
@@ -0,0 +1,807 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+#include <errno.h>
+#include <fcntl.h>
+#include <netdb.h>
+#include <unistd.h>
+#include <string.h>
+#ifndef HAVE_GETADDRINFO
+# include "compat/getaddrinfo.h"
+#endif
+
+#include "sudoers.h"
+#include "interfaces.h"
+
+extern char **environ;
+extern sudo_dso_public struct policy_plugin sudoers_policy;
+
+const char *path_plugin_dir = _PATH_SUDO_PLUGIN_DIR;
+char *audit_msg;
+
+static int pass;
+
+static FILE *
+open_data(const uint8_t *data, size_t size)
+{
+#ifdef HAVE_FMEMOPEN
+ /* Operate in-memory. */
+ return fmemopen((void *)data, size, "r");
+#else
+ char tempfile[] = "/tmp/sudoers.XXXXXX";
+ size_t nwritten;
+ int fd;
+
+ /* Use (unlinked) temporary file. */
+ fd = mkstemp(tempfile);
+ if (fd == -1)
+ return NULL;
+ unlink(tempfile);
+ nwritten = write(fd, data, size);
+ if (nwritten != size) {
+ close(fd);
+ return NULL;
+ }
+ lseek(fd, 0, SEEK_SET);
+ return fdopen(fd, "r");
+#endif
+}
+
+/*
+ * Array that gets resized as needed.
+ */
+struct dynamic_array {
+ char **entries;
+ size_t len;
+ size_t size;
+};
+
+static void
+free_strvec(char **vec)
+{
+ int i;
+
+ for (i = 0; vec[i] != NULL; i++)
+ free(vec[i]);
+}
+
+static void
+free_dynamic_array(struct dynamic_array *arr)
+{
+ if (arr->entries != NULL) {
+ free_strvec(arr->entries);
+ free(arr->entries);
+ }
+ memset(arr, 0, sizeof(*arr));
+}
+
+static bool
+push(struct dynamic_array *arr, const char *entry)
+{
+ char *copy = NULL;
+
+ if (entry != NULL) {
+ if ((copy = strdup(entry)) == NULL)
+ return false;
+ }
+
+ if (arr->len + (entry != NULL) >= arr->size) {
+ char **tmp = reallocarray(arr->entries, arr->size + 128, sizeof(char *));
+ if (tmp == NULL) {
+ free(copy);
+ return false;
+ }
+ arr->entries = tmp;
+ arr->size += 128;
+ }
+ if (copy != NULL)
+ arr->entries[arr->len++] = copy;
+ arr->entries[arr->len] = NULL;
+
+ return true;
+}
+
+static int
+fuzz_conversation(int num_msgs, const struct sudo_conv_message msgs[],
+ struct sudo_conv_reply replies[], struct sudo_conv_callback *callback)
+{
+ return 0;
+}
+
+static int
+fuzz_printf(int msg_type, const char *fmt, ...)
+{
+ return 0;
+}
+
+int
+fuzz_hook_stub(struct sudo_hook *hook)
+{
+ return 0;
+}
+
+int
+#ifdef HAVE_GETADDRINFO
+getaddrinfo(
+#else
+sudo_getaddrinfo(
+#endif
+ const char *nodename, const char *servname,
+ const struct addrinfo *hints, struct addrinfo **res)
+{
+ struct addrinfo *ai;
+ struct in_addr addr;
+
+ /* Stub getaddrinfo(3) to avoid a DNS timeout in CIfuzz. */
+ if (strcmp(nodename, "localhost") != 0 || servname != NULL)
+ return EAI_FAIL;
+
+ /* Hard-code localhost. */
+ ai = calloc(1, sizeof(*ai) + sizeof(struct sockaddr_in));
+ if (ai == NULL)
+ return EAI_MEMORY;
+ ai->ai_canonname = strdup("localhost");
+ if (ai == NULL) {
+ free(ai);
+ return EAI_MEMORY;
+ }
+ ai->ai_family = AF_INET;
+ ai->ai_protocol = IPPROTO_TCP;
+ ai->ai_addrlen = sizeof(struct sockaddr_in);
+ ai->ai_addr = (struct sockaddr *)(ai + 1);
+ inet_pton(AF_INET, "127.0.0.1", &addr);
+ ((struct sockaddr_in *)ai->ai_addr)->sin_family = AF_INET;
+ ((struct sockaddr_in *)ai->ai_addr)->sin_addr = addr;
+ *res = ai;
+ return 0;
+}
+
+void
+#ifdef HAVE_GETADDRINFO
+freeaddrinfo(struct addrinfo *ai)
+#else
+sudo_freeaddrinfo(struct addrinfo *ai)
+#endif
+{
+ struct addrinfo *next;
+
+ while (ai != NULL) {
+ next = ai->ai_next;
+ free(ai->ai_canonname);
+ free(ai);
+ ai = next;
+ }
+}
+
+enum fuzz_policy_pass {
+ PASS_NONE,
+ PASS_VERSION,
+ PASS_CHECK_LOG_LOCAL,
+ PASS_CHECK_LOG_REMOTE,
+ PASS_CHECK_NOT_FOUND,
+ PASS_CHECK_NOT_FOUND_DOT,
+ PASS_LIST,
+ PASS_LIST_OTHER,
+ PASS_LIST_CHECK,
+ PASS_VALIDATE,
+ PASS_INVALIDATE
+};
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ struct dynamic_array plugin_args = { NULL };
+ struct dynamic_array settings = { NULL };
+ struct dynamic_array user_info = { NULL };
+ struct dynamic_array argv = { NULL };
+ struct dynamic_array env_add = { NULL };
+ char **command_info = NULL, **argv_out = NULL, **user_env_out = NULL;
+ const char *errstr = NULL;
+ const int num_passes = 10;
+ char *line = NULL;
+ size_t linesize = 0;
+ ssize_t linelen;
+ int res = 1;
+ FILE *fp;
+
+ fp = open_data(data, size);
+ if (fp == NULL)
+ return 0;
+
+ setprogname("fuzz_policy");
+ sudoers_debug_register(getprogname(), NULL);
+
+ /* user_info and settings must be non-NULL (even if empty). */
+ push(&user_info, NULL);
+ push(&settings, NULL);
+
+ /* Iterate over each line of data. */
+ while ((linelen = getdelim(&line, &linesize, '\n', fp)) != -1) {
+ if (line[linelen - 1] == '\n')
+ line[linelen - 1] = '\0';
+
+ /* Skip comments and blank lines. */
+ if (line[0] == '#' || line[0] == '\0')
+ continue;
+
+ /* plugin args */
+ if (strncmp(line, "error_recovery=", sizeof("error_recovery=") - 1) == 0) {
+ push(&plugin_args, line);
+ continue;
+ }
+ if (strncmp(line, "sudoers_file=", sizeof("sudoers_file=") - 1) == 0) {
+ push(&plugin_args, line);
+ continue;
+ }
+ if (strncmp(line, "sudoers_mode=", sizeof("sudoers_mode=") - 1) == 0) {
+ push(&plugin_args, line);
+ continue;
+ }
+ if (strncmp(line, "sudoers_gid=", sizeof("sudoers_gid=") - 1) == 0) {
+ push(&plugin_args, line);
+ continue;
+ }
+ if (strncmp(line, "sudoers_uid=", sizeof("sudoers_uid=") - 1) == 0) {
+ push(&plugin_args, line);
+ continue;
+ }
+ if (strncmp(line, "ldap_conf=", sizeof("ldap_conf=") - 1) == 0) {
+ push(&plugin_args, line);
+ continue;
+ }
+ if (strncmp(line, "ldap_secret=", sizeof("ldap_secret=") - 1) == 0) {
+ push(&plugin_args, line);
+ continue;
+ }
+
+ /* user info */
+ if (strncmp(line, "user=", sizeof("user=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "uid=", sizeof("uid=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "gid=", sizeof("gid=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "groups=", sizeof("groups=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "cwd=", sizeof("cwd=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "tty=", sizeof("tty=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "host=", sizeof("host=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "lines=", sizeof("lines=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "cols=", sizeof("cols=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "sid=", sizeof("sid=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "umask=", sizeof("umask=") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+ if (strncmp(line, "rlimit_", sizeof("rlimit_") - 1) == 0) {
+ push(&user_info, line);
+ continue;
+ }
+
+ /* First argv entry is the command, the rest are args. */
+ if (strncmp(line, "argv=", sizeof("argv=") - 1) == 0) {
+ push(&argv, line);
+ continue;
+ }
+
+ /* Additional environment variables to add. */
+ if (strncmp(line, "env=", sizeof("env=") - 1) == 0) {
+ push(&env_add, line);
+ continue;
+ }
+
+ /* Treat anything else as a setting. */
+ push(&settings, line);
+ }
+ fclose(fp);
+ free(line);
+ line = NULL;
+
+ /* Exercise code paths that use KRB5CCNAME and SUDO_PROMPT. */
+ putenv("KRB5CCNAME=/tmp/krb5cc_123456");
+ putenv("SUDO_PROMPT=[sudo] password for %p: ");
+
+ sudoers_policy.register_hooks(SUDO_API_VERSION, fuzz_hook_stub);
+
+ for (pass = 1; res == 1 && pass <= num_passes; pass++) {
+ /* Call policy open function */
+ res = sudoers_policy.open(SUDO_API_VERSION, fuzz_conversation,
+ fuzz_printf, settings.entries, user_info.entries, environ,
+ plugin_args.entries, &errstr);
+ if (res == 1) {
+ if (argv.len == 0) {
+ /* Must have a command to check. */
+ push(&argv, "/usr/bin/id");
+ }
+
+ switch (pass) {
+ case PASS_NONE:
+ break;
+ case PASS_VERSION:
+ /* sudo -V */
+ sudoers_policy.show_version(true);
+ break;
+ case PASS_CHECK_LOG_LOCAL: {
+ struct list_members savedlist;
+
+ /* sudo command w/ local I/O logging (MODE_RUN) */
+ memcpy(&savedlist, &def_log_servers, sizeof(savedlist));
+ SLIST_INIT(&def_log_servers);
+ sudoers_policy.check_policy(argv.len, argv.entries,
+ env_add.entries, &command_info, &argv_out, &user_env_out,
+ &errstr);
+ /* sudo_auth_begin_session() is stubbed out below. */
+ sudoers_policy.init_session(NULL, NULL, NULL);
+ memcpy(&def_log_servers, &savedlist, sizeof(savedlist));
+ break;
+ }
+ case PASS_CHECK_LOG_REMOTE:
+ /* sudo command w/ remote I/O logging (MODE_RUN) */
+ sudoers_policy.check_policy(argv.len, argv.entries,
+ env_add.entries, &command_info, &argv_out, &user_env_out,
+ &errstr);
+ /* sudo_auth_begin_session() is stubbed out below. */
+ sudoers_policy.init_session(NULL, NULL, NULL);
+ break;
+ case PASS_CHECK_NOT_FOUND:
+ /* sudo command (not found) */
+ sudoers_policy.check_policy(argv.len, argv.entries,
+ env_add.entries, &command_info, &argv_out, &user_env_out,
+ &errstr);
+ /* sudo_auth_begin_session() is stubbed out below. */
+ sudoers_policy.init_session(NULL, NULL, NULL);
+ break;
+ case PASS_CHECK_NOT_FOUND_DOT:
+ /* sudo command (found but in cwd) */
+ sudoers_policy.check_policy(argv.len, argv.entries,
+ env_add.entries, &command_info, &argv_out, &user_env_out,
+ &errstr);
+ /* sudo_auth_begin_session() is stubbed out below. */
+ sudoers_policy.init_session(NULL, NULL, NULL);
+ break;
+ case PASS_LIST:
+ /* sudo -l (MODE_LIST) */
+ sudoers_policy.list(0, NULL, false, NULL, &errstr);
+ break;
+ case PASS_LIST_OTHER:
+ /* sudo -l -U root (MODE_LIST) */
+ sudoers_policy.list(0, NULL, false, "root", &errstr);
+ break;
+ case PASS_LIST_CHECK:
+ /* sudo -l command (MODE_CHECK) */
+ sudoers_policy.list(argv.len, argv.entries, false, NULL,
+ &errstr);
+ break;
+ case PASS_VALIDATE:
+ /* sudo -v (MODE_VALIDATE) */
+ sudoers_policy.validate(&errstr);
+ break;
+ case PASS_INVALIDATE:
+ /* sudo -k */
+ sudoers_policy.invalidate(false);
+ break;
+ }
+ }
+
+ /* Free resources. */
+ if (sudoers_policy.close != NULL)
+ sudoers_policy.close(0, 0);
+ else
+ sudoers_cleanup();
+
+ /* Call a second time to free old env pointer. */
+ env_init(NULL);
+ }
+
+ sudoers_policy.deregister_hooks(SUDO_API_VERSION, fuzz_hook_stub);
+ sudoers_gc_run();
+
+ free_dynamic_array(&plugin_args);
+ free_dynamic_array(&settings);
+ free_dynamic_array(&user_info);
+ free_dynamic_array(&argv);
+ free_dynamic_array(&env_add);
+
+ sudoers_debug_deregister();
+
+ return 0;
+}
+
+/* STUB */
+bool
+user_is_exempt(void)
+{
+ return false;
+}
+
+/* STUB */
+bool
+set_interfaces(const char *ai)
+{
+ return true;
+}
+
+/* STUB */
+void
+dump_interfaces(const char *ai)
+{
+ return;
+}
+
+/* STUB */
+void
+dump_auth_methods(void)
+{
+ return;
+}
+
+/* STUB */
+int
+sudo_auth_begin_session(struct passwd *pw, char **user_env[])
+{
+ return 1;
+}
+
+/* STUB */
+int
+sudo_auth_end_session(struct passwd *pw)
+{
+ return 1;
+}
+
+/* STUB */
+bool
+sudo_auth_needs_end_session(void)
+{
+ return false;
+}
+
+/* STUB */
+int
+timestamp_remove(bool unlink_it)
+{
+ return true;
+}
+
+/* STUB */
+int
+create_admin_success_flag(void)
+{
+ return true;
+}
+
+/* STUB */
+static int
+sudo_file_open(struct sudo_nss *nss)
+{
+ return 0;
+}
+
+/* STUB */
+static int
+sudo_file_close(struct sudo_nss *nss)
+{
+ return 0;
+}
+
+/* STUB */
+static struct sudoers_parse_tree *
+sudo_file_parse(struct sudo_nss *nss)
+{
+ static struct sudoers_parse_tree parse_tree;
+
+ return &parse_tree;
+}
+
+/* STUB */
+static int
+sudo_file_query(struct sudo_nss *nss, struct passwd *pw)
+{
+ return 0;
+}
+
+/* STUB */
+static int
+sudo_file_getdefs(struct sudo_nss *nss)
+{
+ /* Set some Defaults */
+ set_default("log_input", NULL, true, "sudoers", 1, 1, false);
+ set_default("log_output", NULL, true, "sudoers", 1, 1, false);
+ set_default("env_file", "/dev/null", true, "sudoers", 1, 1, false);
+ set_default("restricted_env_file", "/dev/null", true, "sudoers", 1, 1, false);
+ set_default("exempt_group", "sudo", true, "sudoers", 1, 1, false);
+ set_default("runchroot", "/", true, "sudoers", 1, 1, false);
+ set_default("runcwd", "~", true, "sudoers", 1, 1, false);
+ set_default("fqdn", NULL, true, "sudoers", 1, 1, false);
+ set_default("runas_default", "root", true, "sudoers", 1, 1, false);
+ set_default("tty_tickets", NULL, true, "sudoers", 1, 1, false);
+ set_default("umask", "022", true, "sudoers", 1, 1, false);
+ set_default("logfile", "/var/log/sudo", true, "sudoers", 1, 1, false);
+ set_default("syslog", "auth", true, "sudoers", 1, 1, false);
+ set_default("syslog_goodpri", "notice", true, "sudoers", 1, 1, false);
+ set_default("syslog_badpri", "alert", true, "sudoers", 1, 1, false);
+ set_default("syslog_maxlen", "2048", true, "sudoers", 1, 1, false);
+ set_default("loglinelen", "0", true, "sudoers", 1, 1, false);
+ set_default("log_year", NULL, true, "sudoers", 1, 1, false);
+ set_default("log_host", NULL, true, "sudoers", 1, 1, false);
+ set_default("mailerpath", NULL, false, "sudoers", 1, 1, false);
+ set_default("mailerflags", "-t", true, "sudoers", 1, 1, false);
+ set_default("mailto", "root@localhost", true, "sudoers", 1, 1, false);
+ set_default("mailfrom", "sudo@sudo.ws", true, "sudoers", 1, 1, false);
+ set_default("mailsub", "Someone has been naughty on %h", true, "sudoers", 1, 1, false);
+ set_default("timestampowner", "#0", true, "sudoers", 1, 1, false);
+ set_default("compress_io", NULL, true, "sudoers", 1, 1, false);
+ set_default("iolog_flush", NULL, true, "sudoers", 1, 1, false);
+ set_default("iolog_flush", NULL, true, "sudoers", 1, 1, false);
+ set_default("maxseq", "2176782336", true, "sudoers", 1, 1, false);
+ set_default("sudoedit_checkdir", NULL, false, "sudoers", 1, 1, false);
+ set_default("sudoedit_follow", NULL, true, "sudoers", 1, 1, false);
+ set_default("ignore_iolog_errors", NULL, true, "sudoers", 1, 1, false);
+ set_default("ignore_iolog_errors", NULL, true, "sudoers", 1, 1, false);
+ set_default("noexec", NULL, true, "sudoers", 1, 1, false);
+ set_default("exec_background", NULL, true, "sudoers", 1, 1, false);
+ set_default("use_pty", NULL, true, "sudoers", 1, 1, false);
+ set_default("utmp_runas", NULL, true, "sudoers", 1, 1, false);
+ set_default("iolog_mode", "0640", true, "sudoers", 1, 1, false);
+ set_default("iolog_user", NULL, false, "sudoers", 1, 1, false);
+ set_default("iolog_group", NULL, false, "sudoers", 1, 1, false);
+ set_default("log_servers", "localhost", true, "sudoers", 1, 1, false);
+ set_default("log_server_timeout", "30", true, "sudoers", 1, 1, false);
+ set_default("log_server_cabundle", "/etc/ssl/cacert.pem", true, "sudoers", 1, 1, false);
+ set_default("log_server_peer_cert", "/etc/ssl/localhost.crt", true, "sudoers", 1, 1, false);
+ set_default("log_server_peer_key", "/etc/ssl/private/localhost.key", true, "sudoers", 1, 1, false);
+
+ return 0;
+}
+
+static struct sudo_nss sudo_nss_file = {
+ { NULL, NULL },
+ sudo_file_open,
+ sudo_file_close,
+ sudo_file_parse,
+ sudo_file_query,
+ sudo_file_getdefs
+};
+
+struct sudo_nss_list *
+sudo_read_nss(void)
+{
+ static struct sudo_nss_list snl = TAILQ_HEAD_INITIALIZER(snl);
+
+ if (TAILQ_EMPTY(&snl))
+ TAILQ_INSERT_TAIL(&snl, &sudo_nss_file, entries);
+
+ return &snl;
+}
+
+/* STUB */
+int
+check_user(int validated, int mode)
+{
+ return true;
+}
+
+/* STUB */
+bool
+check_user_shell(const struct passwd *pw)
+{
+ return true;
+}
+
+/* STUB */
+void
+group_plugin_unload(void)
+{
+ return;
+}
+
+bool
+log_warning(int flags, const char *fmt, ...)
+{
+ va_list ap;
+
+ /* Just display on stderr. */
+ va_start(ap, fmt);
+ sudo_vwarn_nodebug(fmt, ap);
+ va_end(ap);
+
+ return true;
+}
+
+bool
+log_warningx(int flags, const char *fmt, ...)
+{
+ va_list ap;
+
+ /* Just display on stderr. */
+ va_start(ap, fmt);
+ sudo_vwarnx_nodebug(fmt, ap);
+ va_end(ap);
+
+ return true;
+}
+
+bool
+gai_log_warning(int flags, int errnum, const char *fmt, ...)
+{
+ va_list ap;
+
+ /* Note: ignores errnum */
+ va_start(ap, fmt);
+ sudo_vwarnx_nodebug(fmt, ap);
+ va_end(ap);
+
+ return true;
+}
+
+/* STUB */
+bool
+log_denial(int status, bool inform_user)
+{
+ return true;
+}
+
+/* STUB */
+bool
+log_failure(int status, int flags)
+{
+ return true;
+}
+
+/* STUB */
+int
+audit_failure(char *const argv[], char const *const fmt, ...)
+{
+ return 0;
+}
+
+/* STUB */
+int
+sudoers_lookup(struct sudo_nss_list *snl, struct passwd *pw, int *cmnd_status,
+ int pwflag)
+{
+ return VALIDATE_SUCCESS;
+}
+
+/* STUB */
+int
+display_cmnd(struct sudo_nss_list *snl, struct passwd *pw)
+{
+ return true;
+}
+
+/* STUB */
+int
+display_privs(struct sudo_nss_list *snl, struct passwd *pw, bool verbose)
+{
+ return true;
+}
+
+/* STUB */
+int
+find_path(const char *infile, char **outfile, struct stat *sbp,
+ const char *path, const char *runchroot, int ignore_dot,
+ char * const *allowlist)
+{
+ switch (pass) {
+ case PASS_CHECK_NOT_FOUND:
+ return NOT_FOUND;
+ case PASS_CHECK_NOT_FOUND_DOT:
+ return NOT_FOUND_DOT;
+ default:
+ if (infile[0] == '/') {
+ *outfile = strdup(infile);
+ } else {
+ if (asprintf(outfile, "/usr/bin/%s", infile) == -1)
+ *outfile = NULL;
+ }
+ if (*outfile == NULL)
+ return NOT_FOUND_ERROR;
+ return FOUND;
+ }
+}
+
+/* STUB */
+bool
+expand_iolog_path(const char *inpath, char *path, size_t pathlen,
+ const struct iolog_path_escape *escapes, void *closure)
+{
+ return strlcpy(path, inpath, pathlen) < pathlen;
+}
+
+/* STUB */
+bool
+iolog_nextid(char *iolog_dir, char sessid[7])
+{
+ strlcpy(sessid, "000001", 7);
+ return true;
+}
+
+/* STUB */
+bool
+cb_maxseq(const union sudo_defs_val *sd_un)
+{
+ return true;
+}
+
+/* STUB */
+bool
+cb_iolog_user(const union sudo_defs_val *sd_un)
+{
+ return true;
+}
+
+/* STUB */
+bool
+cb_iolog_group(const union sudo_defs_val *sd_un)
+{
+ return true;
+}
+
+/* STUB */
+bool
+cb_iolog_mode(const union sudo_defs_val *sd_un)
+{
+ return true;
+}
+
+/* STUB */
+bool
+cb_group_plugin(const union sudo_defs_val *sd_un)
+{
+ return true;
+}
diff --git a/plugins/sudoers/regress/fuzz/fuzz_policy.dict b/plugins/sudoers/regress/fuzz/fuzz_policy.dict
new file mode 100644
index 000000000..48678c853
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_policy.dict
@@ -0,0 +1,51 @@
+# Policy plugin keywords (all are keyword = value)
+
+# sudoers plugin options from sudo.conf
+"error_recovery"
+"sudoers_file"
+"sudoers_uid"
+"sudoers_gid"
+"sudoers_mode"
+"ldap_conf"
+"ldap_secret"
+
+# command line settings from front-end
+"closefrom"
+"cmnd_chroot"
+"cmnd_cwd"
+"runas_user"
+"runas_group"
+"prompt"
+"set_home"
+"preserve_environment"
+"run_shell"
+"login_shell"
+"implied_shell"
+"preserve_groups"
+"ignore_ticket"
+"noninteractive"
+"sudoedit"
+"login_class"
+"runas_privs"
+"runas_limitprivs"
+"selinux_role"
+"selinux_type"
+"bsdauth_type"
+"network_addrs"
+"max_groups"
+"remote_host"
+"timeout"
+"plugin_dir"
+
+# user information from front-end
+"user"
+"uid"
+"gid"
+"groups"
+"cwd"
+"tty"
+"host"
+"lines"
+"cols"
+"sid"
+"umask"
diff --git a/plugins/sudoers/regress/fuzz/fuzz_stubs.c b/plugins/sudoers/regress/fuzz/fuzz_stubs.c
new file mode 100644
index 000000000..f2147c578
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_stubs.c
@@ -0,0 +1,85 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <pwd.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#ifdef NEED_RESOLV_H
+# include <arpa/nameser.h>
+# include <resolv.h>
+#endif /* NEED_RESOLV_H */
+#include <netdb.h>
+
+#include "sudoers.h"
+#include "interfaces.h"
+
+struct interface_list *
+get_interfaces(void)
+{
+ static struct interface_list empty = SLIST_HEAD_INITIALIZER(interfaces);
+ return &empty;
+}
+
+void
+init_eventlog_config(void)
+{
+ return;
+}
+
+int
+group_plugin_query(const char *user, const char *group, const struct passwd *pw)
+{
+ return false;
+}
+
+bool
+set_perms(int perm)
+{
+ return true;
+}
+
+bool
+restore_perms(void)
+{
+ return true;
+}
+
+bool
+rewind_perms(void)
+{
+ return true;
+}
+
+bool
+sudo_nss_can_continue(struct sudo_nss *nss, int match)
+{
+ return true;
+}
diff --git a/plugins/sudoers/regress/fuzz/fuzz_sudoers.c b/plugins/sudoers/regress/fuzz/fuzz_sudoers.c
new file mode 100644
index 000000000..45d721d04
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_sudoers.c
@@ -0,0 +1,392 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <sys/socket.h>
+
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <pwd.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#ifdef NEED_RESOLV_H
+# include <arpa/nameser.h>
+# include <resolv.h>
+#endif /* NEED_RESOLV_H */
+#include <netdb.h>
+
+#include "sudoers.h"
+#include "interfaces.h"
+
+static int fuzz_conversation(int num_msgs, const struct sudo_conv_message msgs[], struct sudo_conv_reply replies[], struct sudo_conv_callback *callback);
+
+/* Required to link with parser. */
+struct sudo_user sudo_user;
+struct passwd *list_pw;
+sudo_conv_t sudo_conv = fuzz_conversation;
+bool sudoers_recovery = true;
+
+FILE *
+open_sudoers(const char *file, bool doedit, bool *keepopen)
+{
+ /*
+ * If we allow the fuzzer to choose include paths it will
+ * include random files in the file system.
+ * This leads to bug reports that cannot be reproduced.
+ */
+ return NULL;
+}
+
+static int
+fuzz_conversation(int num_msgs, const struct sudo_conv_message msgs[],
+ struct sudo_conv_reply replies[], struct sudo_conv_callback *callback)
+{
+ int n;
+
+ for (n = 0; n < num_msgs; n++) {
+ const struct sudo_conv_message *msg = &msgs[n];
+ FILE *fp = stdout;
+
+ switch (msg->msg_type & 0xff) {
+ case SUDO_CONV_PROMPT_ECHO_ON:
+ case SUDO_CONV_PROMPT_MASK:
+ case SUDO_CONV_PROMPT_ECHO_OFF:
+ /* input not supported */
+ return -1;
+ case SUDO_CONV_ERROR_MSG:
+ fp = stderr;
+ FALLTHROUGH;
+ case SUDO_CONV_INFO_MSG:
+ if (msg->msg != NULL) {
+ size_t len = strlen(msg->msg);
+
+ if (len == 0)
+ break;
+
+ if (fwrite(msg->msg, 1, len, fp) == 0 || fputc('\n', fp) == EOF)
+ return -1;
+ }
+ break;
+ default:
+ return -1;
+ }
+ }
+ return 0;
+}
+
+bool
+init_envtables(void)
+{
+ return true;
+}
+
+int
+set_cmnd_path(const char *runchroot)
+{
+ /* Cannot return FOUND without also setting user_cmnd to a new value. */
+ return NOT_FOUND;
+}
+
+bool
+log_warningx(int flags, const char *fmt, ...)
+{
+ va_list ap;
+
+ /* Just display on stderr. */
+ va_start(ap, fmt);
+ sudo_vwarnx_nodebug(fmt, ap);
+ va_end(ap);
+
+ return true;
+}
+
+static int
+sudo_fuzz_query(struct sudo_nss *nss, struct passwd *pw)
+{
+ return 0;
+}
+
+static int
+cb_unused(struct sudoers_parse_tree *parse_tree, struct alias *a, void *v)
+{
+ return 0;
+}
+
+static FILE *
+open_data(const uint8_t *data, size_t size)
+{
+#ifdef HAVE_FMEMOPEN
+ /* Operate in-memory. */
+ return fmemopen((void *)data, size, "r");
+#else
+ char tempfile[] = "/tmp/sudoers.XXXXXX";
+ size_t nwritten;
+ int fd;
+
+ /* Use (unlinked) temporary file. */
+ fd = mkstemp(tempfile);
+ if (fd == -1)
+ return NULL;
+ unlink(tempfile);
+ nwritten = write(fd, data, size);
+ if (nwritten != size) {
+ close(fd);
+ return NULL;
+ }
+ lseek(fd, 0, SEEK_SET);
+ return fdopen(fd, "r");
+#endif
+}
+
+static struct user_data {
+ char *user;
+ char *runuser;
+ char *rungroup;
+} user_data[] = {
+ { "root", NULL, NULL },
+ { "millert", "operator", NULL },
+ { "millert", NULL, "wheel" },
+ { "operator", NULL, NULL },
+ { NULL }
+};
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ struct user_data *ud;
+ struct sudo_nss sudo_nss_fuzz;
+ struct sudo_nss_list snl = TAILQ_HEAD_INITIALIZER(snl);
+ struct sudoers_parse_tree parse_tree;
+ struct interface_list *interfaces;
+ struct passwd *pw;
+ struct group *gr;
+ char *gids[10];
+ FILE *fp;
+
+ /* Don't waste time fuzzing tiny inputs. */
+ if (size < 5)
+ return 0;
+
+ fp = open_data(data, size);
+ if (fp == NULL)
+ return 0;
+
+ setprogname("fuzz_sudoers");
+ sudoers_debug_register(getprogname(), NULL);
+
+ /* Sudoers locale setup. */
+ sudoers_initlocale(setlocale(LC_ALL, ""), "C");
+ sudo_warn_set_locale_func(sudoers_warn_setlocale);
+ bindtextdomain("sudoers", LOCALEDIR);
+ textdomain("sudoers");
+
+ /* Use the sudoers locale for everything. */
+ sudoers_setlocale(SUDOERS_LOCALE_SUDOERS, NULL);
+
+ /* Prime the group cache */
+ gr = sudo_mkgrent("wheel", 0, "millert", "root", NULL);
+ if (gr == NULL)
+ goto done;
+ sudo_gr_delref(gr);
+
+ gr = sudo_mkgrent("operator", 5, "operator", "root", "millert", NULL);
+ if (gr == NULL)
+ goto done;
+ sudo_gr_delref(gr);
+
+ gr = sudo_mkgrent("staff", 20, "root", "millert", NULL);
+ if (gr == NULL)
+ goto done;
+ sudo_gr_delref(gr);
+
+ gr = sudo_mkgrent("sudo", 100, "root", "millert", NULL);
+ if (gr == NULL)
+ goto done;
+ sudo_gr_delref(gr);
+
+ /* Prime the passwd cache */
+ pw = sudo_mkpwent("root", 0, 0, "/", "/bin/sh");
+ if (pw == NULL)
+ goto done;
+ gids[0] = "0";
+ gids[1] = "20";
+ gids[2] = "5";
+ gids[3] = NULL;
+ if (sudo_set_gidlist(pw, gids, ENTRY_TYPE_FRONTEND) == -1)
+ goto done;
+ sudo_pw_delref(pw);
+
+ pw = sudo_mkpwent("operator", 2, 5, "/operator", "/sbin/nologin");
+ if (pw == NULL)
+ goto done;
+ gids[0] = "5";
+ gids[1] = NULL;
+ if (sudo_set_gidlist(pw, gids, ENTRY_TYPE_FRONTEND) == -1)
+ goto done;
+ sudo_pw_delref(pw);
+
+ pw = sudo_mkpwent("millert", 8036, 20, "/home/millert", "/bin/tcsh");
+ if (pw == NULL)
+ goto done;
+ gids[0] = "0";
+ gids[1] = "20";
+ gids[2] = "5";
+ gids[3] = "100";
+ gids[4] = NULL;
+ if (sudo_set_gidlist(pw, gids, ENTRY_TYPE_FRONTEND) == -1)
+ goto done;
+ sudo_pw_delref(pw);
+
+ /* The minimum needed to perform matching (user_cmnd must be dynamic). */
+ user_host = user_shost = user_runhost = user_srunhost = "localhost";
+ user_cmnd = strdup("/usr/bin/id");
+ if (user_cmnd == NULL)
+ goto done;
+ user_args = "-u";
+ user_base = "id";
+
+ /* Add a fake network interfaces. */
+ interfaces = get_interfaces();
+ if (SLIST_EMPTY(interfaces)) {
+ static struct interface interface;
+
+ interface.family = AF_INET;
+ inet_pton(AF_INET, "128.138.243.151", &interface.addr.ip4);
+ inet_pton(AF_INET, "255.255.255.0", &interface.netmask.ip4);
+ SLIST_INSERT_HEAD(interfaces, &interface, entries);
+ }
+
+ /* Only one sudoers source, the sudoers file itself. */
+ init_parse_tree(&parse_tree, user_host, user_shost);
+ memset(&sudo_nss_fuzz, 0, sizeof(sudo_nss_fuzz));
+ sudo_nss_fuzz.parse_tree = &parse_tree;
+ sudo_nss_fuzz.query = sudo_fuzz_query;
+ TAILQ_INSERT_TAIL(&snl, &sudo_nss_fuzz, entries);
+
+ /* Initialize defaults and parse sudoers. */
+ init_defaults();
+ init_parser("sudoers", false, true);
+ sudoersrestart(fp);
+ sudoersparse();
+ reparent_parse_tree(&parse_tree);
+
+ if (!parse_error) {
+ /* Match user/host/command against parsed policy. */
+ for (ud = user_data; ud->user != NULL; ud++) {
+ int cmnd_status;
+
+ /* Invoking user. */
+ user_name = ud->user;
+ if (sudo_user.pw != NULL)
+ sudo_pw_delref(sudo_user.pw);
+ sudo_user.pw = sudo_getpwnam(user_name);
+ if (sudo_user.pw == NULL) {
+ fprintf(stderr, "unknown user: %s\n", user_name);
+ continue;
+ }
+
+ /* Run user. */
+ if (runas_pw != NULL)
+ sudo_pw_delref(runas_pw);
+ if (ud->runuser != NULL) {
+ sudo_user.runas_user = ud->runuser;
+ SET(sudo_user.flags, RUNAS_USER_SPECIFIED);
+ runas_pw = sudo_getpwnam(sudo_user.runas_user);
+ } else {
+ sudo_user.runas_user = NULL;
+ CLR(sudo_user.flags, RUNAS_USER_SPECIFIED);
+ runas_pw = sudo_getpwnam("root");
+ }
+ if (runas_pw == NULL) {
+ fprintf(stderr, "unknown run user: %s\n",
+ sudo_user.runas_user);
+ continue;
+ }
+
+ /* Run group. */
+ if (runas_gr != NULL)
+ sudo_gr_delref(runas_gr);
+ if (ud->rungroup != NULL) {
+ sudo_user.runas_group = ud->rungroup;
+ SET(sudo_user.flags, RUNAS_GROUP_SPECIFIED);
+ runas_gr = sudo_getgrnam(sudo_user.runas_group);
+ if (runas_gr == NULL) {
+ fprintf(stderr, "unknown run group: %s\n",
+ sudo_user.runas_group);
+ continue;
+ }
+ } else {
+ sudo_user.runas_group = NULL;
+ CLR(sudo_user.flags, RUNAS_GROUP_SPECIFIED);
+ runas_gr = NULL;
+ }
+
+ update_defaults(&parse_tree, NULL, SETDEF_ALL, false);
+
+ sudoers_lookup(&snl, sudo_user.pw, &cmnd_status, false);
+
+ /* Match again as a pseudo-command (list, validate, etc). */
+ sudoers_lookup(&snl, sudo_user.pw, &cmnd_status, true);
+
+ /* Display privileges. */
+ display_privs(&snl, sudo_user.pw, false);
+ display_privs(&snl, sudo_user.pw, true);
+ }
+
+ /* Expand tildes in runcwd and runchroot. */
+ if (def_runcwd != NULL && strcmp(def_runcwd, "*") != 0) {
+ expand_tilde(&def_runcwd, runas_pw->pw_name);
+ }
+ if (def_runchroot != NULL && strcmp(def_runchroot, "*") != 0) {
+ expand_tilde(&def_runchroot, runas_pw->pw_name);
+ }
+
+ /* Check Defaults and aliases. */
+ check_defaults(&parse_tree, false);
+ check_aliases(&parse_tree, true, false, cb_unused);
+ }
+
+done:
+ /* Cleanup. */
+ fclose(fp);
+ free_parse_tree(&parse_tree);
+ init_parser(NULL, false, true);
+ if (sudo_user.pw != NULL)
+ sudo_pw_delref(sudo_user.pw);
+ if (runas_pw != NULL)
+ sudo_pw_delref(runas_pw);
+ if (runas_gr != NULL)
+ sudo_gr_delref(runas_gr);
+ sudo_freepwcache();
+ sudo_freegrcache();
+ free(user_cmnd);
+ free(safe_cmnd);
+ memset(&sudo_user, 0, sizeof(sudo_user));
+ sudoers_setlocale(SUDOERS_LOCALE_USER, NULL);
+ sudoers_debug_deregister();
+
+ return 0;
+}
diff --git a/plugins/sudoers/regress/fuzz/fuzz_sudoers.dict b/plugins/sudoers/regress/fuzz/fuzz_sudoers.dict
new file mode 100644
index 000000000..e443ea974
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_sudoers.dict
@@ -0,0 +1,195 @@
+# Sudoers policy keywords (all are keyword = value)
+
+# Aliases
+"Cmnd_Alias"
+"Cmd_Alias"
+"Host_Alias"
+"Runas_Alias"
+"User_Alias"
+
+# Special keywords
+"ALL"
+"(ALL:ALL)"
+"sudoedit"
+
+# Date_Spec
+"20170214083000Z"
+"2017021408Z"
+"20160315220000-0500"
+"20151201235900"
+
+# Timeout_Spec
+"7d8h30m10s"
+"14d"
+"8h30m"
+"600s"
+"3600"
+
+# Command digests
+"sha224:"
+"sha256:"
+"sha384:"
+"sha512:"
+
+# Command tags
+"NOPASSWD"
+"PASSWD"
+"NOEXEC"
+"EXEC"
+"SETENV"
+"NOSETENV"
+"LOG_INPUT"
+"NOLOG_INPUT"
+"LOG_OUTPUT"
+"NOLOG_OUTPUT"
+"FOLLOWLNK"
+"NOFOLLOWLNK"
+"MAIL"
+"NOMAIL"
+
+# Command options
+"CHROOT"
+"CWD"
+"CMND_TIMEOUT"
+"NOTBEFORE"
+"NOTAFTER"
+"ROLE"
+"TYPE"
+"PRIVS"
+"LIMITPRIVS"
+
+# Defaults settings
+"Defaults"
+"syslog"
+"syslog_goodpri"
+"syslog_badpri"
+"long_otp_prompt"
+"ignore_dot"
+"mail_always"
+"mail_badpass"
+"mail_no_user"
+"mail_no_host"
+"mail_no_perms"
+"mail_all_cmnds"
+"tty_tickets"
+"lecture"
+"lecture_file"
+"authenticate"
+"root_sudo"
+"log_host"
+"log_year"
+"shell_noargs"
+"set_home"
+"always_set_home"
+"path_info"
+"fqdn"
+"insults"
+"requiretty"
+"env_editor"
+"rootpw"
+"runaspw"
+"targetpw"
+"use_loginclass"
+"set_logname"
+"stay_setuid"
+"preserve_groups"
+"loglinelen"
+"timestamp_timeout"
+"passwd_timeout"
+"passwd_tries"
+"umask"
+"logfile"
+"mailerpath"
+"mailerflags"
+"mailto"
+"mailfrom"
+"mailsub"
+"badpass_message"
+"lecture_status_dir"
+"timestampdir"
+"timestampowner"
+"exempt_group"
+"passprompt"
+"passprompt_override"
+"runas_default"
+"secure_path"
+"editor"
+"listpw"
+"verifypw"
+"noexec"
+"ignore_local_sudoers"
+"closefrom"
+"closefrom_override"
+"setenv"
+"env_reset"
+"env_check"
+"env_delete"
+"env_keep"
+"role"
+"type"
+"env_file"
+"restricted_env_file"
+"sudoers_locale"
+"visiblepw"
+"pwfeedback"
+"fast_glob"
+"umask_override"
+"log_input"
+"log_output"
+"compress_io"
+"use_pty"
+"group_plugin"
+"iolog_dir"
+"iolog_file"
+"set_utmp"
+"utmp_runas"
+"privs"
+"limitprivs"
+"exec_background"
+"pam_service"
+"pam_login_service"
+"pam_setcred"
+"pam_session"
+"pam_acct_mgmt"
+"maxseq"
+"use_netgroups"
+"sudoedit_checkdir"
+"sudoedit_follow"
+"always_query_group_plugin"
+"netgroup_tuple"
+"ignore_audit_errors"
+"ignore_iolog_errors"
+"ignore_logfile_errors"
+"match_group_by_gid"
+"syslog_maxlen"
+"iolog_user"
+"iolog_group"
+"iolog_mode"
+"fdexec"
+"ignore_unknown_defaults"
+"command_timeout"
+"user_command_timeouts"
+"iolog_flush"
+"syslog_pid"
+"timestamp_type"
+"authfail_message"
+"case_insensitive_user"
+"case_insensitive_group"
+"log_allowed"
+"log_denied"
+"log_servers"
+"log_server_timeout"
+"log_server_keepalive"
+"log_server_cabundle"
+"log_server_peer_cert"
+"log_server_peer_key"
+"log_server_verify"
+"runas_allow_unknown_id"
+"runas_check_shell"
+"pam_ruser"
+"pam_rhost"
+"runcwd"
+"runchroot"
+"log_format"
+"selinux"
+"admin_flag"
diff --git a/plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok b/plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok
new file mode 100644
index 000000000..11f2ca847
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_sudoers.out.ok
@@ -0,0 +1,577 @@
+Running: examples/sudoers
+Matching Defaults entries for root on localhost:
+ syslog=auth, runcwd=~
+
+Runas and Command-specific defaults for root:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User root may run the following commands on localhost:
+ (ALL) ALL
+ (ALL) ALL
+
+Matching Defaults entries for root on localhost:
+ syslog=auth, runcwd=~
+
+Runas and Command-specific defaults for root:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User root may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: ALL
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: ALL
+ Commands:
+ ALL
+
+Matching Defaults entries for millert on localhost:
+ syslog=auth, runcwd=~, !lecture, runchroot=*, !authenticate
+
+Runas and Command-specific defaults for millert:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User millert may run the following commands on localhost:
+ (ALL) ALL
+ (root) NOPASSWD: ALL
+
+Matching Defaults entries for millert on localhost:
+ syslog=auth, runcwd=~, !lecture, runchroot=*, !authenticate
+
+Runas and Command-specific defaults for millert:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User millert may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: ALL
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: root
+ Options: !authenticate
+ Commands:
+ ALL
+
+Matching Defaults entries for millert on localhost:
+ syslog=auth, runcwd=~, !lecture, runchroot=*, !authenticate
+
+Runas and Command-specific defaults for millert:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User millert may run the following commands on localhost:
+ (ALL) ALL
+ (root) NOPASSWD: ALL
+
+Matching Defaults entries for millert on localhost:
+ syslog=auth, runcwd=~, !lecture, runchroot=*, !authenticate
+
+Runas and Command-specific defaults for millert:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User millert may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: ALL
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: root
+ Options: !authenticate
+ Commands:
+ ALL
+
+Matching Defaults entries for operator on localhost:
+ syslog=auth, runcwd=~
+
+Runas and Command-specific defaults for operator:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User operator may run the following commands on localhost:
+ (root) /usr/sbin/dump, /usr/sbin/rdump, /usr/sbin/restore, /usr/sbin/rrestore, /usr/bin/mt, sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== /home/operator/bin/start_backups, /usr/bin/kill, /usr/bin/top, /usr/sbin/shutdown, /usr/sbin/halt, /usr/sbin/reboot, /usr/sbin/lpc, /usr/bin/lprm, sudoedit /etc/printcap, /usr/oper/bin/
+
+Matching Defaults entries for operator on localhost:
+ syslog=auth, runcwd=~
+
+Runas and Command-specific defaults for operator:
+ Defaults>root !set_logname Defaults!/usr/bin/more, /usr/bin/pg, /usr/bin/less noexec
+
+
+User operator may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ /usr/sbin/dump
+ /usr/sbin/rdump
+ /usr/sbin/restore
+ /usr/sbin/rrestore
+ /usr/bin/mt
+ sha224:0GomF8mNN3wlDt1HD9XldjJ3SNgpFdbjO1+NsQ== /home/operator/bin/start_backups
+ /usr/bin/kill
+ /usr/bin/top
+ /usr/sbin/shutdown
+ /usr/sbin/halt
+ /usr/sbin/reboot
+ /usr/sbin/lpc
+ /usr/bin/lprm
+ sudoedit /etc/printcap
+ /usr/oper/bin/
+
+Executed examples/sudoers
+Running: regress/sudoers/test1.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test1.in
+Running: regress/sudoers/test2.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test2.in
+Running: regress/sudoers/test3.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test3.in
+Running: regress/sudoers/test4.in
+sudoers:7:1: invalid line continuation
+User_Alias BAR = bar
+^~~~~~~~~~
+Executed regress/sudoers/test4.in
+Running: regress/sudoers/test5.in
+sudoers:2:19: empty string
+User_Alias FOO = ""
+ ^
+sudoers:3:2: empty string
+"" ALL = ALL
+ ^
+Executed regress/sudoers/test5.in
+Running: regress/sudoers/test6.in
+Runas and Command-specific defaults for root:
+ Defaults>#123 set_home
+ Defaults>#123 set_home
+
+
+User root may run the following commands on localhost:
+ (root) ALL
+ (#0 : #0) ALL
+ (root) ALL
+ (#0 : #0) ALL
+ (root) ALL
+ (root) ALL
+
+Runas and Command-specific defaults for root:
+ Defaults>#123 set_home
+ Defaults>#123 set_home
+
+
+User root may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: #0
+ RunAsGroups: #0
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: #0
+ RunAsGroups: #0
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+Runas and Command-specific defaults for millert:
+ Defaults>#123 set_home
+ Defaults>#123 set_home
+
+
+User millert may run the following commands on localhost:
+ (root) ALL
+ (root) ALL
+
+Runas and Command-specific defaults for millert:
+ Defaults>#123 set_home
+ Defaults>#123 set_home
+
+
+User millert may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+Runas and Command-specific defaults for millert:
+ Defaults>#123 set_home
+ Defaults>#123 set_home
+
+
+User millert may run the following commands on localhost:
+ (root) ALL
+ (root) ALL
+
+Runas and Command-specific defaults for millert:
+ Defaults>#123 set_home
+ Defaults>#123 set_home
+
+
+User millert may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ ALL
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test6.in
+Running: regress/sudoers/test7.in
+sudoers:2:21: empty group
+User_Alias FOO1 = "%"
+ ^
+sudoers:3:22: empty group
+User_Alias FOO2 = "%:"
+ ^
+sudoers:4:21: empty netgroup
+User_Alias FOO3 = "+"
+ ^
+sudoers:5:19: empty group
+User_Alias FOO4 = %
+ ^
+sudoers:6:19: empty group
+User_Alias FOO5 = %:
+ ^~
+sudoers:7:19: empty netgroup
+User_Alias FOO6 = +
+ ^
+Executed regress/sudoers/test7.in
+Running: regress/sudoers/test8.in
+sudoers:8:20: unexpected line break in string
+User_Alias UA4 = "x
+ ^
+Executed regress/sudoers/test8.in
+Running: regress/sudoers/test9.in
+Executed regress/sudoers/test9.in
+Running: regress/sudoers/test10.in
+Executed regress/sudoers/test10.in
+Running: regress/sudoers/test11.in
+sudoers:1:6: syntax error
+bogus
+ ^
+Executed regress/sudoers/test11.in
+Running: regress/sudoers/test12.in
+sudoers:1:17: syntax error
+user ALL = (ALL)
+ ^
+Executed regress/sudoers/test12.in
+Running: regress/sudoers/test13.in
+sudoers:1:17: syntax error
+user ALL = (ALL)
+ ^
+Executed regress/sudoers/test13.in
+Running: regress/sudoers/test14.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert may run the following commands on localhost:
+ (root) sha224:d06a2617c98d377c250edd470fd5e576327748d82915d6e33b5f8db1, sha224:d7910e1967342b4605cb73a550944044c631cd3514001900966962ac /bin/ls, sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= /bin/sh, sha512:srzYEQ2aqzm+it3f74opTMkIImZRLxBARVpb0g9RSouJYdLt7DTRMEY4Ry9NyaOiDoUIplpNjqYH0JMYPVdFnw /bin/kill
+
+User millert may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ sha224:d06a2617c98d377c250edd470fd5e576327748d82915d6e33b5f8db1, sha224:d7910e1967342b4605cb73a550944044c631cd3514001900966962ac /bin/ls
+ sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= /bin/sh
+ sha512:srzYEQ2aqzm+it3f74opTMkIImZRLxBARVpb0g9RSouJYdLt7DTRMEY4Ry9NyaOiDoUIplpNjqYH0JMYPVdFnw /bin/kill
+
+User millert may run the following commands on localhost:
+ (root) sha224:d06a2617c98d377c250edd470fd5e576327748d82915d6e33b5f8db1, sha224:d7910e1967342b4605cb73a550944044c631cd3514001900966962ac /bin/ls, sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= /bin/sh, sha512:srzYEQ2aqzm+it3f74opTMkIImZRLxBARVpb0g9RSouJYdLt7DTRMEY4Ry9NyaOiDoUIplpNjqYH0JMYPVdFnw /bin/kill
+
+User millert may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ sha224:d06a2617c98d377c250edd470fd5e576327748d82915d6e33b5f8db1, sha224:d7910e1967342b4605cb73a550944044c631cd3514001900966962ac /bin/ls
+ sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= /bin/sh
+ sha512:srzYEQ2aqzm+it3f74opTMkIImZRLxBARVpb0g9RSouJYdLt7DTRMEY4Ry9NyaOiDoUIplpNjqYH0JMYPVdFnw /bin/kill
+
+User operator may run the following commands on localhost:
+ (root) sha384:knMlCLkJ71K6uRrKo5C1CAvZ5kq+mRpjKDD/RofGosFjiGcYhiYYZORVyiRHgBnu, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
+
+User operator may run the following commands on localhost:
+
+Sudoers entry:
+ RunAsUsers: root
+ Commands:
+ sha384:knMlCLkJ71K6uRrKo5C1CAvZ5kq+mRpjKDD/RofGosFjiGcYhiYYZORVyiRHgBnu, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
+
+Executed regress/sudoers/test14.in
+Running: regress/sudoers/test15.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test15.in
+Running: regress/sudoers/test16.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test16.in
+Running: regress/sudoers/test17.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test17.in
+Running: regress/sudoers/test18.in
+sudoers:4:21: invalid timeout value
+user0 ALL = TIMEOUT=7dd4h10m30s /usr/bin/id, /usr/bin/who, TIMEOUT=0 /bin/ls
+ ^~~~~~~~~~~
+sudoers:5:21: invalid timeout value
+user1 ALL = TIMEOUT=7d4h10mm30s /usr/bin/id
+ ^~~~~~~~~~~
+sudoers:6:21: invalid timeout value
+user2 ALL = TIMEOUT=4hg10m30s /usr/bin/id
+ ^~~~~~~~~
+sudoers:7:21: invalid timeout value
+user3 ALL = TIMEOUT=10m30ss /usr/bin/id
+ ^~~~~~~
+sudoers:8:21: invalid timeout value
+user4 ALL = TIMEOUT=14g /usr/bin/id
+ ^~~
+Executed regress/sudoers/test18.in
+Running: regress/sudoers/test19.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test19.in
+Running: regress/sudoers/test20.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test20.in
+Running: regress/sudoers/test21.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test21.in
+Running: regress/sudoers/test22.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test22.in
+Running: regress/sudoers/test23.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test23.in
+Running: regress/sudoers/test24.in
+User root is not allowed to run sudo on localhost.
+
+User root is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User millert is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+User operator is not allowed to run sudo on localhost.
+
+Executed regress/sudoers/test24.in
+Running: regress/sudoers/test25.in
+sudoers:4:28: syntax error
+foo ALL = CWD=~ron /bin/ls \
+ ^~
+Executed regress/sudoers/test25.in
diff --git a/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c b/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c
new file mode 100644
index 000000000..7f926352e
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.c
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#if defined(HAVE_STDINT_H)
+# include <stdint.h>
+#elif defined(HAVE_INTTYPES_H)
+# include <inttypes.h>
+#endif
+
+#include "sudoers.h"
+
+/* Required to link with parser. */
+struct sudo_user sudo_user;
+struct passwd *list_pw;
+
+FILE *
+open_sudoers(const char *file, bool doedit, bool *keepopen)
+{
+ /*
+ * If we allow the fuzzer to choose include paths it will
+ * include random files in the file system.
+ * This leads to bug reports that cannot be reproduced.
+ */
+ return NULL;
+}
+
+bool
+init_envtables(void)
+{
+ return true;
+}
+
+int
+set_cmnd_path(const char *runchroot)
+{
+ /* Cannot return FOUND without also setting user_cmnd to a new value. */
+ return NOT_FOUND;
+}
+
+static FILE *
+open_data(const uint8_t *data, size_t size)
+{
+#ifdef HAVE_FMEMOPEN
+ /* Operate in-memory. */
+ return fmemopen((void *)data, size, "r");
+#else
+ char tempfile[] = "/tmp/ldif.XXXXXX";
+ size_t nwritten;
+ int fd;
+
+ /* Use (unlinked) temporary file. */
+ fd = mkstemp(tempfile);
+ if (fd == -1)
+ return NULL;
+ unlink(tempfile);
+ nwritten = write(fd, data, size);
+ if (nwritten != size) {
+ close(fd);
+ return NULL;
+ }
+ lseek(fd, 0, SEEK_SET);
+ return fdopen(fd, "r");
+#endif
+}
+
+int
+LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ struct sudoers_parse_tree parse_tree;
+ FILE *fp;
+
+ /* Don't waste time fuzzing tiny inputs. */
+ if (size < 5)
+ return 0;
+
+ fp = open_data(data, size);
+ if (fp == NULL)
+ return 0;
+
+ setprogname("fuzz_sudoers_ldif");
+ sudoers_debug_register(getprogname(), NULL);
+
+ /* Initialize defaults and parse LDIF-format sudoers. */
+ init_defaults();
+ init_parse_tree(&parse_tree, NULL, NULL);
+ sudoers_parse_ldif(&parse_tree, fp, NULL, true);
+
+ /* Cleanup. */
+ free_parse_tree(&parse_tree);
+ fclose(fp);
+ sudoers_debug_deregister();
+
+ return 0;
+}
diff --git a/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.dict b/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.dict
new file mode 100644
index 000000000..7c4d2d071
--- /dev/null
+++ b/plugins/sudoers/regress/fuzz/fuzz_sudoers_ldif.dict
@@ -0,0 +1,14 @@
+# Sudoers LDIF attributes
+
+"description"
+"objectClass"
+"organizationalRole"
+"sudoCommand"
+"sudoHost"
+"sudoOption"
+"sudoOption"
+"sudoOrder"
+"sudoRunAs"
+"sudoRunAsGroup"
+"sudoRunAsUser"
+"sudoUser"
diff --git a/plugins/sudoers/regress/parser/check_fill.c b/plugins/sudoers/regress/parser/check_fill.c
index 2ced0f192..82962b5d1 100644
--- a/plugins/sudoers/regress/parser/check_fill.c
+++ b/plugins/sudoers/regress/parser/check_fill.c
@@ -187,3 +187,17 @@ sudoerserror(const char *s)
{
return;
}
+
+/* STUB */
+bool
+parser_leak_add(enum parser_leak_types type, void *v)
+{
+ return true;
+}
+
+/* STUB */
+bool
+parser_leak_remove(enum parser_leak_types type, void *v)
+{
+ return true;
+}
diff --git a/plugins/sudoers/regress/sudoers/test14.in b/plugins/sudoers/regress/sudoers/test14.in
index 985f6e309..bdbac68bf 100644
--- a/plugins/sudoers/regress/sudoers/test14.in
+++ b/plugins/sudoers/regress/sudoers/test14.in
@@ -3,4 +3,4 @@ Cmnd_Alias SH = sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXH
millert ALL = LS, SH, sha512:srzYEQ2aqzm+it3f74opTMkIImZRLxBARVpb0g9RSouJYdLt7DTRMEY4Ry9NyaOiDoUIplpNjqYH0JMYPVdFnw /bin/kill
-operator ALL = sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
+operator ALL = sha384:knMlCLkJ71K6uRrKo5C1CAvZ5kq+mRpjKDD/RofGosFjiGcYhiYYZORVyiRHgBnu, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
diff --git a/plugins/sudoers/regress/sudoers/test14.json.ok b/plugins/sudoers/regress/sudoers/test14.json.ok
index e772d6ef6..7e0e3c388 100644
--- a/plugins/sudoers/regress/sudoers/test14.json.ok
+++ b/plugins/sudoers/regress/sudoers/test14.json.ok
@@ -51,7 +51,7 @@
"Commands": [
{
"command": "ALL",
- "sha256": "hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=",
+ "sha384": "knMlCLkJ71K6uRrKo5C1CAvZ5kq+mRpjKDD/RofGosFjiGcYhiYYZORVyiRHgBnu",
"sha256": "1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4="
}
]
diff --git a/plugins/sudoers/regress/sudoers/test14.ldif.ok b/plugins/sudoers/regress/sudoers/test14.ldif.ok
index ea9e95701..4d26c5de1 100644
--- a/plugins/sudoers/regress/sudoers/test14.ldif.ok
+++ b/plugins/sudoers/regress/sudoers/test14.ldif.ok
@@ -15,6 +15,6 @@ objectClass: sudoRole
cn: operator
sudoUser: operator
sudoHost: ALL
-sudoCommand: sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
+sudoCommand: sha384:knMlCLkJ71K6uRrKo5C1CAvZ5kq+mRpjKDD/RofGosFjiGcYhiYYZORVyiRHgBnu, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
sudoOrder: 2
diff --git a/plugins/sudoers/regress/sudoers/test14.ldif2sudo.ok b/plugins/sudoers/regress/sudoers/test14.ldif2sudo.ok
index b916cca09..c742a9514 100644
--- a/plugins/sudoers/regress/sudoers/test14.ldif2sudo.ok
+++ b/plugins/sudoers/regress/sudoers/test14.ldif2sudo.ok
@@ -7,5 +7,6 @@ millert ALL = sha224:d06a2617c98d377c250edd470fd5e576327748d82915d6e33b5f8db1,\
/bin/kill
# sudoRole operator
-operator ALL = sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=,\
+operator ALL =\
+ sha384:knMlCLkJ71K6uRrKo5C1CAvZ5kq+mRpjKDD/RofGosFjiGcYhiYYZORVyiRHgBnu,\
sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
diff --git a/plugins/sudoers/regress/sudoers/test14.out.ok b/plugins/sudoers/regress/sudoers/test14.out.ok
index 05d0a20db..658f74dc6 100644
--- a/plugins/sudoers/regress/sudoers/test14.out.ok
+++ b/plugins/sudoers/regress/sudoers/test14.out.ok
@@ -4,4 +4,4 @@ Cmnd_Alias LS = sha224:d06a2617c98d377c250edd470fd5e576327748d82915d6e33b5f8db1,
Cmnd_Alias SH = sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= /bin/sh
millert ALL = LS, SH, sha512:srzYEQ2aqzm+it3f74opTMkIImZRLxBARVpb0g9RSouJYdLt7DTRMEY4Ry9NyaOiDoUIplpNjqYH0JMYPVdFnw /bin/kill
-operator ALL = sha256:hOtoe/iK6SlGg7w4BfZBBdSsXjUmTJ5+ts51yjh7vkM=, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
+operator ALL = sha384:knMlCLkJ71K6uRrKo5C1CAvZ5kq+mRpjKDD/RofGosFjiGcYhiYYZORVyiRHgBnu, sha256:1IXHRCxXgSnIEnb+xBz4PAfWaPdXIBWKFF0QCwxJ5G4= ALL
diff --git a/plugins/sudoers/regress/sudoers/test14.toke.ok b/plugins/sudoers/regress/sudoers/test14.toke.ok
index 0b4f36a71..edf80995a 100644
--- a/plugins/sudoers/regress/sudoers/test14.toke.ok
+++ b/plugins/sudoers/regress/sudoers/test14.toke.ok
@@ -3,4 +3,4 @@ CMNDALIAS ALIAS = SHA256_TOK : DIGEST , SHA256_TOK : DIGEST COMMAND
WORD(6) ALL = ALIAS , ALIAS , SHA512_TOK : DIGEST COMMAND
-WORD(6) ALL = SHA256_TOK : DIGEST , SHA256_TOK : DIGEST ALL
+WORD(6) ALL = SHA384_TOK : DIGEST , SHA256_TOK : DIGEST ALL
diff --git a/plugins/sudoers/regress/sudoers/test22.sudo.ok b/plugins/sudoers/regress/sudoers/test22.sudo.ok
deleted file mode 100644
index 879e1bd50..000000000
--- a/plugins/sudoers/regress/sudoers/test22.sudo.ok
+++ /dev/null
@@ -1,7 +0,0 @@
-user1 ALL = () ALL
-
-user2 ALL = () ALL
-
-user3 ALL = () ALL
-
-user4 ALL = () ALL
diff --git a/plugins/sudoers/regress/sudoers/test23.sudo.ok b/plugins/sudoers/regress/sudoers/test23.sudo.ok
deleted file mode 100644
index bb9f2e913..000000000
--- a/plugins/sudoers/regress/sudoers/test23.sudo.ok
+++ /dev/null
@@ -1,8 +0,0 @@
-Defaults env_check="COLORTERM LANG LANGUAGE LC_* LINGUAS"
-Defaults env_check+="TERM TZ"
-Defaults env_delete="IFS CDPATH LOCALDOMAIN RES_OPTIONS HOSTALIASES"
-Defaults env_delete+="NLSPATH PATH_LOCALE LD_* _RLD*"
-Defaults env_keep+="LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
-Defaults env_keep-=_XKB_CHARSET
-Defaults env_keep+="XAPPLRESDIR XFILESEARCHPATH XUSERFILESEARCHPATH"
-Defaults env_keep+=XDG_SESSION_COOKIE
diff --git a/plugins/sudoers/regress/sudoers/test24.sudo.ok b/plugins/sudoers/regress/sudoers/test24.sudo.ok
deleted file mode 100644
index 8203b0c48..000000000
--- a/plugins/sudoers/regress/sudoers/test24.sudo.ok
+++ /dev/null
@@ -1,6 +0,0 @@
-Defaults runcwd=~
-Defaults runchroot=/
-
-user0 ALL = CHROOT=/var/www CWD=/htdocs /bin/ksh
-
-user1 ALL = CWD=~root /usr/bin/id, CWD=/tmp /bin/ls
diff --git a/plugins/sudoers/regress/sudoers/test25.in b/plugins/sudoers/regress/sudoers/test25.in
new file mode 100644
index 000000000..fe3558790
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test25.in
@@ -0,0 +1,3 @@
+# Test continuation character when there is nothing to continue
+# Used to leak "~ron" when run under address sanitizer
+foo ALL = CWD=~ron /bin/ls \
diff --git a/plugins/sudoers/regress/sudoers/test25.json.ok b/plugins/sudoers/regress/sudoers/test25.json.ok
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test25.json.ok
diff --git a/plugins/sudoers/regress/sudoers/test25.ldif.ok b/plugins/sudoers/regress/sudoers/test25.ldif.ok
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test25.ldif.ok
diff --git a/plugins/sudoers/regress/sudoers/test25.out.ok b/plugins/sudoers/regress/sudoers/test25.out.ok
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test25.out.ok
@@ -0,0 +1 @@
+
diff --git a/plugins/sudoers/regress/sudoers/test25.toke.ok b/plugins/sudoers/regress/sudoers/test25.toke.ok
new file mode 100644
index 000000000..e58461e0b
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test25.toke.ok
@@ -0,0 +1,3 @@
+#
+#
+WORD(6) ALL = CWD = WORD(5) COMMAND <*> \ No newline at end of file
diff --git a/plugins/sudoers/regress/sudoers/test26.in b/plugins/sudoers/regress/sudoers/test26.in
new file mode 100644
index 000000000..842f2b418
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test26.in
@@ -0,0 +1,128 @@
+# Defaults settings that trigger callbacks
+Defaults fqdn
+Defaults runas_default=root
+Defaults tty_tickets
+Defaults umask=022
+Defaults runchroot=/
+Defaults logfile=/var/log/sudo
+Defaults log_format=json
+Defaults syslog=auth, syslog_badpri=alert, syslog_goodpri=notice
+Defaults syslog_maxlen=2048
+Defaults !loglinelen, log_year, log_host
+Defaults !mailerpath, mailerflags="-t", mailfrom="sudo@sudo.ws", mailto="root@localhost", mailsub="*** Sudo information for %h ***"
+
+# All other Defaults settings
+Defaults long_otp_prompt
+Defaults ignore_dot
+Defaults !mail_always
+Defaults !mail_badpass
+Defaults !mail_no_user
+Defaults !mail_no_host
+Defaults !mail_no_perms
+Defaults !mail_all_cmnds
+Defaults lecture=always
+Defaults lecture_file=/etc/sudo.lecture
+Defaults authenticate
+Defaults root_sudo
+Defaults shell_noargs
+Defaults set_home
+Defaults always_set_home
+Defaults path_info
+Defaults insults
+Defaults !requiretty
+Defaults env_editor
+Defaults !rootpw
+Defaults !runaspw
+Defaults !targetpw
+Defaults use_loginclass
+Defaults set_logname
+Defaults !stay_setuid
+Defaults !preserve_groups
+Defaults timestamp_timeout=.5
+Defaults passwd_timeout=5
+Defaults passwd_tries=3
+Defaults badpass_message="Take off, eh!"
+Defaults lecture_status_dir="/var/lib/sudo/lectured"
+Defaults timestampdir="/run/sudo/ts"
+Defaults timestampowner=root
+Defaults exempt_group=sudo
+Defaults passprompt="%p's sudo password: "
+Defaults passprompt_override
+Defaults secure_path="/usr/bin:/usr/sbin:/bin:/sbin"
+Defaults editor=/usr/bin/vi
+Defaults listpw=any
+Defaults verifypw=all
+Defaults noexec
+Defaults ignore_local_sudoers
+Defaults closefrom=3
+Defaults closefrom_override
+Defaults !setenv
+Defaults env_reset
+Defaults env_check += "TERMCAP"
+Defaults !env_delete
+Defaults env_keep += "LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
+#Defaults role
+#Defaults type
+Defaults env_file="/etc/environment"
+Defaults restricted_env_file="/etc/environment.sudo"
+Defaults sudoers_locale=C
+Defaults !visiblepw
+Defaults pwfeedback
+Defaults fast_glob
+Defaults umask_override
+Defaults log_input
+Defaults log_output
+Defaults compress_io
+Defaults use_pty
+#Defaults group_plugin
+Defaults iolog_dir="/var/log/sudo-io"
+Defaults iolog_file="%{seq}"
+Defaults set_utmp
+Defaults utmp_runas
+#Defaults privs
+#Defaults limitprivs
+Defaults !exec_background
+Defaults pam_service="sudo"
+Defaults pam_login_service="sudo-login"
+Defaults pam_setcred
+Defaults pam_session
+Defaults pam_acct_mgmt
+Defaults maxseq=2176782336
+Defaults use_netgroups
+Defaults sudoedit_checkdir
+Defaults !sudoedit_follow
+Defaults always_query_group_plugin
+Defaults netgroup_tuple
+Defaults ignore_audit_errors
+Defaults ignore_iolog_errors
+Defaults ignore_logfile_errors
+Defaults !match_group_by_gid
+Defaults iolog_user=root
+Defaults iolog_group=root
+Defaults iolog_mode=0600
+Defaults fdexec=digest_only
+Defaults !ignore_unknown_defaults
+Defaults command_timeout=7d8h30m10s
+Defaults user_command_timeouts
+Defaults iolog_flush
+Defaults syslog_pid
+Defaults timestamp_type=tty
+Defaults authfail_message="Learn to type!"
+Defaults case_insensitive_user
+Defaults case_insensitive_group
+Defaults log_allowed
+Defaults log_denied
+Defaults !log_servers
+Defaults log_server_timeout=10
+Defaults log_server_keepalive
+Defaults !log_server_cabundle
+Defaults !log_server_peer_cert
+Defaults !log_server_peer_key
+Defaults !log_server_verify
+Defaults runas_allow_unknown_id
+Defaults runas_check_shell
+Defaults pam_ruser
+Defaults pam_rhost
+Defaults runcwd=~
+Defaults !selinux
+Defaults !admin_flag
diff --git a/plugins/sudoers/regress/sudoers/test26.json.ok b/plugins/sudoers/regress/sudoers/test26.json.ok
new file mode 100644
index 000000000..4fabe5f84
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test26.json.ok
@@ -0,0 +1,626 @@
+{
+ "Defaults": [
+ {
+ "Options": [
+ { "fqdn": true }
+ ]
+ },
+ {
+ "Options": [
+ { "runas_default": "root" }
+ ]
+ },
+ {
+ "Options": [
+ { "tty_tickets": true }
+ ]
+ },
+ {
+ "Options": [
+ { "umask": "022" }
+ ]
+ },
+ {
+ "Options": [
+ { "runchroot": "/" }
+ ]
+ },
+ {
+ "Options": [
+ { "logfile": "/var/log/sudo" }
+ ]
+ },
+ {
+ "Options": [
+ { "log_format": "json" }
+ ]
+ },
+ {
+ "Options": [
+ { "syslog": "auth" },
+ { "syslog_badpri": "alert" },
+ { "syslog_goodpri": "notice" }
+ ]
+ },
+ {
+ "Options": [
+ { "syslog_maxlen": "2048" }
+ ]
+ },
+ {
+ "Options": [
+ { "loglinelen": false },
+ { "log_year": true },
+ { "log_host": true }
+ ]
+ },
+ {
+ "Options": [
+ { "mailerpath": false },
+ { "mailerflags": "-t" },
+ { "mailfrom": "sudo@sudo.ws" },
+ { "mailto": "root@localhost" },
+ { "mailsub": "*** Sudo information for %h ***" }
+ ]
+ },
+ {
+ "Options": [
+ { "long_otp_prompt": true }
+ ]
+ },
+ {
+ "Options": [
+ { "ignore_dot": true }
+ ]
+ },
+ {
+ "Options": [
+ { "mail_always": false }
+ ]
+ },
+ {
+ "Options": [
+ { "mail_badpass": false }
+ ]
+ },
+ {
+ "Options": [
+ { "mail_no_user": false }
+ ]
+ },
+ {
+ "Options": [
+ { "mail_no_host": false }
+ ]
+ },
+ {
+ "Options": [
+ { "mail_no_perms": false }
+ ]
+ },
+ {
+ "Options": [
+ { "mail_all_cmnds": false }
+ ]
+ },
+ {
+ "Options": [
+ { "lecture": "always" }
+ ]
+ },
+ {
+ "Options": [
+ { "lecture_file": "/etc/sudo.lecture" }
+ ]
+ },
+ {
+ "Options": [
+ { "authenticate": true }
+ ]
+ },
+ {
+ "Options": [
+ { "root_sudo": true }
+ ]
+ },
+ {
+ "Options": [
+ { "shell_noargs": true }
+ ]
+ },
+ {
+ "Options": [
+ { "set_home": true }
+ ]
+ },
+ {
+ "Options": [
+ { "always_set_home": true }
+ ]
+ },
+ {
+ "Options": [
+ { "path_info": true }
+ ]
+ },
+ {
+ "Options": [
+ { "insults": true }
+ ]
+ },
+ {
+ "Options": [
+ { "requiretty": false }
+ ]
+ },
+ {
+ "Options": [
+ { "env_editor": true }
+ ]
+ },
+ {
+ "Options": [
+ { "rootpw": false }
+ ]
+ },
+ {
+ "Options": [
+ { "runaspw": false }
+ ]
+ },
+ {
+ "Options": [
+ { "targetpw": false }
+ ]
+ },
+ {
+ "Options": [
+ { "use_loginclass": true }
+ ]
+ },
+ {
+ "Options": [
+ { "set_logname": true }
+ ]
+ },
+ {
+ "Options": [
+ { "stay_setuid": false }
+ ]
+ },
+ {
+ "Options": [
+ { "preserve_groups": false }
+ ]
+ },
+ {
+ "Options": [
+ { "timestamp_timeout": ".5" }
+ ]
+ },
+ {
+ "Options": [
+ { "passwd_timeout": "5" }
+ ]
+ },
+ {
+ "Options": [
+ { "passwd_tries": "3" }
+ ]
+ },
+ {
+ "Options": [
+ { "badpass_message": "Take off, eh!" }
+ ]
+ },
+ {
+ "Options": [
+ { "lecture_status_dir": "/var/lib/sudo/lectured" }
+ ]
+ },
+ {
+ "Options": [
+ { "timestampdir": "/run/sudo/ts" }
+ ]
+ },
+ {
+ "Options": [
+ { "timestampowner": "root" }
+ ]
+ },
+ {
+ "Options": [
+ { "exempt_group": "sudo" }
+ ]
+ },
+ {
+ "Options": [
+ { "passprompt": "%p's sudo password: " }
+ ]
+ },
+ {
+ "Options": [
+ { "passprompt_override": true }
+ ]
+ },
+ {
+ "Options": [
+ { "secure_path": "/usr/bin:/usr/sbin:/bin:/sbin" }
+ ]
+ },
+ {
+ "Options": [
+ { "editor": "/usr/bin/vi" }
+ ]
+ },
+ {
+ "Options": [
+ { "listpw": "any" }
+ ]
+ },
+ {
+ "Options": [
+ { "verifypw": "all" }
+ ]
+ },
+ {
+ "Options": [
+ { "noexec": true }
+ ]
+ },
+ {
+ "Options": [
+ { "ignore_local_sudoers": true }
+ ]
+ },
+ {
+ "Options": [
+ { "closefrom": "3" }
+ ]
+ },
+ {
+ "Options": [
+ { "closefrom_override": true }
+ ]
+ },
+ {
+ "Options": [
+ { "setenv": false }
+ ]
+ },
+ {
+ "Options": [
+ { "env_reset": true }
+ ]
+ },
+ {
+ "Options": [
+ {
+ "operation": "list_add",
+ "env_check": [
+ "TERMCAP"
+ ]
+ }
+ ]
+ },
+ {
+ "Options": [
+ { "env_delete": false }
+ ]
+ },
+ {
+ "Options": [
+ {
+ "operation": "list_add",
+ "env_keep": [
+ "LANG",
+ "LANGUAGE",
+ "LINGUAS",
+ "LC_*",
+ "_XKB_CHARSET"
+ ]
+ }
+ ]
+ },
+ {
+ "Options": [
+ { "env_file": "/etc/environment" }
+ ]
+ },
+ {
+ "Options": [
+ { "restricted_env_file": "/etc/environment.sudo" }
+ ]
+ },
+ {
+ "Options": [
+ { "sudoers_locale": "C" }
+ ]
+ },
+ {
+ "Options": [
+ { "visiblepw": false }
+ ]
+ },
+ {
+ "Options": [
+ { "pwfeedback": true }
+ ]
+ },
+ {
+ "Options": [
+ { "fast_glob": true }
+ ]
+ },
+ {
+ "Options": [
+ { "umask_override": true }
+ ]
+ },
+ {
+ "Options": [
+ { "log_input": true }
+ ]
+ },
+ {
+ "Options": [
+ { "log_output": true }
+ ]
+ },
+ {
+ "Options": [
+ { "compress_io": true }
+ ]
+ },
+ {
+ "Options": [
+ { "use_pty": true }
+ ]
+ },
+ {
+ "Options": [
+ { "iolog_dir": "/var/log/sudo-io" }
+ ]
+ },
+ {
+ "Options": [
+ { "iolog_file": "%{seq}" }
+ ]
+ },
+ {
+ "Options": [
+ { "set_utmp": true }
+ ]
+ },
+ {
+ "Options": [
+ { "utmp_runas": true }
+ ]
+ },
+ {
+ "Options": [
+ { "exec_background": false }
+ ]
+ },
+ {
+ "Options": [
+ { "pam_service": "sudo" }
+ ]
+ },
+ {
+ "Options": [
+ { "pam_login_service": "sudo-login" }
+ ]
+ },
+ {
+ "Options": [
+ { "pam_setcred": true }
+ ]
+ },
+ {
+ "Options": [
+ { "pam_session": true }
+ ]
+ },
+ {
+ "Options": [
+ { "pam_acct_mgmt": true }
+ ]
+ },
+ {
+ "Options": [
+ { "maxseq": "2176782336" }
+ ]
+ },
+ {
+ "Options": [
+ { "use_netgroups": true }
+ ]
+ },
+ {
+ "Options": [
+ { "sudoedit_checkdir": true }
+ ]
+ },
+ {
+ "Options": [
+ { "sudoedit_follow": false }
+ ]
+ },
+ {
+ "Options": [
+ { "always_query_group_plugin": true }
+ ]
+ },
+ {
+ "Options": [
+ { "netgroup_tuple": true }
+ ]
+ },
+ {
+ "Options": [
+ { "ignore_audit_errors": true }
+ ]
+ },
+ {
+ "Options": [
+ { "ignore_iolog_errors": true }
+ ]
+ },
+ {
+ "Options": [
+ { "ignore_logfile_errors": true }
+ ]
+ },
+ {
+ "Options": [
+ { "match_group_by_gid": false }
+ ]
+ },
+ {
+ "Options": [
+ { "iolog_user": "root" }
+ ]
+ },
+ {
+ "Options": [
+ { "iolog_group": "root" }
+ ]
+ },
+ {
+ "Options": [
+ { "iolog_mode": "0600" }
+ ]
+ },
+ {
+ "Options": [
+ { "fdexec": "digest_only" }
+ ]
+ },
+ {
+ "Options": [
+ { "ignore_unknown_defaults": false }
+ ]
+ },
+ {
+ "Options": [
+ { "command_timeout": "7d8h30m10s" }
+ ]
+ },
+ {
+ "Options": [
+ { "user_command_timeouts": true }
+ ]
+ },
+ {
+ "Options": [
+ { "iolog_flush": true }
+ ]
+ },
+ {
+ "Options": [
+ { "syslog_pid": true }
+ ]
+ },
+ {
+ "Options": [
+ { "timestamp_type": "tty" }
+ ]
+ },
+ {
+ "Options": [
+ { "authfail_message": "Learn to type!" }
+ ]
+ },
+ {
+ "Options": [
+ { "case_insensitive_user": true }
+ ]
+ },
+ {
+ "Options": [
+ { "case_insensitive_group": true }
+ ]
+ },
+ {
+ "Options": [
+ { "log_allowed": true }
+ ]
+ },
+ {
+ "Options": [
+ { "log_denied": true }
+ ]
+ },
+ {
+ "Options": [
+ { "log_servers": false }
+ ]
+ },
+ {
+ "Options": [
+ { "log_server_timeout": "10" }
+ ]
+ },
+ {
+ "Options": [
+ { "log_server_keepalive": true }
+ ]
+ },
+ {
+ "Options": [
+ { "log_server_cabundle": false }
+ ]
+ },
+ {
+ "Options": [
+ { "log_server_peer_cert": false }
+ ]
+ },
+ {
+ "Options": [
+ { "log_server_peer_key": false }
+ ]
+ },
+ {
+ "Options": [
+ { "log_server_verify": false }
+ ]
+ },
+ {
+ "Options": [
+ { "runas_allow_unknown_id": true }
+ ]
+ },
+ {
+ "Options": [
+ { "runas_check_shell": true }
+ ]
+ },
+ {
+ "Options": [
+ { "pam_ruser": true }
+ ]
+ },
+ {
+ "Options": [
+ { "pam_rhost": true }
+ ]
+ },
+ {
+ "Options": [
+ { "runcwd": "~" }
+ ]
+ },
+ {
+ "Options": [
+ { "selinux": false }
+ ]
+ },
+ {
+ "Options": [
+ { "admin_flag": false }
+ ]
+ }
+ ]
+}
diff --git a/plugins/sudoers/regress/sudoers/test26.ldif.ok b/plugins/sudoers/regress/sudoers/test26.ldif.ok
new file mode 100644
index 000000000..912e265df
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test26.ldif.ok
@@ -0,0 +1,134 @@
+dn: cn=defaults,ou=SUDOers,dc=sudo,dc=ws
+objectClass: top
+objectClass: sudoRole
+cn: defaults
+description: Default sudoOption's go here
+sudoOption: fqdn
+sudoOption: runas_default=root
+sudoOption: tty_tickets
+sudoOption: umask=022
+sudoOption: runchroot=/
+sudoOption: logfile=/var/log/sudo
+sudoOption: log_format=json
+sudoOption: syslog=auth
+sudoOption: syslog_badpri=alert
+sudoOption: syslog_goodpri=notice
+sudoOption: syslog_maxlen=2048
+sudoOption: !loglinelen
+sudoOption: log_year
+sudoOption: log_host
+sudoOption: !mailerpath
+sudoOption: mailerflags=-t
+sudoOption: mailfrom=sudo@sudo.ws
+sudoOption: mailto=root@localhost
+sudoOption: mailsub=*** Sudo information for %h ***
+sudoOption: long_otp_prompt
+sudoOption: ignore_dot
+sudoOption: !mail_always
+sudoOption: !mail_badpass
+sudoOption: !mail_no_user
+sudoOption: !mail_no_host
+sudoOption: !mail_no_perms
+sudoOption: !mail_all_cmnds
+sudoOption: lecture=always
+sudoOption: lecture_file=/etc/sudo.lecture
+sudoOption: authenticate
+sudoOption: root_sudo
+sudoOption: shell_noargs
+sudoOption: set_home
+sudoOption: always_set_home
+sudoOption: path_info
+sudoOption: insults
+sudoOption: !requiretty
+sudoOption: env_editor
+sudoOption: !rootpw
+sudoOption: !runaspw
+sudoOption: !targetpw
+sudoOption: use_loginclass
+sudoOption: set_logname
+sudoOption: !stay_setuid
+sudoOption: !preserve_groups
+sudoOption: timestamp_timeout=.5
+sudoOption: passwd_timeout=5
+sudoOption: passwd_tries=3
+sudoOption: badpass_message=Take off, eh!
+sudoOption: lecture_status_dir=/var/lib/sudo/lectured
+sudoOption: timestampdir=/run/sudo/ts
+sudoOption: timestampowner=root
+sudoOption: exempt_group=sudo
+sudoOption: passprompt=%p's sudo password:
+sudoOption: passprompt_override
+sudoOption: secure_path=/usr/bin:/usr/sbin:/bin:/sbin
+sudoOption: editor=/usr/bin/vi
+sudoOption: listpw=any
+sudoOption: verifypw=all
+sudoOption: noexec
+sudoOption: ignore_local_sudoers
+sudoOption: closefrom=3
+sudoOption: closefrom_override
+sudoOption: !setenv
+sudoOption: env_reset
+sudoOption: env_check+=TERMCAP
+sudoOption: !env_delete
+sudoOption: env_keep+=LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET
+sudoOption: env_file=/etc/environment
+sudoOption: restricted_env_file=/etc/environment.sudo
+sudoOption: sudoers_locale=C
+sudoOption: !visiblepw
+sudoOption: pwfeedback
+sudoOption: fast_glob
+sudoOption: umask_override
+sudoOption: log_input
+sudoOption: log_output
+sudoOption: compress_io
+sudoOption: use_pty
+sudoOption: iolog_dir=/var/log/sudo-io
+sudoOption: iolog_file=%{seq}
+sudoOption: set_utmp
+sudoOption: utmp_runas
+sudoOption: !exec_background
+sudoOption: pam_service=sudo
+sudoOption: pam_login_service=sudo-login
+sudoOption: pam_setcred
+sudoOption: pam_session
+sudoOption: pam_acct_mgmt
+sudoOption: maxseq=2176782336
+sudoOption: use_netgroups
+sudoOption: sudoedit_checkdir
+sudoOption: !sudoedit_follow
+sudoOption: always_query_group_plugin
+sudoOption: netgroup_tuple
+sudoOption: ignore_audit_errors
+sudoOption: ignore_iolog_errors
+sudoOption: ignore_logfile_errors
+sudoOption: !match_group_by_gid
+sudoOption: iolog_user=root
+sudoOption: iolog_group=root
+sudoOption: iolog_mode=0600
+sudoOption: fdexec=digest_only
+sudoOption: !ignore_unknown_defaults
+sudoOption: command_timeout=7d8h30m10s
+sudoOption: user_command_timeouts
+sudoOption: iolog_flush
+sudoOption: syslog_pid
+sudoOption: timestamp_type=tty
+sudoOption: authfail_message=Learn to type!
+sudoOption: case_insensitive_user
+sudoOption: case_insensitive_group
+sudoOption: log_allowed
+sudoOption: log_denied
+sudoOption: !log_servers
+sudoOption: log_server_timeout=10
+sudoOption: log_server_keepalive
+sudoOption: !log_server_cabundle
+sudoOption: !log_server_peer_cert
+sudoOption: !log_server_peer_key
+sudoOption: !log_server_verify
+sudoOption: runas_allow_unknown_id
+sudoOption: runas_check_shell
+sudoOption: pam_ruser
+sudoOption: pam_rhost
+sudoOption: runcwd=~
+sudoOption: !selinux
+sudoOption: !admin_flag
+
diff --git a/plugins/sudoers/regress/sudoers/test26.ldif2sudo.ok b/plugins/sudoers/regress/sudoers/test26.ldif2sudo.ok
new file mode 100644
index 000000000..706c6fd0a
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test26.ldif2sudo.ok
@@ -0,0 +1,128 @@
+Defaults fqdn
+Defaults runas_default=root
+Defaults tty_tickets
+Defaults umask=022
+Defaults runchroot=/
+Defaults logfile=/var/log/sudo
+Defaults log_format=json
+Defaults syslog=auth
+Defaults syslog_badpri=alert
+Defaults syslog_goodpri=notice
+Defaults syslog_maxlen=2048
+Defaults !loglinelen
+Defaults log_year
+Defaults log_host
+Defaults !mailerpath
+Defaults mailerflags=-t
+Defaults mailfrom=sudo@sudo.ws
+Defaults mailto=root@localhost
+Defaults mailsub="*** Sudo information for %h ***"
+Defaults long_otp_prompt
+Defaults ignore_dot
+Defaults !mail_always
+Defaults !mail_badpass
+Defaults !mail_no_user
+Defaults !mail_no_host
+Defaults !mail_no_perms
+Defaults !mail_all_cmnds
+Defaults lecture=always
+Defaults lecture_file=/etc/sudo.lecture
+Defaults authenticate
+Defaults root_sudo
+Defaults shell_noargs
+Defaults set_home
+Defaults always_set_home
+Defaults path_info
+Defaults insults
+Defaults !requiretty
+Defaults env_editor
+Defaults !rootpw
+Defaults !runaspw
+Defaults !targetpw
+Defaults use_loginclass
+Defaults set_logname
+Defaults !stay_setuid
+Defaults !preserve_groups
+Defaults timestamp_timeout=.5
+Defaults passwd_timeout=5
+Defaults passwd_tries=3
+Defaults badpass_message="Take off, eh!"
+Defaults lecture_status_dir=/var/lib/sudo/lectured
+Defaults timestampdir=/run/sudo/ts
+Defaults timestampowner=root
+Defaults exempt_group=sudo
+Defaults passprompt="%p's sudo password:"
+Defaults passprompt_override
+Defaults secure_path=/usr/bin\:/usr/sbin\:/bin\:/sbin
+Defaults editor=/usr/bin/vi
+Defaults listpw=any
+Defaults verifypw=all
+Defaults noexec
+Defaults ignore_local_sudoers
+Defaults closefrom=3
+Defaults closefrom_override
+Defaults !setenv
+Defaults env_reset
+Defaults env_check+=TERMCAP
+Defaults !env_delete
+Defaults env_keep+="LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
+Defaults env_file=/etc/environment
+Defaults restricted_env_file=/etc/environment.sudo
+Defaults sudoers_locale=C
+Defaults !visiblepw
+Defaults pwfeedback
+Defaults fast_glob
+Defaults umask_override
+Defaults log_input
+Defaults log_output
+Defaults compress_io
+Defaults use_pty
+Defaults iolog_dir=/var/log/sudo-io
+Defaults iolog_file=%{seq}
+Defaults set_utmp
+Defaults utmp_runas
+Defaults !exec_background
+Defaults pam_service=sudo
+Defaults pam_login_service=sudo-login
+Defaults pam_setcred
+Defaults pam_session
+Defaults pam_acct_mgmt
+Defaults maxseq=2176782336
+Defaults use_netgroups
+Defaults sudoedit_checkdir
+Defaults !sudoedit_follow
+Defaults always_query_group_plugin
+Defaults netgroup_tuple
+Defaults ignore_audit_errors
+Defaults ignore_iolog_errors
+Defaults ignore_logfile_errors
+Defaults !match_group_by_gid
+Defaults iolog_user=root
+Defaults iolog_group=root
+Defaults iolog_mode=0600
+Defaults fdexec=digest_only
+Defaults !ignore_unknown_defaults
+Defaults command_timeout=7d8h30m10s
+Defaults user_command_timeouts
+Defaults iolog_flush
+Defaults syslog_pid
+Defaults timestamp_type=tty
+Defaults authfail_message="Learn to type!"
+Defaults case_insensitive_user
+Defaults case_insensitive_group
+Defaults log_allowed
+Defaults log_denied
+Defaults !log_servers
+Defaults log_server_timeout=10
+Defaults log_server_keepalive
+Defaults !log_server_cabundle
+Defaults !log_server_peer_cert
+Defaults !log_server_peer_key
+Defaults !log_server_verify
+Defaults runas_allow_unknown_id
+Defaults runas_check_shell
+Defaults pam_ruser
+Defaults pam_rhost
+Defaults runcwd=~
+Defaults !selinux
+Defaults !admin_flag
diff --git a/plugins/sudoers/regress/sudoers/test26.out.ok b/plugins/sudoers/regress/sudoers/test26.out.ok
new file mode 100644
index 000000000..e9f07fb6e
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test26.out.ok
@@ -0,0 +1,122 @@
+Parses OK
+
+Defaults fqdn
+Defaults runas_default=root
+Defaults tty_tickets
+Defaults umask=022
+Defaults runchroot=/
+Defaults logfile=/var/log/sudo
+Defaults log_format=json
+Defaults syslog=auth, syslog_badpri=alert, syslog_goodpri=notice
+Defaults syslog_maxlen=2048
+Defaults !loglinelen, log_year, log_host
+Defaults !mailerpath, mailerflags=-t, mailfrom=sudo@sudo.ws, mailto=root@localhost, mailsub="*** Sudo information for %h ***"
+Defaults long_otp_prompt
+Defaults ignore_dot
+Defaults !mail_always
+Defaults !mail_badpass
+Defaults !mail_no_user
+Defaults !mail_no_host
+Defaults !mail_no_perms
+Defaults !mail_all_cmnds
+Defaults lecture=always
+Defaults lecture_file=/etc/sudo.lecture
+Defaults authenticate
+Defaults root_sudo
+Defaults shell_noargs
+Defaults set_home
+Defaults always_set_home
+Defaults path_info
+Defaults insults
+Defaults !requiretty
+Defaults env_editor
+Defaults !rootpw
+Defaults !runaspw
+Defaults !targetpw
+Defaults use_loginclass
+Defaults set_logname
+Defaults !stay_setuid
+Defaults !preserve_groups
+Defaults timestamp_timeout=.5
+Defaults passwd_timeout=5
+Defaults passwd_tries=3
+Defaults badpass_message="Take off, eh!"
+Defaults lecture_status_dir=/var/lib/sudo/lectured
+Defaults timestampdir=/run/sudo/ts
+Defaults timestampowner=root
+Defaults exempt_group=sudo
+Defaults passprompt="%p's sudo password: "
+Defaults passprompt_override
+Defaults secure_path=/usr/bin\:/usr/sbin\:/bin\:/sbin
+Defaults editor=/usr/bin/vi
+Defaults listpw=any
+Defaults verifypw=all
+Defaults noexec
+Defaults ignore_local_sudoers
+Defaults closefrom=3
+Defaults closefrom_override
+Defaults !setenv
+Defaults env_reset
+Defaults env_check+=TERMCAP
+Defaults !env_delete
+Defaults env_keep+="LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET"
+Defaults env_file=/etc/environment
+Defaults restricted_env_file=/etc/environment.sudo
+Defaults sudoers_locale=C
+Defaults !visiblepw
+Defaults pwfeedback
+Defaults fast_glob
+Defaults umask_override
+Defaults log_input
+Defaults log_output
+Defaults compress_io
+Defaults use_pty
+Defaults iolog_dir=/var/log/sudo-io
+Defaults iolog_file=%{seq}
+Defaults set_utmp
+Defaults utmp_runas
+Defaults !exec_background
+Defaults pam_service=sudo
+Defaults pam_login_service=sudo-login
+Defaults pam_setcred
+Defaults pam_session
+Defaults pam_acct_mgmt
+Defaults maxseq=2176782336
+Defaults use_netgroups
+Defaults sudoedit_checkdir
+Defaults !sudoedit_follow
+Defaults always_query_group_plugin
+Defaults netgroup_tuple
+Defaults ignore_audit_errors
+Defaults ignore_iolog_errors
+Defaults ignore_logfile_errors
+Defaults !match_group_by_gid
+Defaults iolog_user=root
+Defaults iolog_group=root
+Defaults iolog_mode=0600
+Defaults fdexec=digest_only
+Defaults !ignore_unknown_defaults
+Defaults command_timeout=7d8h30m10s
+Defaults user_command_timeouts
+Defaults iolog_flush
+Defaults syslog_pid
+Defaults timestamp_type=tty
+Defaults authfail_message="Learn to type!"
+Defaults case_insensitive_user
+Defaults case_insensitive_group
+Defaults log_allowed
+Defaults log_denied
+Defaults !log_servers
+Defaults log_server_timeout=10
+Defaults log_server_keepalive
+Defaults !log_server_cabundle
+Defaults !log_server_peer_cert
+Defaults !log_server_peer_key
+Defaults !log_server_verify
+Defaults runas_allow_unknown_id
+Defaults runas_check_shell
+Defaults pam_ruser
+Defaults pam_rhost
+Defaults runcwd=~
+Defaults !selinux
+Defaults !admin_flag
diff --git a/plugins/sudoers/regress/sudoers/test26.toke.ok b/plugins/sudoers/regress/sudoers/test26.toke.ok
new file mode 100644
index 000000000..9e125fe1e
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test26.toke.ok
@@ -0,0 +1,128 @@
+#
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2) , DEFVAR = WORD(2) , DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS !DEFVAR , DEFVAR , DEFVAR
+DEFAULTS !DEFVAR , DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4) , DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4) , DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4) , DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+
+#
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR += BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR += BEGINSTR STRBODY ENDSTR WORD(4)
+#
+#
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+#
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+#
+#
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR = BEGINSTR STRBODY ENDSTR WORD(4)
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR
+DEFAULTS DEFVAR = WORD(2)
+DEFAULTS !DEFVAR
+DEFAULTS !DEFVAR
diff --git a/plugins/sudoers/regress/sudoers/test27.in b/plugins/sudoers/regress/sudoers/test27.in
new file mode 100644
index 000000000..9e6c28f8d
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test27.in
@@ -0,0 +1,13 @@
+# Query the group plugin too (if there is one)
+Defaults always_query_group_plugin
+
+# Test RunasGroup with and without RunasUser
+root ALL = ( root : wheel ) ALL
+millert ALL = ( : wheel ) ALL
+%sudo ALL = ( : ALL ) ALL
+
+# Test RunasUser with %group syntax
+operator ALL = ( %wheel ) ALL
+
+# Test netgroup for user and host
++netusers +nethosts = ( +netrunas ) ALL
diff --git a/plugins/sudoers/regress/sudoers/test27.json.ok b/plugins/sudoers/regress/sudoers/test27.json.ok
new file mode 100644
index 000000000..81700cf8b
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test27.json.ok
@@ -0,0 +1,119 @@
+{
+ "Defaults": [
+ {
+ "Options": [
+ { "always_query_group_plugin": true }
+ ]
+ }
+ ],
+ "User_Specs": [
+ {
+ "User_List": [
+ { "username": "root" }
+ ],
+ "Host_List": [
+ { "hostname": "ALL" }
+ ],
+ "Cmnd_Specs": [
+ {
+ "runasusers": [
+ { "username": "root" }
+ ],
+ "runasgroups": [
+ { "usergroup": "wheel" }
+ ],
+ "Options": [
+ { "setenv": true }
+ ],
+ "Commands": [
+ { "command": "ALL" }
+ ]
+ }
+ ]
+ },
+ {
+ "User_List": [
+ { "username": "millert" }
+ ],
+ "Host_List": [
+ { "hostname": "ALL" }
+ ],
+ "Cmnd_Specs": [
+ {
+ "runasgroups": [
+ { "usergroup": "wheel" }
+ ],
+ "Options": [
+ { "setenv": true }
+ ],
+ "Commands": [
+ { "command": "ALL" }
+ ]
+ }
+ ]
+ },
+ {
+ "User_List": [
+ { "usergroup": "sudo" }
+ ],
+ "Host_List": [
+ { "hostname": "ALL" }
+ ],
+ "Cmnd_Specs": [
+ {
+ "runasgroups": [
+ { "usergroup": "ALL" }
+ ],
+ "Options": [
+ { "setenv": true }
+ ],
+ "Commands": [
+ { "command": "ALL" }
+ ]
+ }
+ ]
+ },
+ {
+ "User_List": [
+ { "username": "operator" }
+ ],
+ "Host_List": [
+ { "hostname": "ALL" }
+ ],
+ "Cmnd_Specs": [
+ {
+ "runasusers": [
+ { "usergroup": "wheel" }
+ ],
+ "Options": [
+ { "setenv": true }
+ ],
+ "Commands": [
+ { "command": "ALL" }
+ ]
+ }
+ ]
+ },
+ {
+ "User_List": [
+ { "netgroup": "netusers" }
+ ],
+ "Host_List": [
+ { "netgroup": "nethosts" }
+ ],
+ "Cmnd_Specs": [
+ {
+ "runasusers": [
+ { "netgroup": "netrunas" }
+ ],
+ "Options": [
+ { "setenv": true }
+ ],
+ "Commands": [
+ { "command": "ALL" }
+ ]
+ }
+ ]
+ }
+ ]
+}
diff --git a/plugins/sudoers/regress/sudoers/test27.ldif.ok b/plugins/sudoers/regress/sudoers/test27.ldif.ok
new file mode 100644
index 000000000..b91a78d6a
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test27.ldif.ok
@@ -0,0 +1,58 @@
+dn: cn=defaults,ou=SUDOers,dc=sudo,dc=ws
+objectClass: top
+objectClass: sudoRole
+cn: defaults
+description: Default sudoOption's go here
+sudoOption: always_query_group_plugin
+
+dn: cn=root,ou=SUDOers,dc=sudo,dc=ws
+objectClass: top
+objectClass: sudoRole
+cn: root
+sudoUser: root
+sudoHost: ALL
+sudoRunAsUser: root
+sudoRunAsGroup: wheel
+sudoCommand: ALL
+sudoOrder: 1
+
+dn: cn=millert,ou=SUDOers,dc=sudo,dc=ws
+objectClass: top
+objectClass: sudoRole
+cn: millert
+sudoUser: millert
+sudoHost: ALL
+sudoRunAsGroup: wheel
+sudoCommand: ALL
+sudoOrder: 2
+
+dn: cn=%sudo,ou=SUDOers,dc=sudo,dc=ws
+objectClass: top
+objectClass: sudoRole
+cn: %sudo
+sudoUser: %sudo
+sudoHost: ALL
+sudoRunAsGroup: ALL
+sudoCommand: ALL
+sudoOrder: 3
+
+dn: cn=operator,ou=SUDOers,dc=sudo,dc=ws
+objectClass: top
+objectClass: sudoRole
+cn: operator
+sudoUser: operator
+sudoHost: ALL
+sudoRunAsUser: %wheel
+sudoCommand: ALL
+sudoOrder: 4
+
+dn: cn=\+netusers,ou=SUDOers,dc=sudo,dc=ws
+objectClass: top
+objectClass: sudoRole
+cn: \+netusers
+sudoUser: +netusers
+sudoHost: +nethosts
+sudoRunAsUser: +netrunas
+sudoCommand: ALL
+sudoOrder: 5
+
diff --git a/plugins/sudoers/regress/sudoers/test27.ldif2sudo.ok b/plugins/sudoers/regress/sudoers/test27.ldif2sudo.ok
new file mode 100644
index 000000000..a73f459d9
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test27.ldif2sudo.ok
@@ -0,0 +1,16 @@
+Defaults always_query_group_plugin
+
+# sudoRole root
+root ALL = (root : wheel) ALL
+
+# sudoRole millert
+millert ALL = ( : wheel) ALL
+
+# sudoRole %sudo
+%sudo ALL = ( : ALL) ALL
+
+# sudoRole operator
+operator ALL = (%wheel) ALL
+
+# sudoRole +netusers
++netusers +nethosts = (+netrunas) ALL
diff --git a/plugins/sudoers/regress/sudoers/test27.out.ok b/plugins/sudoers/regress/sudoers/test27.out.ok
new file mode 100644
index 000000000..e8a08dab9
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test27.out.ok
@@ -0,0 +1,9 @@
+Parses OK
+
+Defaults always_query_group_plugin
+
+root ALL = (root : wheel) ALL
+millert ALL = ( : wheel) ALL
+%sudo ALL = ( : ALL) ALL
+operator ALL = (%wheel) ALL
++netusers +nethosts = (+netrunas) ALL
diff --git a/plugins/sudoers/regress/sudoers/test27.toke.ok b/plugins/sudoers/regress/sudoers/test27.toke.ok
new file mode 100644
index 000000000..e7b3eb678
--- /dev/null
+++ b/plugins/sudoers/regress/sudoers/test27.toke.ok
@@ -0,0 +1,13 @@
+#
+DEFAULTS DEFVAR
+
+#
+WORD(6) ALL = ( WORD(6) : WORD(6) ) ALL
+WORD(6) ALL = ( : WORD(6) ) ALL
+USERGROUP ALL = ( : ALL ) ALL
+
+#
+WORD(6) ALL = ( USERGROUP ) ALL
+
+#
+NETGROUP NETGROUP = ( NETGROUP ) ALL
diff --git a/plugins/sudoers/regress/sudoers/test4.toke.ok b/plugins/sudoers/regress/sudoers/test4.toke.ok
index 307945f43..a808e5ade 100644
--- a/plugins/sudoers/regress/sudoers/test4.toke.ok
+++ b/plugins/sudoers/regress/sudoers/test4.toke.ok
@@ -2,4 +2,4 @@
USERALIAS ALIAS = WORD(6) : ALIAS = WORD(6)
#
-USERALIAS ALIAS = WORD(6) <*> ERROR ALIAS = WORD(6)
+USERALIAS ALIAS = WORD(6) ERROR <*> ALIAS = WORD(6)
diff --git a/plugins/sudoers/regress/sudoers/test5.toke.ok b/plugins/sudoers/regress/sudoers/test5.toke.ok
index fb8152f4f..937645554 100644
--- a/plugins/sudoers/regress/sudoers/test5.toke.ok
+++ b/plugins/sudoers/regress/sudoers/test5.toke.ok
@@ -1,3 +1,3 @@
#
-USERALIAS ALIAS = BEGINSTR ENDSTR <*> ERROR
-BEGINSTR ENDSTR <*> ERROR ALL = ALL
+USERALIAS ALIAS = BEGINSTR ENDSTR ERROR <*>
+BEGINSTR ENDSTR ERROR <*> ALL = ALL
diff --git a/plugins/sudoers/regress/sudoers/test7.toke.ok b/plugins/sudoers/regress/sudoers/test7.toke.ok
index b0da147c3..a5bf01873 100644
--- a/plugins/sudoers/regress/sudoers/test7.toke.ok
+++ b/plugins/sudoers/regress/sudoers/test7.toke.ok
@@ -1,7 +1,7 @@
#
-USERALIAS ALIAS = BEGINSTR STRBODY ENDSTR <*> ERROR
-USERALIAS ALIAS = BEGINSTR STRBODY ENDSTR <*> ERROR
-USERALIAS ALIAS = BEGINSTR STRBODY ENDSTR <*> ERROR
-USERALIAS ALIAS = <*> ERROR
-USERALIAS ALIAS = <*> ERROR
-USERALIAS ALIAS = <*> ERROR
+USERALIAS ALIAS = BEGINSTR STRBODY ENDSTR ERROR <*>
+USERALIAS ALIAS = BEGINSTR STRBODY ENDSTR ERROR <*>
+USERALIAS ALIAS = BEGINSTR STRBODY ENDSTR ERROR <*>
+USERALIAS ALIAS = ERROR <*>
+USERALIAS ALIAS = ERROR <*>
+USERALIAS ALIAS = ERROR <*>
diff --git a/plugins/sudoers/regress/sudoers/test8.toke.ok b/plugins/sudoers/regress/sudoers/test8.toke.ok
index f77564529..1bc46cbde 100644
--- a/plugins/sudoers/regress/sudoers/test8.toke.ok
+++ b/plugins/sudoers/regress/sudoers/test8.toke.ok
@@ -4,4 +4,4 @@ USERALIAS ALIAS = BEGINSTR STRBODY STRBODY ENDSTR WORD(4)
USERALIAS ALIAS = WORD(6)
#
-USERALIAS ALIAS = BEGINSTR STRBODY <*> ERROR
+USERALIAS ALIAS = BEGINSTR STRBODY ERROR <*>
diff --git a/plugins/sudoers/regress/testsudoers/test11.sh b/plugins/sudoers/regress/testsudoers/test11.sh
index 79bdadd90..d52754d10 100755
--- a/plugins/sudoers/regress/testsudoers/test11.sh
+++ b/plugins/sudoers/regress/testsudoers/test11.sh
@@ -6,9 +6,6 @@
: ${TESTSUDOERS=testsudoers}
-# Avoid warnings about memory leaks when there is a syntax error
-ASAN_OPTIONS=detect_leaks=0; export ASAN_OPTIONS
-
MYUID=`\ls -ln $TESTDIR/test2.inc | awk '{print $3}'`
MYGID=`\ls -ln $TESTDIR/test2.inc | awk '{print $4}'`
diff --git a/plugins/sudoers/regress/testsudoers/test12.sh b/plugins/sudoers/regress/testsudoers/test12.sh
index d496e3dcf..77996bac5 100755
--- a/plugins/sudoers/regress/testsudoers/test12.sh
+++ b/plugins/sudoers/regress/testsudoers/test12.sh
@@ -6,9 +6,6 @@
: ${TESTSUDOERS=testsudoers}
-# Avoid warnings about memory leaks when there is a syntax error
-ASAN_OPTIONS=detect_leaks=0; export ASAN_OPTIONS
-
echo "Testing sudoers with multiple syntax errors"
echo ""
$TESTSUDOERS -d <<EOF 2>&1 | sed 's/\(syntax error\), .*/\1/'
diff --git a/plugins/sudoers/regress/testsudoers/test13.sh b/plugins/sudoers/regress/testsudoers/test13.sh
index e33cbb1c2..d9c3d0c42 100755
--- a/plugins/sudoers/regress/testsudoers/test13.sh
+++ b/plugins/sudoers/regress/testsudoers/test13.sh
@@ -6,9 +6,6 @@
: ${TESTSUDOERS=testsudoers}
-# Avoid warnings about memory leaks when there is a syntax error
-ASAN_OPTIONS=detect_leaks=0; export ASAN_OPTIONS
-
echo "Testing alias definitions using reserved words"
echo ""
$TESTSUDOERS -d <<EOF 2>&1
diff --git a/plugins/sudoers/regress/testsudoers/test4.sh b/plugins/sudoers/regress/testsudoers/test4.sh
index 2ec47cead..4d496c793 100755
--- a/plugins/sudoers/regress/testsudoers/test4.sh
+++ b/plugins/sudoers/regress/testsudoers/test4.sh
@@ -5,9 +5,6 @@
: ${TESTSUDOERS=testsudoers}
-# Avoid warnings about memory leaks when there is a syntax error
-ASAN_OPTIONS=detect_leaks=0; export ASAN_OPTIONS
-
exec 2>&1
$TESTSUDOERS -U 1 root id <<EOF
@include $TESTDIR/test2.inc
diff --git a/plugins/sudoers/regress/testsudoers/test5.sh b/plugins/sudoers/regress/testsudoers/test5.sh
index 8ace3725c..317ad986c 100755
--- a/plugins/sudoers/regress/testsudoers/test5.sh
+++ b/plugins/sudoers/regress/testsudoers/test5.sh
@@ -5,9 +5,6 @@
: ${TESTSUDOERS=testsudoers}
-# Avoid warnings about memory leaks when there is a syntax error
-ASAN_OPTIONS=detect_leaks=0; export ASAN_OPTIONS
-
# Create test file
TESTFILE="`pwd`/regress/testsudoers/test5.inc"
cat >"$TESTFILE" <<EOF
diff --git a/plugins/sudoers/regress/unescape/check_unesc.c b/plugins/sudoers/regress/unescape/check_unesc.c
new file mode 100644
index 000000000..26bbd8db3
--- /dev/null
+++ b/plugins/sudoers/regress/unescape/check_unesc.c
@@ -0,0 +1,143 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define SUDO_ERROR_WRAP 0
+
+#include "sudoers.h"
+
+struct test_data {
+ char *input;
+ char *result;
+ size_t result_len;
+ size_t bufsize;
+} test_data[] = {
+ { "\\\0ABC", "\\", 1, 2 }, /* 1 */
+ { "\\ \\;", "\\ ;", 3, 4 }, /* 2 */
+ { "\\\t\\;", "\\\t;", 3, 4 }, /* 3 */
+ { "\\foo", "foo", 3, 4 }, /* 4 */
+ { "foo\\ bar", "foo\\ bar", 8, 9 }, /* 5 */
+ { "foo bar", "f", 7, 2 }, /* 6 */
+ { "foo bar", "", 7, 1 }, /* 7 */
+ { "foo bar", NULL, 7, 0 }, /* 8 */
+ { NULL }
+};
+
+sudo_dso_public int main(int argc, char *argv[]);
+
+static void
+test_strlcpy_unescape(int *ntests_out, int *errors_out)
+{
+ int ntests = *ntests_out;
+ int errors = *errors_out;
+ struct test_data *td;
+ char buf[1024];
+ size_t len;
+
+ for (td = test_data; td->input != NULL; td++) {
+ ntests++;
+ memset(buf, 'A', sizeof(buf));
+ len = strlcpy_unescape(buf, td->input, td->bufsize);
+ if (len != td->result_len) {
+ sudo_warnx("%d: \"%s\": bad return %zu, expected %zu",
+ ntests, td->input, len, td->result_len);
+ errors++;
+ }
+ len = td->result ? strlen(td->result) : 0;
+ if ((len != 0 || td->bufsize != 0) && len >= td->bufsize) {
+ sudo_warnx("%d: \"%s\": bad length %zu >= %zu",
+ ntests, td->input, len, td->bufsize);
+ errors++;
+ }
+ if (td->result != NULL && strcmp(td->result, buf) != 0) {
+ sudo_warnx("%d: \"%s\": got \"%s\", expected \"%s\"",
+ ntests, td->input, buf, td->result);
+ errors++;
+ }
+ if (buf[td->bufsize] != 'A') {
+ sudo_warnx("%d: \"%s\": wrote past end of buffer at %zu (0x%x)",
+ ntests, td->input, td->bufsize, buf[td->bufsize]);
+ errors++;
+ }
+ }
+
+ *ntests_out = ntests;
+ *errors_out = errors;
+}
+
+static void
+test_strvec_join(char sep, int *ntests_out, int *errors_out)
+{
+ int ntests = *ntests_out;
+ int errors = *errors_out;
+ char buf[64*1024 + 1], expected[64*1024 + 3];
+ char *argv[3], *result;
+
+ /* Test joining an argument vector while unescaping. */
+ /* Simulate: sudoedit -s '\' `perl -e 'print "A" x 65536'` */
+ memset(buf, 'A', sizeof(buf));
+ buf[sizeof(buf) - 1] = '\0';
+ argv[0] = "\\";
+ argv[1] = buf;
+ argv[2] = NULL;
+
+ memset(expected, 'A', sizeof(expected));
+ expected[0] = '\\';
+ expected[1] = sep;
+ expected[sizeof(expected) - 1] = '\0';
+
+ ntests++;
+ result = strvec_join(argv, sep, strlcpy_unescape);
+ if (result == NULL) {
+ sudo_warnx("%d: failed to join argument vector", ntests);
+ errors++;
+ } else if (strcmp(result, expected) != 0) {
+ sudo_warnx("%d: got \"%s\", expected \"%s\"", ntests,
+ result, expected);
+ errors++;
+ }
+ free(result);
+
+ *ntests_out = ntests;
+ *errors_out = errors;
+}
+
+int
+main(int argc, char *argv[])
+{
+ int ntests = 0, errors = 0;
+
+ initprogname(argc > 0 ? argv[0] : "check_unesc");
+
+ /* strlcpy_unescape tests */
+ test_strlcpy_unescape(&ntests, &errors);
+
+ /* strvec_join test */
+ test_strvec_join(' ', &ntests, &errors);
+ test_strvec_join('\n', &ntests, &errors);
+
+ printf("%s: %d tests run, %d errors, %d%% success rate\n", getprogname(),
+ ntests, errors, (ntests - errors) * 100 / ntests);
+
+ exit(errors);
+}
diff --git a/plugins/sudoers/sssd.c b/plugins/sudoers/sssd.c
index 4455327eb..8b5561d67 100644
--- a/plugins/sudoers/sssd.c
+++ b/plugins/sudoers/sssd.c
@@ -370,7 +370,7 @@ sss_to_sudoers(struct sudo_sss_handle *handle,
TAILQ_INSERT_TAIL(&handle->parse_tree.userspecs, us, entries);
/* We only include rules where the user matches. */
- if ((m = new_member_all(NULL)) == NULL)
+ if ((m = sudo_ldap_new_member_all()) == NULL)
goto oom;
TAILQ_INSERT_TAIL(&us->users, m, entries);
diff --git a/plugins/sudoers/strlcpy_unesc.c b/plugins/sudoers/strlcpy_unesc.c
new file mode 100644
index 000000000..ee6276e76
--- /dev/null
+++ b/plugins/sudoers/strlcpy_unesc.c
@@ -0,0 +1,52 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <ctype.h>
+
+#include "sudoers.h"
+
+size_t
+strlcpy_unescape(char *dst, const char *src, size_t size)
+{
+ size_t len = 0;
+ char ch;
+ debug_decl(strlcpy_unescape, SUDOERS_DEBUG_UTIL);
+
+ while ((ch = *src++) != '\0') {
+ if (ch == '\\' && *src != '\0' && !isspace((unsigned char)*src))
+ ch = *src++;
+ if (size > 1) {
+ *dst++ = ch;
+ size--;
+ }
+ len++;
+ }
+ if (size > 0)
+ *dst = '\0';
+
+ debug_return_size_t(len);
+}
diff --git a/plugins/sudoers/strvec_join.c b/plugins/sudoers/strvec_join.c
new file mode 100644
index 000000000..240e0938c
--- /dev/null
+++ b/plugins/sudoers/strvec_join.c
@@ -0,0 +1,74 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2021 Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "sudoers.h"
+
+#ifdef HAVE_STRLCPY
+# define cpy_default strlcpy
+#else
+# define cpy_default sudo_strlcpy
+#endif
+
+/*
+ * Join a NULL-terminated array of strings using the specified separator
+ * char. If non-NULL, the copy function must have strlcpy-like semantics.
+ */
+char *
+strvec_join(char *const argv[], char sep, size_t (*cpy)(char *, const char *, size_t))
+{
+ char *dst, *result = NULL;
+ char *const *av;
+ size_t n, size = 0;
+ debug_decl(strvec_join, SUDOERS_DEBUG_UTIL);
+
+ for (av = argv; *av != NULL; av++)
+ size += strlen(*av) + 1;
+ if (size == 0 || (result = malloc(size)) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_ptr(NULL);
+ }
+
+ if (cpy == NULL)
+ cpy = cpy_default;
+ for (dst = result, av = argv; *av != NULL; av++) {
+ n = cpy(dst, *av, size);
+ if (n >= size) {
+ sudo_warnx(U_("internal error, %s overflow"), __func__);
+ free(result);
+ debug_return_ptr(NULL);
+ }
+ dst += n;
+ size -= n;
+ *dst++ = sep;
+ size--;
+ }
+ *--dst = '\0';
+
+ debug_return_str(result);
+}
diff --git a/plugins/sudoers/stubs.c b/plugins/sudoers/stubs.c
index fb1e975af..fcb0889d8 100644
--- a/plugins/sudoers/stubs.c
+++ b/plugins/sudoers/stubs.c
@@ -84,7 +84,8 @@ get_interfaces(void)
int
set_cmnd_path(const char *runchroot)
{
- return FOUND;
+ /* Cannot return FOUND without also setting user_cmnd to a new value. */
+ return NOT_FOUND;
}
/* STUB */
diff --git a/plugins/sudoers/sudo_ldap.h b/plugins/sudoers/sudo_ldap.h
index f0a3d0b83..c42853570 100644
--- a/plugins/sudoers/sudo_ldap.h
+++ b/plugins/sudoers/sudo_ldap.h
@@ -27,5 +27,6 @@ bool sudo_ldap_is_negated(char **valp);
bool sudo_ldap_add_default(const char *var, const char *val, int op, char *source, struct defaults_list *defs);
int sudo_ldap_parse_option(char *optstr, char **varp, char **valp);
struct privilege *sudo_ldap_role_to_priv(const char *cn, void *hosts, void *runasusers, void *runasgroups, void *cmnds, void *opts, const char *notbefore, const char *notafter, bool warnings, bool store_options, sudo_ldap_iter_t iter);
+struct member *sudo_ldap_new_member_all(void);
#endif /* SUDOERS_LDAP_H */
diff --git a/plugins/sudoers/sudoers.c b/plugins/sudoers/sudoers.c
index 20f760bc6..9b812746f 100644
--- a/plugins/sudoers/sudoers.c
+++ b/plugins/sudoers/sudoers.c
@@ -63,6 +63,7 @@
#include "sudoers.h"
#include "parse.h"
+#include "check.h"
#include "auth/sudo_auth.h"
#include "sudo_iolog.h"
@@ -70,7 +71,6 @@
* Prototypes
*/
static int set_cmnd(void);
-static int create_admin_success_flag(void);
static bool init_vars(char * const *);
static bool set_loginclass(struct passwd *);
static bool set_runasgr(const char *, bool);
@@ -159,8 +159,9 @@ sudoers_init(void *info, char * const envp[])
static int ret = -1;
debug_decl(sudoers_init, SUDOERS_DEBUG_PLUGIN);
- if (ret == true)
- debug_return_int(true);
+ /* Only initialize once. */
+ if (snl != NULL)
+ debug_return_int(ret);
bindtextdomain("sudoers", LOCALEDIR);
@@ -340,6 +341,11 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
sudo_warn_set_locale_func(sudoers_warn_setlocale);
+ if (argc == 0) {
+ sudo_warnx("%s", U_("no command specified"));
+ debug_return_int(-1);
+ }
+
unlimit_nproc();
/* Is root even allowed to run sudo? */
@@ -359,38 +365,26 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
/*
* Make a local copy of argc/argv, with special handling
- * for pseudo-commands and the '-i' option.
+ * for the '-i' option.
*/
- if (argc == 0) {
- NewArgc = 1;
- NewArgv = reallocarray(NULL, NewArgc + 1, sizeof(char *));
- if (NewArgv == NULL) {
- sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- goto done;
- }
- sudoers_gc_add(GC_VECTOR, NewArgv);
- NewArgv[0] = user_cmnd;
- NewArgv[1] = NULL;
- } else {
- /* Must leave an extra slot before NewArgv for bash's --login */
- NewArgc = argc;
- NewArgv = reallocarray(NULL, NewArgc + 2, sizeof(char *));
- if (NewArgv == NULL) {
+ /* Must leave an extra slot before NewArgv for bash's --login */
+ NewArgc = argc;
+ NewArgv = reallocarray(NULL, NewArgc + 2, sizeof(char *));
+ if (NewArgv == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ goto done;
+ }
+ sudoers_gc_add(GC_PTR, NewArgv);
+ NewArgv++; /* reserve an extra slot for --login */
+ memcpy(NewArgv, argv, argc * sizeof(char *));
+ NewArgv[NewArgc] = NULL;
+ if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) {
+ NewArgv[0] = strdup(runas_pw->pw_shell);
+ if (NewArgv[0] == NULL) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
goto done;
}
- sudoers_gc_add(GC_VECTOR, NewArgv);
- NewArgv++; /* reserve an extra slot for --login */
- memcpy(NewArgv, argv, argc * sizeof(char *));
- NewArgv[NewArgc] = NULL;
- if (ISSET(sudo_mode, MODE_LOGIN_SHELL) && runas_pw != NULL) {
- NewArgv[0] = strdup(runas_pw->pw_shell);
- if (NewArgv[0] == NULL) {
- sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- goto done;
- }
- sudoers_gc_add(GC_PTR, NewArgv[0]);
- }
+ sudoers_gc_add(GC_PTR, NewArgv[0]);
}
/* If given the -P option, set the "preserve_groups" flag. */
@@ -643,14 +637,6 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
goto done;
}
- /* Cleanup sudoers sources */
- TAILQ_FOREACH(nss, snl, entries) {
- nss->close(nss);
- }
- if (def_group_plugin)
- group_plugin_unload();
- init_parser(NULL, false, false);
-
if (ISSET(sudo_mode, (MODE_VALIDATE|MODE_CHECK|MODE_LIST))) {
/* ret already set appropriately */
goto done;
@@ -740,7 +726,7 @@ sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[],
env_editor ? env_editor : def_editor);
goto bad;
}
- sudoers_gc_add(GC_VECTOR, edit_argv);
+ sudoers_gc_add(GC_EDIT_ARGS, edit_argv);
NewArgv = edit_argv;
NewArgc = edit_argc;
@@ -754,6 +740,15 @@ bad:
ret = false;
done:
+ /* Cleanup sudoers sources */
+ TAILQ_FOREACH(nss, snl, entries) {
+ nss->close(nss);
+ }
+ snl = NULL;
+ if (def_group_plugin)
+ group_plugin_unload();
+ init_parser(NULL, false, false);
+
if (ret == -1) {
/* Free stashed copy of the environment. */
(void)env_init(NULL);
@@ -928,10 +923,6 @@ set_cmnd(void)
debug_return_int(NOT_FOUND_ERROR);
}
- /* Default value for cmnd, overridden below. */
- if (user_cmnd == NULL)
- user_cmnd = NewArgv[0];
-
if (ISSET(sudo_mode, MODE_RUN|MODE_EDIT|MODE_CHECK)) {
if (!ISSET(sudo_mode, MODE_EDIT)) {
const char *runchroot = user_runchroot;
@@ -951,16 +942,6 @@ set_cmnd(void)
/* set user_args */
if (NewArgc > 1) {
- char *to, *from, **av;
- size_t size, n;
-
- /* Alloc and build up user_args. */
- for (size = 0, av = NewArgv + 1; *av; av++)
- size += strlen(*av) + 1;
- if (size == 0 || (user_args = malloc(size)) == NULL) {
- sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- debug_return_int(NOT_FOUND_ERROR);
- }
if (ISSET(sudo_mode, MODE_SHELL|MODE_LOGIN_SHELL) &&
ISSET(sudo_mode, MODE_RUN)) {
/*
@@ -968,53 +949,34 @@ set_cmnd(void)
* escapes potential meta chars. We unescape non-spaces
* for sudoers matching and logging purposes.
*/
- for (to = user_args, av = NewArgv + 1; (from = *av); av++) {
- while (*from) {
- if (from[0] == '\\' && from[1] != '\0' &&
- !isspace((unsigned char)from[1])) {
- from++;
- }
- if (size - (to - user_args) < 1) {
- sudo_warnx(U_("internal error, %s overflow"),
- __func__);
- debug_return_int(NOT_FOUND_ERROR);
- }
- *to++ = *from++;
- }
- if (size - (to - user_args) < 1) {
- sudo_warnx(U_("internal error, %s overflow"),
- __func__);
- debug_return_int(NOT_FOUND_ERROR);
- }
- *to++ = ' ';
- }
- *--to = '\0';
+ user_args = strvec_join(NewArgv + 1, ' ', strlcpy_unescape);
} else {
- for (to = user_args, av = NewArgv + 1; *av; av++) {
- n = strlcpy(to, *av, size - (to - user_args));
- if (n >= size - (to - user_args)) {
- sudo_warnx(U_("internal error, %s overflow"), __func__);
- debug_return_int(NOT_FOUND_ERROR);
- }
- to += n;
- *to++ = ' ';
- }
- *--to = '\0';
+ user_args = strvec_join(NewArgv + 1, ' ', NULL);
}
+ if (user_args == NULL)
+ debug_return_int(NOT_FOUND_ERROR);
}
}
-
- if ((user_base = strrchr(user_cmnd, '/')) != NULL)
- user_base++;
- else
- user_base = user_cmnd;
+ if (user_cmnd == NULL) {
+ user_cmnd = strdup(NewArgv[0]);
+ if (user_cmnd == NULL)
+ debug_return_int(NOT_FOUND_ERROR);
+ }
+ user_base = sudo_basename(user_cmnd);
/* Convert "sudo sudoedit" -> "sudoedit" */
if (ISSET(sudo_mode, MODE_RUN) && strcmp(user_base, "sudoedit") == 0) {
+ char *new_cmnd;
+
CLR(sudo_mode, MODE_RUN);
SET(sudo_mode, MODE_EDIT);
sudo_warnx("%s", U_("sudoedit doesn't need to be run via sudo"));
- user_base = user_cmnd = "sudoedit";
+ if ((new_cmnd = strdup("sudoedit")) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_int(NOT_FOUND_ERROR);
+ }
+ free(user_cmnd);
+ user_base = user_cmnd = new_cmnd;
}
TAILQ_FOREACH(nss, snl, entries) {
@@ -1184,8 +1146,9 @@ set_loginclass(struct passwd *pw)
/*
* Look up the fully qualified domain name of host.
* Use AI_FQDN if available since "canonical" is not always the same as fqdn.
- * Returns true on success, setting longp and shortp.
- * Returns false on failure, longp and shortp are unchanged.
+ * Returns 0 on success, setting longp and shortp.
+ * Returns non-zero on failure, longp and shortp are unchanged.
+ * See gai_strerror() for the list of error return codes.
*/
static int
resolve_host(const char *host, char **longp, char **shortp)
@@ -1648,54 +1611,18 @@ sudoers_cleanup(void)
TAILQ_FOREACH(nss, snl, entries) {
nss->close(nss);
}
+ snl = NULL;
+ init_parser(NULL, false, false);
}
if (def_group_plugin)
group_plugin_unload();
+ sudo_user_free();
sudo_freepwcache();
sudo_freegrcache();
debug_return;
}
-#ifdef USE_ADMIN_FLAG
-static int
-create_admin_success_flag(void)
-{
- char flagfile[PATH_MAX];
- int len, ret = -1;
- debug_decl(create_admin_success_flag, SUDOERS_DEBUG_PLUGIN);
-
- /* Check whether the user is in the sudo or admin group. */
- if (!user_in_group(sudo_user.pw, "sudo") &&
- !user_in_group(sudo_user.pw, "admin"))
- debug_return_int(true);
-
- /* Build path to flag file. */
- len = snprintf(flagfile, sizeof(flagfile), "%s/.sudo_as_admin_successful",
- user_dir);
- if (len < 0 || len >= ssizeof(flagfile))
- debug_return_int(false);
-
- /* Create admin flag file if it doesn't already exist. */
- if (set_perms(PERM_USER)) {
- int fd = open(flagfile, O_CREAT|O_WRONLY|O_NONBLOCK|O_EXCL, 0644);
- ret = fd != -1 || errno == EEXIST;
- if (fd != -1)
- close(fd);
- if (!restore_perms())
- ret = -1;
- }
- debug_return_int(ret);
-}
-#else /* !USE_ADMIN_FLAG */
-static int
-create_admin_success_flag(void)
-{
- /* STUB */
- return true;
-}
-#endif /* USE_ADMIN_FLAG */
-
static bool
tty_present(void)
{
@@ -1709,3 +1636,52 @@ tty_present(void)
}
debug_return_bool(true);
}
+
+/*
+ * Free memory allocated for struct sudo_user.
+ */
+void
+sudo_user_free(void)
+{
+ debug_decl(sudo_user_free, SUDOERS_DEBUG_PLUGIN);
+
+ /* Free remaining references to password and group entries. */
+ if (sudo_user.pw != NULL)
+ sudo_pw_delref(sudo_user.pw);
+ if (runas_pw != NULL)
+ sudo_pw_delref(runas_pw);
+ if (runas_gr != NULL)
+ sudo_gr_delref(runas_gr);
+ if (user_gid_list != NULL)
+ sudo_gidlist_delref(user_gid_list);
+
+ /* Free dynamic contents of sudo_user. */
+ free(user_cwd);
+ free(user_name);
+ free(user_gids);
+ if (user_ttypath != NULL)
+ free(user_ttypath);
+ else
+ free(user_tty);
+ if (user_shost != user_host)
+ free(user_shost);
+ free(user_host);
+ if (user_srunhost != user_runhost)
+ free(user_srunhost);
+ free(user_runhost);
+ free(user_cmnd);
+ free(user_args);
+ free(safe_cmnd);
+ free(user_stat);
+#ifdef HAVE_SELINUX
+ free(user_role);
+ free(user_type);
+#endif
+#ifdef HAVE_PRIV_SET
+ free(runas_privs);
+ free(runas_limitprivs);
+#endif
+ memset(&sudo_user, 0, sizeof(sudo_user));
+
+ debug_return;
+}
diff --git a/plugins/sudoers/sudoers.h b/plugins/sudoers/sudoers.h
index bece1ebad..a0184cf6b 100644
--- a/plugins/sudoers/sudoers.h
+++ b/plugins/sudoers/sudoers.h
@@ -314,6 +314,7 @@ extern bool sudoers_strict;
/* toke.l */
YY_DECL;
+void sudoersrestart(FILE *);
extern FILE *sudoersin;
extern const char *sudoers_file;
extern char *sudoers;
@@ -340,6 +341,7 @@ sudo_dso_public void sudo_gr_addref(struct group *);
sudo_dso_public void sudo_gr_delref(struct group *);
bool user_in_group(const struct passwd *, const char *);
struct group *sudo_fakegrnam(const char *);
+struct group *sudo_mkgrent(const char *group, gid_t gid, ...);
struct gid_list *sudo_get_gidlist(const struct passwd *pw, unsigned int type);
struct group_list *sudo_get_grlist(const struct passwd *pw);
struct passwd *sudo_fakepwnam(const char *, gid_t);
@@ -389,6 +391,9 @@ bool validate_env_vars(char * const envp[]);
int sudo_setenv(const char *var, const char *val, int overwrite);
int sudo_unsetenv(const char *var);
char *sudo_getenv(const char *name);
+char *sudo_getenv_nodebug(const char *name);
+int sudo_putenv_nodebug(char *str, bool dupcheck, bool overwrite);
+int sudo_unsetenv_nodebug(const char *var);
int sudoers_hook_getenv(const char *name, char **value, void *closure);
int sudoers_hook_putenv(char *string, void *closure);
int sudoers_hook_setenv(const char *name, const char *value, int overwrite, void *closure);
@@ -404,6 +409,7 @@ int set_cmnd_path(const char *runchroot);
int sudoers_init(void *info, char * const envp[]);
int sudoers_policy_main(int argc, char * const argv[], int pwflag, char *env_add[], bool verbose, void *closure);
void sudoers_cleanup(void);
+void sudo_user_free(void);
extern struct sudo_user sudo_user;
extern struct passwd *list_pw;
extern bool force_umask;
@@ -443,11 +449,13 @@ bool expand_tilde(char **path, const char *user);
enum sudoers_gc_types {
GC_UNKNOWN,
GC_VECTOR,
+ GC_EDIT_ARGS,
GC_PTR
};
bool sudoers_gc_add(enum sudoers_gc_types type, void *ptr);
bool sudoers_gc_remove(enum sudoers_gc_types type, void *ptr);
void sudoers_gc_init(void);
+void sudoers_gc_run(void);
/* rcstr.c */
char *rcstr_dup(const char *src);
@@ -455,4 +463,10 @@ char *rcstr_alloc(size_t len);
char *rcstr_addref(const char *s);
void rcstr_delref(const char *s);
+/* strlcpy_unesc.c */
+size_t strlcpy_unescape(char *dst, const char *src, size_t size);
+
+/* strvec_join.c */
+char *strvec_join(char *const argv[], char sep, size_t (*cpy)(char *, const char *, size_t));
+
#endif /* SUDOERS_SUDOERS_H */
diff --git a/plugins/sudoers/sudoers_hooks.c b/plugins/sudoers/sudoers_hooks.c
new file mode 100644
index 000000000..d0610e0e1
--- /dev/null
+++ b/plugins/sudoers/sudoers_hooks.c
@@ -0,0 +1,155 @@
+/*
+ * SPDX-License-Identifier: ISC
+ *
+ * Copyright (c) 2000-2005, 2007-2019
+ * Todd C. Miller <Todd.Miller@sudo.ws>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Sponsored in part by the Defense Advanced Research Projects
+ * Agency (DARPA) and Air Force Research Laboratory, Air Force
+ * Materiel Command, USAF, under agreement number F39502-99-1-0512.
+ */
+
+/*
+ * This is an open source non-commercial project. Dear PVS-Studio, please check it.
+ * PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com
+ */
+
+#include <config.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+
+#include "sudoers.h"
+
+/*
+ * Similar to setenv(3) but operates on a private copy of the environment.
+ * Does not include warnings or debugging to avoid recursive calls.
+ */
+static int
+sudo_setenv_nodebug(const char *var, const char *val, int overwrite)
+{
+ char *ep, *estring = NULL;
+ const char *cp;
+ size_t esize;
+ int ret = -1;
+
+ if (var == NULL || *var == '\0') {
+ errno = EINVAL;
+ goto done;
+ }
+
+ /*
+ * POSIX says a var name with '=' is an error but BSD
+ * just ignores the '=' and anything after it.
+ */
+ for (cp = var; *cp && *cp != '='; cp++)
+ continue;
+ esize = (size_t)(cp - var) + 2;
+ if (val) {
+ esize += strlen(val); /* glibc treats a NULL val as "" */
+ }
+
+ /* Allocate and fill in estring. */
+ if ((estring = ep = malloc(esize)) == NULL)
+ goto done;
+ for (cp = var; *cp && *cp != '='; cp++)
+ *ep++ = *cp;
+ *ep++ = '=';
+ if (val) {
+ for (cp = val; *cp; cp++)
+ *ep++ = *cp;
+ }
+ *ep = '\0';
+
+ ret = sudo_putenv_nodebug(estring, true, overwrite);
+done:
+ if (ret == -1)
+ free(estring);
+ else
+ sudoers_gc_add(GC_PTR, estring);
+ return ret;
+}
+
+int
+sudoers_hook_getenv(const char *name, char **value, void *closure)
+{
+ static bool in_progress = false; /* avoid recursion */
+
+ if (in_progress || env_get() == NULL)
+ return SUDO_HOOK_RET_NEXT;
+
+ in_progress = true;
+
+ /* Hack to make GNU gettext() find the sudoers locale when needed. */
+ if (*name == 'L' && sudoers_getlocale() == SUDOERS_LOCALE_SUDOERS) {
+ if (strcmp(name, "LANGUAGE") == 0 || strcmp(name, "LANG") == 0) {
+ *value = NULL;
+ goto done;
+ }
+ if (strcmp(name, "LC_ALL") == 0 || strcmp(name, "LC_MESSAGES") == 0) {
+ *value = def_sudoers_locale;
+ goto done;
+ }
+ }
+
+ *value = sudo_getenv_nodebug(name);
+done:
+ in_progress = false;
+ return SUDO_HOOK_RET_STOP;
+}
+
+int
+sudoers_hook_putenv(char *string, void *closure)
+{
+ static bool in_progress = false; /* avoid recursion */
+
+ if (in_progress || env_get() == NULL)
+ return SUDO_HOOK_RET_NEXT;
+
+ in_progress = true;
+ sudo_putenv_nodebug(string, true, true);
+ in_progress = false;
+ return SUDO_HOOK_RET_STOP;
+}
+
+int
+sudoers_hook_setenv(const char *name, const char *value, int overwrite, void *closure)
+{
+ static bool in_progress = false; /* avoid recursion */
+
+ if (in_progress || env_get() == NULL)
+ return SUDO_HOOK_RET_NEXT;
+
+ in_progress = true;
+ sudo_setenv_nodebug(name, value, overwrite);
+ in_progress = false;
+ return SUDO_HOOK_RET_STOP;
+}
+
+int
+sudoers_hook_unsetenv(const char *name, void *closure)
+{
+ static bool in_progress = false; /* avoid recursion */
+
+ if (in_progress || env_get() == NULL)
+ return SUDO_HOOK_RET_NEXT;
+
+ in_progress = true;
+ sudo_unsetenv_nodebug(name);
+ in_progress = false;
+ return SUDO_HOOK_RET_STOP;
+}
diff --git a/plugins/sudoers/testsudoers.c b/plugins/sudoers/testsudoers.c
index 1217da7f4..a5342edb8 100644
--- a/plugins/sudoers/testsudoers.c
+++ b/plugins/sudoers/testsudoers.c
@@ -209,10 +209,7 @@ main(int argc, char *argv[])
} else {
user_name = *argv++;
user_cmnd = *argv++;
- if ((p = strrchr(user_cmnd, '/')) != NULL)
- user_base = p + 1;
- else
- user_base = user_cmnd;
+ user_base = sudo_basename(user_cmnd);
argc -= 2;
}
if ((sudo_user.pw = sudo_getpwnam(user_name)) == NULL)
@@ -447,12 +444,8 @@ open_sudoers(const char *file, bool doedit, bool *keepopen)
const char *base;
debug_decl(open_sudoers, SUDOERS_DEBUG_UTIL);
- base = strrchr(file, '/');
- if (base != NULL)
- base++;
- else
- base = file;
-
+ /* Report errors using the basename for consistent test output. */
+ base = sudo_basename(file);
switch (sudo_secure_file(file, sudoers_uid, sudoers_gid, &sb)) {
case SUDO_PATH_SECURE:
fp = fopen(file, "r");
@@ -509,7 +502,8 @@ init_eventlog_config(void)
int
set_cmnd_path(const char *runchroot)
{
- return FOUND;
+ /* Cannot return FOUND without also setting user_cmnd to a new value. */
+ return NOT_FOUND;
}
static bool
diff --git a/plugins/sudoers/timestamp.c b/plugins/sudoers/timestamp.c
index dfc9bdfc5..e7784d168 100644
--- a/plugins/sudoers/timestamp.c
+++ b/plugins/sudoers/timestamp.c
@@ -1082,3 +1082,51 @@ set_lectured(void)
done:
debug_return_int(ret);
}
+
+#ifdef _PATH_SUDO_ADMIN_FLAG
+int
+create_admin_success_flag(void)
+{
+ char *flagfile;
+ int ret = -1;
+ debug_decl(create_admin_success_flag, SUDOERS_DEBUG_AUTH);
+
+ /* Is the admin flag file even enabled? */
+ if (!def_admin_flag)
+ debug_return_int(true);
+
+ /* Check whether the user is in the sudo or admin group. */
+ if (!user_in_group(sudo_user.pw, "sudo") &&
+ !user_in_group(sudo_user.pw, "admin"))
+ debug_return_int(true);
+
+ /* Build path to flag file. */
+ if ((flagfile = strdup(def_admin_flag)) == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ debug_return_int(-1);
+ }
+ if (!expand_tilde(&flagfile, user_name)) {
+ free(flagfile);
+ debug_return_int(false);
+ }
+
+ /* Create admin flag file if it doesn't already exist. */
+ if (set_perms(PERM_USER)) {
+ int fd = open(flagfile, O_CREAT|O_WRONLY|O_NONBLOCK|O_EXCL, 0644);
+ ret = fd != -1 || errno == EEXIST;
+ if (fd != -1)
+ close(fd);
+ if (!restore_perms())
+ ret = -1;
+ }
+ free(flagfile);
+ debug_return_int(ret);
+}
+#else /* !_PATH_SUDO_ADMIN_FLAG */
+int
+create_admin_success_flag(void)
+{
+ /* STUB */
+ return true;
+}
+#endif /* _PATH_SUDO_ADMIN_FLAG */
diff --git a/plugins/sudoers/toke.c b/plugins/sudoers/toke.c
index 366f805c0..b0cefe64a 100644
--- a/plugins/sudoers/toke.c
+++ b/plugins/sudoers/toke.c
@@ -2764,6 +2764,7 @@ char *sudoerstext;
int sudolineno; /* current sudoers line number. */
char *sudoers; /* sudoers file being parsed. */
+char *sudoers_errstr; /* description of last error from lexer. */
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
/* Default sudoers path, mode and owner (may be set via sudo.conf) */
@@ -2779,6 +2780,10 @@ static int digest_type = -1;
static bool pop_include(void);
static yy_size_t sudoers_input(char *buf, yy_size_t max_size);
+#ifndef TRACELEXER
+static struct sudo_lbuf trace_lbuf;
+#endif
+
int (*trace_print)(const char *msg) = sudoers_trace_print;
#define ECHO ignore_result(fwrite(sudoerstext, sudoersleng, 1, sudoersout))
@@ -2804,7 +2809,7 @@ int (*trace_print)(const char *msg) = sudoers_trace_print;
-#line 2802 "toke.c"
+#line 2807 "toke.c"
#define INITIAL 0
#define GOTDEFS 1
@@ -3024,9 +3029,9 @@ YY_DECL
}
{
-#line 117 "toke.l"
+#line 122 "toke.l"
-#line 3024 "toke.c"
+#line 3029 "toke.c"
while ( 1 ) /* loops until end-of-file is reached */
{
@@ -3086,7 +3091,7 @@ do_action: /* This label is used only to access EOF actions. */
case 1:
YY_RULE_SETUP
-#line 118 "toke.l"
+#line 123 "toke.l"
{
LEXTRACE(", ");
return ',';
@@ -3094,12 +3099,12 @@ YY_RULE_SETUP
YY_BREAK
case 2:
YY_RULE_SETUP
-#line 123 "toke.l"
+#line 128 "toke.l"
BEGIN STARTDEFS;
YY_BREAK
case 3:
YY_RULE_SETUP
-#line 125 "toke.l"
+#line 130 "toke.l"
{
BEGIN INDEFS;
LEXTRACE("DEFVAR ");
@@ -3111,7 +3116,7 @@ YY_RULE_SETUP
case 4:
YY_RULE_SETUP
-#line 134 "toke.l"
+#line 139 "toke.l"
{
BEGIN STARTDEFS;
LEXTRACE(", ");
@@ -3120,7 +3125,7 @@ YY_RULE_SETUP
YY_BREAK
case 5:
YY_RULE_SETUP
-#line 140 "toke.l"
+#line 145 "toke.l"
{
LEXTRACE("= ");
return '=';
@@ -3128,7 +3133,7 @@ YY_RULE_SETUP
YY_BREAK
case 6:
YY_RULE_SETUP
-#line 145 "toke.l"
+#line 150 "toke.l"
{
LEXTRACE("+= ");
return '+';
@@ -3136,7 +3141,7 @@ YY_RULE_SETUP
YY_BREAK
case 7:
YY_RULE_SETUP
-#line 150 "toke.l"
+#line 155 "toke.l"
{
LEXTRACE("-= ");
return '-';
@@ -3144,7 +3149,7 @@ YY_RULE_SETUP
YY_BREAK
case 8:
YY_RULE_SETUP
-#line 155 "toke.l"
+#line 160 "toke.l"
{
LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL;
@@ -3154,7 +3159,7 @@ YY_RULE_SETUP
YY_BREAK
case 9:
YY_RULE_SETUP
-#line 162 "toke.l"
+#line 167 "toke.l"
{
LEXTRACE("WORD(2) ");
if (!fill(sudoerstext, sudoersleng))
@@ -3167,7 +3172,7 @@ YY_RULE_SETUP
case 10:
/* rule 10 can match eol */
YY_RULE_SETUP
-#line 171 "toke.l"
+#line 176 "toke.l"
{
/* Line continuation char followed by newline. */
sudolineno++;
@@ -3176,13 +3181,13 @@ YY_RULE_SETUP
YY_BREAK
case 11:
YY_RULE_SETUP
-#line 177 "toke.l"
+#line 182 "toke.l"
{
LEXTRACE("ENDSTR ");
BEGIN prev_state;
if (sudoerslval.string == NULL) {
- sudoerserror(N_("empty string"));
+ sudoers_errstr = N_("empty string");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3192,7 +3197,9 @@ YY_RULE_SETUP
if (sudoerslval.string[1] == '\0' ||
(sudoerslval.string[1] == ':' &&
sudoerslval.string[2] == '\0')) {
- sudoerserror(N_("empty group"));
+ parser_leak_remove(LEAK_PTR, sudoerslval.string);
+ free(sudoerslval.string);
+ sudoers_errstr = N_("empty group");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3200,7 +3207,9 @@ YY_RULE_SETUP
return USERGROUP;
case '+':
if (sudoerslval.string[1] == '\0') {
- sudoerserror(N_("empty netgroup"));
+ parser_leak_remove(LEAK_PTR, sudoerslval.string);
+ free(sudoerslval.string);
+ sudoers_errstr = N_("empty netgroup");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3214,7 +3223,7 @@ YY_RULE_SETUP
YY_BREAK
case 12:
YY_RULE_SETUP
-#line 212 "toke.l"
+#line 221 "toke.l"
{
LEXTRACE("BACKSLASH ");
if (!append(sudoerstext, sudoersleng))
@@ -3223,7 +3232,7 @@ YY_RULE_SETUP
YY_BREAK
case 13:
YY_RULE_SETUP
-#line 218 "toke.l"
+#line 227 "toke.l"
{
LEXTRACE("STRBODY ");
if (!append(sudoerstext, sudoersleng))
@@ -3234,7 +3243,7 @@ YY_RULE_SETUP
case 14:
YY_RULE_SETUP
-#line 226 "toke.l"
+#line 235 "toke.l"
{
/* quoted fnmatch glob char, pass verbatim */
LEXTRACE("QUOTEDCHAR ");
@@ -3245,7 +3254,7 @@ YY_RULE_SETUP
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 234 "toke.l"
+#line 243 "toke.l"
{
/* quoted sudoers special char, strip backslash */
LEXTRACE("QUOTEDCHAR ");
@@ -3257,7 +3266,7 @@ YY_RULE_SETUP
case 16:
/* rule 16 can match eol */
YY_RULE_SETUP
-#line 242 "toke.l"
+#line 251 "toke.l"
{
BEGIN INITIAL;
sudoersless(0);
@@ -3267,7 +3276,7 @@ YY_RULE_SETUP
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 249 "toke.l"
+#line 258 "toke.l"
{
LEXTRACE("ARG ");
if (!fill_args(sudoerstext, sudoersleng, sawspace))
@@ -3278,7 +3287,7 @@ YY_RULE_SETUP
case 18:
YY_RULE_SETUP
-#line 257 "toke.l"
+#line 266 "toke.l"
{
/* Only return DIGEST if the length is correct. */
yy_size_t digest_len =
@@ -3296,7 +3305,7 @@ YY_RULE_SETUP
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 272 "toke.l"
+#line 281 "toke.l"
{
/* Only return DIGEST if the length is correct. */
yy_size_t len, digest_len =
@@ -3321,10 +3330,10 @@ YY_RULE_SETUP
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 294 "toke.l"
+#line 303 "toke.l"
{
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3336,10 +3345,10 @@ YY_RULE_SETUP
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 306 "toke.l"
+#line 315 "toke.l"
{
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3352,10 +3361,10 @@ YY_RULE_SETUP
case 22:
/* rule 22 can match eol */
YY_RULE_SETUP
-#line 318 "toke.l"
+#line 327 "toke.l"
{
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3372,10 +3381,10 @@ YY_RULE_SETUP
case 23:
/* rule 23 can match eol */
YY_RULE_SETUP
-#line 334 "toke.l"
+#line 343 "toke.l"
{
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3391,13 +3400,13 @@ YY_RULE_SETUP
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 350 "toke.l"
+#line 359 "toke.l"
{
char deftype;
int n;
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3435,12 +3444,12 @@ YY_RULE_SETUP
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 391 "toke.l"
+#line 400 "toke.l"
{
int n;
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3465,7 +3474,7 @@ YY_RULE_SETUP
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 418 "toke.l"
+#line 427 "toke.l"
{
/* cmnd does not require passwd for this user */
LEXTRACE("NOPASSWD ");
@@ -3474,7 +3483,7 @@ YY_RULE_SETUP
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 424 "toke.l"
+#line 433 "toke.l"
{
/* cmnd requires passwd for this user */
LEXTRACE("PASSWD ");
@@ -3483,7 +3492,7 @@ YY_RULE_SETUP
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 430 "toke.l"
+#line 439 "toke.l"
{
LEXTRACE("NOEXEC ");
return NOEXEC;
@@ -3491,7 +3500,7 @@ YY_RULE_SETUP
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 435 "toke.l"
+#line 444 "toke.l"
{
LEXTRACE("EXEC ");
return EXEC;
@@ -3499,7 +3508,7 @@ YY_RULE_SETUP
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 440 "toke.l"
+#line 449 "toke.l"
{
LEXTRACE("SETENV ");
return SETENV;
@@ -3507,7 +3516,7 @@ YY_RULE_SETUP
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 445 "toke.l"
+#line 454 "toke.l"
{
LEXTRACE("NOSETENV ");
return NOSETENV;
@@ -3515,7 +3524,7 @@ YY_RULE_SETUP
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 450 "toke.l"
+#line 459 "toke.l"
{
LEXTRACE("LOG_OUTPUT ");
return LOG_OUTPUT;
@@ -3523,7 +3532,7 @@ YY_RULE_SETUP
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 455 "toke.l"
+#line 464 "toke.l"
{
LEXTRACE("NOLOG_OUTPUT ");
return NOLOG_OUTPUT;
@@ -3531,7 +3540,7 @@ YY_RULE_SETUP
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 460 "toke.l"
+#line 469 "toke.l"
{
LEXTRACE("LOG_INPUT ");
return LOG_INPUT;
@@ -3539,7 +3548,7 @@ YY_RULE_SETUP
YY_BREAK
case 35:
YY_RULE_SETUP
-#line 465 "toke.l"
+#line 474 "toke.l"
{
LEXTRACE("NOLOG_INPUT ");
return NOLOG_INPUT;
@@ -3547,7 +3556,7 @@ YY_RULE_SETUP
YY_BREAK
case 36:
YY_RULE_SETUP
-#line 470 "toke.l"
+#line 479 "toke.l"
{
LEXTRACE("MAIL ");
return MAIL;
@@ -3555,7 +3564,7 @@ YY_RULE_SETUP
YY_BREAK
case 37:
YY_RULE_SETUP
-#line 475 "toke.l"
+#line 484 "toke.l"
{
LEXTRACE("NOMAIL ");
return NOMAIL;
@@ -3563,7 +3572,7 @@ YY_RULE_SETUP
YY_BREAK
case 38:
YY_RULE_SETUP
-#line 480 "toke.l"
+#line 489 "toke.l"
{
LEXTRACE("FOLLOW ");
return FOLLOWLNK;
@@ -3571,7 +3580,7 @@ YY_RULE_SETUP
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 485 "toke.l"
+#line 494 "toke.l"
{
LEXTRACE("NOFOLLOW ");
return NOFOLLOWLNK;
@@ -3579,19 +3588,19 @@ YY_RULE_SETUP
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 490 "toke.l"
+#line 499 "toke.l"
{
if (sudoerstext[0] == '+')
- sudoerserror(N_("empty netgroup"));
+ sudoers_errstr = N_("empty netgroup");
else
- sudoerserror(N_("empty group"));
+ sudoers_errstr = N_("empty group");
LEXTRACE("ERROR ");
return ERROR;
}
YY_BREAK
case 41:
YY_RULE_SETUP
-#line 499 "toke.l"
+#line 508 "toke.l"
{
/* netgroup */
if (!fill(sudoerstext, sudoersleng))
@@ -3602,7 +3611,7 @@ YY_RULE_SETUP
YY_BREAK
case 42:
YY_RULE_SETUP
-#line 507 "toke.l"
+#line 516 "toke.l"
{
/* group */
if (!fill(sudoerstext, sudoersleng))
@@ -3613,7 +3622,7 @@ YY_RULE_SETUP
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 515 "toke.l"
+#line 524 "toke.l"
{
if (!fill(sudoerstext, sudoersleng))
yyterminate();
@@ -3623,7 +3632,7 @@ YY_RULE_SETUP
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 522 "toke.l"
+#line 531 "toke.l"
{
if (!fill(sudoerstext, sudoersleng))
yyterminate();
@@ -3633,10 +3642,10 @@ YY_RULE_SETUP
YY_BREAK
case 45:
YY_RULE_SETUP
-#line 529 "toke.l"
+#line 538 "toke.l"
{
if (!ipv6_valid(sudoerstext)) {
- sudoerserror(N_("invalid IPv6 address"));
+ sudoers_errstr = N_("invalid IPv6 address");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3648,10 +3657,10 @@ YY_RULE_SETUP
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 541 "toke.l"
+#line 550 "toke.l"
{
if (!ipv6_valid(sudoerstext)) {
- sudoerserror(N_("invalid IPv6 address"));
+ sudoers_errstr = N_("invalid IPv6 address");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3663,7 +3672,7 @@ YY_RULE_SETUP
YY_BREAK
case 47:
YY_RULE_SETUP
-#line 553 "toke.l"
+#line 562 "toke.l"
{
LEXTRACE("ALL ");
return ALL;
@@ -3672,7 +3681,7 @@ YY_RULE_SETUP
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 559 "toke.l"
+#line 568 "toke.l"
{
LEXTRACE("CMND_TIMEOUT ");
return CMND_TIMEOUT;
@@ -3680,7 +3689,7 @@ YY_RULE_SETUP
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 564 "toke.l"
+#line 573 "toke.l"
{
LEXTRACE("NOTBEFORE ");
return NOTBEFORE;
@@ -3688,7 +3697,7 @@ YY_RULE_SETUP
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 569 "toke.l"
+#line 578 "toke.l"
{
LEXTRACE("NOTAFTER ");
return NOTAFTER;
@@ -3696,7 +3705,7 @@ YY_RULE_SETUP
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 574 "toke.l"
+#line 583 "toke.l"
{
LEXTRACE("CWD ");
prev_state = YY_START;
@@ -3706,7 +3715,7 @@ YY_RULE_SETUP
YY_BREAK
case 52:
YY_RULE_SETUP
-#line 581 "toke.l"
+#line 590 "toke.l"
{
LEXTRACE("CHROOT ");
prev_state = YY_START;
@@ -3716,7 +3725,7 @@ YY_RULE_SETUP
YY_BREAK
case 53:
YY_RULE_SETUP
-#line 588 "toke.l"
+#line 597 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("ROLE ");
@@ -3728,7 +3737,7 @@ YY_RULE_SETUP
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 597 "toke.l"
+#line 606 "toke.l"
{
#ifdef HAVE_SELINUX
LEXTRACE("TYPE ");
@@ -3740,7 +3749,7 @@ YY_RULE_SETUP
YY_BREAK
case 55:
YY_RULE_SETUP
-#line 605 "toke.l"
+#line 614 "toke.l"
{
#ifdef HAVE_PRIV_SET
LEXTRACE("PRIVS ");
@@ -3752,7 +3761,7 @@ YY_RULE_SETUP
YY_BREAK
case 56:
YY_RULE_SETUP
-#line 614 "toke.l"
+#line 623 "toke.l"
{
#ifdef HAVE_PRIV_SET
LEXTRACE("LIMITPRIVS ");
@@ -3764,7 +3773,7 @@ YY_RULE_SETUP
YY_BREAK
case 57:
YY_RULE_SETUP
-#line 623 "toke.l"
+#line 632 "toke.l"
{
got_alias:
if (!fill(sudoerstext, sudoersleng))
@@ -3775,7 +3784,7 @@ YY_RULE_SETUP
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 631 "toke.l"
+#line 640 "toke.l"
{
/* XXX - no way to specify digest for command */
/* no command args allowed for Defaults!/path */
@@ -3787,7 +3796,7 @@ YY_RULE_SETUP
YY_BREAK
case 59:
YY_RULE_SETUP
-#line 640 "toke.l"
+#line 649 "toke.l"
{
digest_type = SUDO_DIGEST_SHA224;
BEGIN WANTDIGEST;
@@ -3797,7 +3806,7 @@ YY_RULE_SETUP
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 647 "toke.l"
+#line 656 "toke.l"
{
digest_type = SUDO_DIGEST_SHA256;
BEGIN WANTDIGEST;
@@ -3807,7 +3816,7 @@ YY_RULE_SETUP
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 654 "toke.l"
+#line 663 "toke.l"
{
digest_type = SUDO_DIGEST_SHA384;
BEGIN WANTDIGEST;
@@ -3817,7 +3826,7 @@ YY_RULE_SETUP
YY_BREAK
case 62:
YY_RULE_SETUP
-#line 661 "toke.l"
+#line 670 "toke.l"
{
digest_type = SUDO_DIGEST_SHA512;
BEGIN WANTDIGEST;
@@ -3827,7 +3836,7 @@ YY_RULE_SETUP
YY_BREAK
case 63:
YY_RULE_SETUP
-#line 668 "toke.l"
+#line 677 "toke.l"
{
BEGIN GOTCMND;
LEXTRACE("COMMAND ");
@@ -3837,7 +3846,7 @@ YY_RULE_SETUP
YY_BREAK
case 64:
YY_RULE_SETUP
-#line 675 "toke.l"
+#line 684 "toke.l"
{
BEGIN prev_state;
if (!fill(sudoerstext, sudoersleng))
@@ -3848,7 +3857,7 @@ YY_RULE_SETUP
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 683 "toke.l"
+#line 692 "toke.l"
{
/* directories can't have args... */
if (sudoerstext[sudoersleng - 1] == '/') {
@@ -3865,7 +3874,7 @@ YY_RULE_SETUP
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 697 "toke.l"
+#line 706 "toke.l"
{
LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL;
@@ -3875,7 +3884,7 @@ YY_RULE_SETUP
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 704 "toke.l"
+#line 713 "toke.l"
{
/* a word */
if (!fill(sudoerstext, sudoersleng))
@@ -3887,7 +3896,7 @@ YY_RULE_SETUP
case 68:
YY_RULE_SETUP
-#line 713 "toke.l"
+#line 722 "toke.l"
{
/* include file/directory */
if (!fill(sudoerstext, sudoersleng))
@@ -3899,7 +3908,7 @@ YY_RULE_SETUP
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 722 "toke.l"
+#line 731 "toke.l"
{
LEXTRACE("BEGINSTR ");
sudoerslval.string = NULL;
@@ -3910,7 +3919,7 @@ YY_RULE_SETUP
case 70:
YY_RULE_SETUP
-#line 730 "toke.l"
+#line 739 "toke.l"
{
LEXTRACE("( ");
return '(';
@@ -3918,7 +3927,7 @@ YY_RULE_SETUP
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 735 "toke.l"
+#line 744 "toke.l"
{
LEXTRACE(") ");
return ')';
@@ -3926,7 +3935,7 @@ YY_RULE_SETUP
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 740 "toke.l"
+#line 749 "toke.l"
{
LEXTRACE(", ");
return ',';
@@ -3934,7 +3943,7 @@ YY_RULE_SETUP
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 745 "toke.l"
+#line 754 "toke.l"
{
LEXTRACE("= ");
return '=';
@@ -3942,7 +3951,7 @@ YY_RULE_SETUP
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 750 "toke.l"
+#line 759 "toke.l"
{
LEXTRACE(": ");
return ':';
@@ -3950,7 +3959,7 @@ YY_RULE_SETUP
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 755 "toke.l"
+#line 764 "toke.l"
{
if (sudoersleng & 1) {
LEXTRACE("!");
@@ -3961,13 +3970,16 @@ YY_RULE_SETUP
case 76:
/* rule 76 can match eol */
YY_RULE_SETUP
-#line 762 "toke.l"
+#line 771 "toke.l"
{
if (YY_START == INSTR) {
+ /* throw away old string */
+ parser_leak_remove(LEAK_PTR, sudoerslval.string);
+ free(sudoerslval.string);
/* re-scan after changing state */
BEGIN INITIAL;
sudoersless(0);
- sudoerserror(N_("unexpected line break in string"));
+ sudoers_errstr = N_("unexpected line break in string");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -3980,7 +3992,7 @@ YY_RULE_SETUP
YY_BREAK
case 77:
YY_RULE_SETUP
-#line 778 "toke.l"
+#line 790 "toke.l"
{ /* throw away space/tabs */
sawspace = true; /* but remember for fill_args */
}
@@ -3988,7 +4000,7 @@ YY_RULE_SETUP
case 78:
/* rule 78 can match eol */
YY_RULE_SETUP
-#line 782 "toke.l"
+#line 794 "toke.l"
{
sawspace = true; /* remember for fill_args */
sudolineno++;
@@ -3998,7 +4010,7 @@ YY_RULE_SETUP
case 79:
/* rule 79 can match eol */
YY_RULE_SETUP
-#line 788 "toke.l"
+#line 800 "toke.l"
{
if (sudoerstext[sudoersleng - 1] == '\n') {
/* comment ending in a newline */
@@ -4006,7 +4018,7 @@ YY_RULE_SETUP
sudolineno++;
continued = false;
} else if (!feof(sudoersin)) {
- sudoerserror(strerror(errno));
+ sudoers_errstr = strerror(errno);
LEXTRACE("ERROR ");
return ERROR;
}
@@ -4016,7 +4028,7 @@ YY_RULE_SETUP
YY_BREAK
case 80:
YY_RULE_SETUP
-#line 803 "toke.l"
+#line 815 "toke.l"
{
LEXTRACE("NOMATCH ");
return NOMATCH;
@@ -4031,7 +4043,7 @@ case YY_STATE_EOF(INSTR):
case YY_STATE_EOF(WANTDIGEST):
case YY_STATE_EOF(GOTINC):
case YY_STATE_EOF(EXPECTPATH):
-#line 808 "toke.l"
+#line 820 "toke.l"
{
if (!pop_include())
yyterminate();
@@ -4039,10 +4051,10 @@ case YY_STATE_EOF(EXPECTPATH):
YY_BREAK
case 81:
YY_RULE_SETUP
-#line 813 "toke.l"
+#line 825 "toke.l"
ECHO;
YY_BREAK
-#line 4040 "toke.c"
+#line 4052 "toke.c"
case YY_END_OF_BUFFER:
{
@@ -5003,7 +5015,7 @@ void sudoersfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 813 "toke.l"
+#line 825 "toke.l"
struct path_list {
@@ -5159,6 +5171,11 @@ init_lexer(void)
struct path_list *pl;
debug_decl(init_lexer, SUDOERS_DEBUG_PARSER);
+#ifndef TRACELEXER
+ free(trace_lbuf.buf);
+ sudo_lbuf_init(&trace_lbuf, NULL, 0, NULL, 0);
+#endif
+
while (idepth) {
idepth--;
while ((pl = SLIST_FIRST(&istack[idepth].more)) != NULL) {
@@ -5183,6 +5200,7 @@ init_lexer(void)
continued = false;
digest_type = -1;
prev_state = INITIAL;
+ BEGIN INITIAL;
debug_return;
}
@@ -5193,26 +5211,29 @@ init_lexer(void)
* Returns a reference-counted string.
*/
static char *
-expand_include(const char *opath, size_t olen)
+expand_include(const char *opath)
{
const char *cp, *ep;
char *path, *pp;
- int dirlen = 0, len;
+ size_t len, olen, dirlen = 0;
size_t shost_len = 0;
bool subst = false;
debug_decl(expand_include, SUDOERS_DEBUG_PARSER);
/* Strip double quotes if present. */
- if (*opath == '"') {
+ olen = strlen(opath);
+ if (olen > 1 && opath[0] == '"' && opath[olen - 1] == '"') {
opath++;
olen -= 2;
}
+ if (olen == 0)
+ debug_return_ptr(NULL);
/* Relative paths are located in the same dir as the sudoers file. */
if (*opath != '/') {
char *dirend = strrchr(sudoers, '/');
if (dirend != NULL)
- dirlen = (int)(dirend - sudoers) + 1;
+ dirlen = (size_t)(dirend - sudoers) + 1;
}
len = olen;
@@ -5270,7 +5291,7 @@ push_include(const char *opath, bool isdir)
FILE *fp;
debug_decl(push_include, SUDOERS_DEBUG_PARSER);
- if ((path = expand_include(opath, strlen(opath))) == NULL)
+ if ((path = expand_include(opath)) == NULL)
debug_return_bool(false);
/* push current state onto stack */
@@ -5278,7 +5299,9 @@ push_include(const char *opath, bool isdir)
struct include_stack *new_istack;
if (idepth > MAX_SUDOERS_DEPTH) {
- sudoerserror(N_("too many levels of includes"));
+ if (sudoers_warnings)
+ sudo_warnx(U_("%s: %s"), path, U_("too many levels of includes"));
+ sudoerserror(NULL);
rcstr_delref(path);
debug_return_bool(false);
}
@@ -5427,53 +5450,70 @@ sudoers_trace_print(const char *msg)
int
sudoers_trace_print(const char *msg)
{
- static bool initialized;
- static struct sudo_lbuf lbuf;
-
- if (!initialized) {
- initialized = true;
- sudo_lbuf_init(&lbuf, NULL, 0, NULL, 0);
- }
-
- sudo_lbuf_append(&lbuf, "%s", msg);
- /* XXX - assumes a final newline */
+ sudo_lbuf_append(&trace_lbuf, "%s", msg);
if (strchr(msg, '\n') != NULL)
{
sudo_debug_printf2(NULL, NULL, 0, SUDOERS_DEBUG_PARSER|SUDO_DEBUG_DEBUG,
- "%s:%d: %s", sudoers, sudolineno, lbuf.buf);
- lbuf.len = 0;
+ "%s:%d: %s", sudoers, sudolineno, trace_lbuf.buf);
+ trace_lbuf.len = 0;
}
return 0;
}
#endif /* TRACELEXER */
+/*
+ * Custom input function that uses getdelim(3) and stores the buffer
+ * where the error functions can access it for better reporting.
+ * On success, buf is guaranteed to end in a newline and not contain
+ * embedded NULs. Calls YY_FATAL_ERROR on error.
+ */
static yy_size_t
sudoers_input(char *buf, yy_size_t max_size)
{
+ char *cp;
size_t avail = sudolinebuf.len - sudolinebuf.off;
/* Refill line buffer if needed. */
if (avail == 0) {
+ /*
+ * Some getdelim(3) implementations write NUL to buf on EOF.
+ * We peek ahead one char to detect EOF and skip the getdelim() call.
+ * This will preserve the original value of the last line read.
+ */
+ int ch = getc(sudoersin);
+ if (ch == EOF)
+ goto sudoers_eof;
+ ungetc(ch, sudoersin);
avail = getdelim(&sudolinebuf.buf, &sudolinebuf.size, '\n', sudoersin);
if (avail == (size_t)-1) {
+sudoers_eof:
/* EOF or error. */
- if (ferror(sudoersin) && errno != EINTR)
- YY_FATAL_ERROR("input in flex scanner failed");
- return 0;
+ if (feof(sudoersin))
+ return 0;
+ YY_FATAL_ERROR("input in flex scanner failed");
+ }
+
+ /* getdelim() can return embedded NULs, truncate if we find one. */
+ cp = memchr(sudolinebuf.buf, '\0', avail);
+ if (cp != NULL) {
+ *cp++ = '\n';
+ *cp = '\0';
+ avail = (size_t)(cp - sudolinebuf.buf);
}
/* Add trailing newline if it is missing. */
if (sudolinebuf.buf[avail - 1] != '\n') {
- if (avail == sudolinebuf.size) {
- char *cp = realloc(sudolinebuf.buf, avail + 1);
+ if (avail + 2 >= sudolinebuf.size) {
+ cp = realloc(sudolinebuf.buf, avail + 2);
if (cp == NULL) {
YY_FATAL_ERROR("unable to allocate memory");
return 0;
}
sudolinebuf.buf = cp;
- sudolinebuf.size++;
+ sudolinebuf.size = avail + 2;
}
sudolinebuf.buf[avail++] = '\n';
+ sudolinebuf.buf[avail] = '\0';
}
sudolinebuf.len = avail;
diff --git a/plugins/sudoers/toke.h b/plugins/sudoers/toke.h
index 476fb9572..16f2c317d 100644
--- a/plugins/sudoers/toke.h
+++ b/plugins/sudoers/toke.h
@@ -27,12 +27,13 @@ struct sudolinebuf {
size_t toke_start; /* starting column of current token */
size_t toke_end; /* ending column of current token */
};
+extern char *sudoers_errstr;
extern struct sudolinebuf sudolinebuf;
bool append(const char *, size_t);
bool fill_args(const char *, size_t, int);
bool fill_cmnd(const char *, size_t);
-bool fill_txt(const char *, size_t, size_t);
+bool fill(const char *, size_t);
bool ipv6_valid(const char *s);
int sudoers_trace_print(const char *);
void sudoerserrorf(const char *, ...) __printf0like(1, 2);
@@ -43,8 +44,6 @@ bool push_include(const char *, bool);
extern int (*trace_print)(const char *msg);
#endif
-#define fill(a, b) fill_txt(a, b, 0)
-
#define LEXTRACE(msg) do { \
if (trace_print != NULL) \
(*trace_print)(msg); \
diff --git a/plugins/sudoers/toke.l b/plugins/sudoers/toke.l
index cf5a7d40f..b8f9a308c 100644
--- a/plugins/sudoers/toke.l
+++ b/plugins/sudoers/toke.l
@@ -55,6 +55,7 @@
int sudolineno; /* current sudoers line number. */
char *sudoers; /* sudoers file being parsed. */
+char *sudoers_errstr; /* description of last error from lexer. */
struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
/* Default sudoers path, mode and owner (may be set via sudo.conf) */
@@ -70,6 +71,10 @@ static int digest_type = -1;
static bool pop_include(void);
static yy_size_t sudoers_input(char *buf, yy_size_t max_size);
+#ifndef TRACELEXER
+static struct sudo_lbuf trace_lbuf;
+#endif
+
int (*trace_print)(const char *msg) = sudoers_trace_print;
#define ECHO ignore_result(fwrite(sudoerstext, sudoersleng, 1, sudoersout))
@@ -179,7 +184,7 @@ DEFVAR [a-z_]+
BEGIN prev_state;
if (sudoerslval.string == NULL) {
- sudoerserror(N_("empty string"));
+ sudoers_errstr = N_("empty string");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -189,7 +194,9 @@ DEFVAR [a-z_]+
if (sudoerslval.string[1] == '\0' ||
(sudoerslval.string[1] == ':' &&
sudoerslval.string[2] == '\0')) {
- sudoerserror(N_("empty group"));
+ parser_leak_remove(LEAK_PTR, sudoerslval.string);
+ free(sudoerslval.string);
+ sudoers_errstr = N_("empty group");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -197,7 +204,9 @@ DEFVAR [a-z_]+
return USERGROUP;
case '+':
if (sudoerslval.string[1] == '\0') {
- sudoerserror(N_("empty netgroup"));
+ parser_leak_remove(LEAK_PTR, sudoerslval.string);
+ free(sudoerslval.string);
+ sudoers_errstr = N_("empty netgroup");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -293,7 +302,7 @@ DEFVAR [a-z_]+
<INITIAL>@include {
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -305,7 +314,7 @@ DEFVAR [a-z_]+
<INITIAL>@includedir {
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -317,7 +326,7 @@ DEFVAR [a-z_]+
<INITIAL>^#include[[:blank:]]+.*(\r\n|\n)? {
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -333,7 +342,7 @@ DEFVAR [a-z_]+
<INITIAL>^#includedir[[:blank:]]+.*(\r\n|\n)? {
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -352,7 +361,7 @@ DEFVAR [a-z_]+
int n;
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -392,7 +401,7 @@ DEFVAR [a-z_]+
int n;
if (continued) {
- sudoerserror(N_("invalid line continuation"));
+ sudoers_errstr = N_("invalid line continuation");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -489,9 +498,9 @@ NOFOLLOW[[:blank:]]*: {
<INITIAL,GOTDEFS>(\+|\%|\%:) {
if (sudoerstext[0] == '+')
- sudoerserror(N_("empty netgroup"));
+ sudoers_errstr = N_("empty netgroup");
else
- sudoerserror(N_("empty group"));
+ sudoers_errstr = N_("empty group");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -528,7 +537,7 @@ NOFOLLOW[[:blank:]]*: {
{IPV6ADDR}(\/{IPV6ADDR})? {
if (!ipv6_valid(sudoerstext)) {
- sudoerserror(N_("invalid IPv6 address"));
+ sudoers_errstr = N_("invalid IPv6 address");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -540,7 +549,7 @@ NOFOLLOW[[:blank:]]*: {
{IPV6ADDR}\/([0-9]|[1-9][0-9]|1[01][0-9]|12[0-8]) {
if (!ipv6_valid(sudoerstext)) {
- sudoerserror(N_("invalid IPv6 address"));
+ sudoers_errstr = N_("invalid IPv6 address");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -761,10 +770,13 @@ sudoedit {
<*>\r?\n {
if (YY_START == INSTR) {
+ /* throw away old string */
+ parser_leak_remove(LEAK_PTR, sudoerslval.string);
+ free(sudoerslval.string);
/* re-scan after changing state */
BEGIN INITIAL;
sudoersless(0);
- sudoerserror(N_("unexpected line break in string"));
+ sudoers_errstr = N_("unexpected line break in string");
LEXTRACE("ERROR ");
return ERROR;
}
@@ -792,7 +804,7 @@ sudoedit {
sudolineno++;
continued = false;
} else if (!feof(sudoersin)) {
- sudoerserror(strerror(errno));
+ sudoers_errstr = strerror(errno);
LEXTRACE("ERROR ");
return ERROR;
}
@@ -964,6 +976,11 @@ init_lexer(void)
struct path_list *pl;
debug_decl(init_lexer, SUDOERS_DEBUG_PARSER);
+#ifndef TRACELEXER
+ free(trace_lbuf.buf);
+ sudo_lbuf_init(&trace_lbuf, NULL, 0, NULL, 0);
+#endif
+
while (idepth) {
idepth--;
while ((pl = SLIST_FIRST(&istack[idepth].more)) != NULL) {
@@ -988,6 +1005,7 @@ init_lexer(void)
continued = false;
digest_type = -1;
prev_state = INITIAL;
+ BEGIN INITIAL;
debug_return;
}
@@ -998,26 +1016,29 @@ init_lexer(void)
* Returns a reference-counted string.
*/
static char *
-expand_include(const char *opath, size_t olen)
+expand_include(const char *opath)
{
const char *cp, *ep;
char *path, *pp;
- int dirlen = 0, len;
+ size_t len, olen, dirlen = 0;
size_t shost_len = 0;
bool subst = false;
debug_decl(expand_include, SUDOERS_DEBUG_PARSER);
/* Strip double quotes if present. */
- if (*opath == '"') {
+ olen = strlen(opath);
+ if (olen > 1 && opath[0] == '"' && opath[olen - 1] == '"') {
opath++;
olen -= 2;
}
+ if (olen == 0)
+ debug_return_ptr(NULL);
/* Relative paths are located in the same dir as the sudoers file. */
if (*opath != '/') {
char *dirend = strrchr(sudoers, '/');
if (dirend != NULL)
- dirlen = (int)(dirend - sudoers) + 1;
+ dirlen = (size_t)(dirend - sudoers) + 1;
}
len = olen;
@@ -1075,7 +1096,7 @@ push_include(const char *opath, bool isdir)
FILE *fp;
debug_decl(push_include, SUDOERS_DEBUG_PARSER);
- if ((path = expand_include(opath, strlen(opath))) == NULL)
+ if ((path = expand_include(opath)) == NULL)
debug_return_bool(false);
/* push current state onto stack */
@@ -1083,7 +1104,9 @@ push_include(const char *opath, bool isdir)
struct include_stack *new_istack;
if (idepth > MAX_SUDOERS_DEPTH) {
- sudoerserror(N_("too many levels of includes"));
+ if (sudoers_warnings)
+ sudo_warnx(U_("%s: %s"), path, U_("too many levels of includes"));
+ sudoerserror(NULL);
rcstr_delref(path);
debug_return_bool(false);
}
@@ -1232,53 +1255,70 @@ sudoers_trace_print(const char *msg)
int
sudoers_trace_print(const char *msg)
{
- static bool initialized;
- static struct sudo_lbuf lbuf;
-
- if (!initialized) {
- initialized = true;
- sudo_lbuf_init(&lbuf, NULL, 0, NULL, 0);
- }
-
- sudo_lbuf_append(&lbuf, "%s", msg);
- /* XXX - assumes a final newline */
+ sudo_lbuf_append(&trace_lbuf, "%s", msg);
if (strchr(msg, '\n') != NULL)
{
sudo_debug_printf2(NULL, NULL, 0, SUDOERS_DEBUG_PARSER|SUDO_DEBUG_DEBUG,
- "%s:%d: %s", sudoers, sudolineno, lbuf.buf);
- lbuf.len = 0;
+ "%s:%d: %s", sudoers, sudolineno, trace_lbuf.buf);
+ trace_lbuf.len = 0;
}
return 0;
}
#endif /* TRACELEXER */
+/*
+ * Custom input function that uses getdelim(3) and stores the buffer
+ * where the error functions can access it for better reporting.
+ * On success, buf is guaranteed to end in a newline and not contain
+ * embedded NULs. Calls YY_FATAL_ERROR on error.
+ */
static yy_size_t
sudoers_input(char *buf, yy_size_t max_size)
{
+ char *cp;
size_t avail = sudolinebuf.len - sudolinebuf.off;
/* Refill line buffer if needed. */
if (avail == 0) {
+ /*
+ * Some getdelim(3) implementations write NUL to buf on EOF.
+ * We peek ahead one char to detect EOF and skip the getdelim() call.
+ * This will preserve the original value of the last line read.
+ */
+ int ch = getc(sudoersin);
+ if (ch == EOF)
+ goto sudoers_eof;
+ ungetc(ch, sudoersin);
avail = getdelim(&sudolinebuf.buf, &sudolinebuf.size, '\n', sudoersin);
if (avail == (size_t)-1) {
+sudoers_eof:
/* EOF or error. */
- if (ferror(sudoersin) && errno != EINTR)
- YY_FATAL_ERROR("input in flex scanner failed");
- return 0;
+ if (feof(sudoersin))
+ return 0;
+ YY_FATAL_ERROR("input in flex scanner failed");
+ }
+
+ /* getdelim() can return embedded NULs, truncate if we find one. */
+ cp = memchr(sudolinebuf.buf, '\0', avail);
+ if (cp != NULL) {
+ *cp++ = '\n';
+ *cp = '\0';
+ avail = (size_t)(cp - sudolinebuf.buf);
}
/* Add trailing newline if it is missing. */
if (sudolinebuf.buf[avail - 1] != '\n') {
- if (avail == sudolinebuf.size) {
- char *cp = realloc(sudolinebuf.buf, avail + 1);
+ if (avail + 2 >= sudolinebuf.size) {
+ cp = realloc(sudolinebuf.buf, avail + 2);
if (cp == NULL) {
YY_FATAL_ERROR("unable to allocate memory");
return 0;
}
sudolinebuf.buf = cp;
- sudolinebuf.size++;
+ sudolinebuf.size = avail + 2;
}
sudolinebuf.buf[avail++] = '\n';
+ sudolinebuf.buf[avail] = '\0';
}
sudolinebuf.len = avail;
diff --git a/plugins/sudoers/toke_util.c b/plugins/sudoers/toke_util.c
index 5307666eb..f1df424d7 100644
--- a/plugins/sudoers/toke_util.c
+++ b/plugins/sudoers/toke_util.c
@@ -39,23 +39,15 @@
static unsigned int arg_len = 0;
static unsigned int arg_size = 0;
-bool
-fill_txt(const char *src, size_t len, size_t olen)
+/*
+ * Copy the string and collapse any escaped characters.
+ * Requires that dst have at least len + 1 bytes free.
+ */
+static void
+copy_string(char *dst, const char *src, size_t len)
{
- char *dst;
int h;
- debug_decl(fill_txt, SUDOERS_DEBUG_PARSER);
- dst = olen ? realloc(sudoerslval.string, olen + len + 1) : malloc(len + 1);
- if (dst == NULL) {
- sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- sudoerserror(NULL);
- debug_return_bool(false);
- }
- sudoerslval.string = dst;
-
- /* Copy the string and collapse any escaped characters. */
- dst += olen;
while (len--) {
if (*src == '\\' && len) {
if (src[1] == 'x' && len >= 3 && (h = hexchar(src + 2)) != -1) {
@@ -72,19 +64,53 @@ fill_txt(const char *src, size_t len, size_t olen)
}
}
*dst = '\0';
+}
+
+bool
+fill(const char *src, size_t len)
+{
+ char *dst;
+ debug_decl(fill, SUDOERS_DEBUG_PARSER);
+
+ dst = malloc(len + 1);
+ if (dst == NULL) {
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ sudoerserror(NULL);
+ debug_return_bool(false);
+ }
+ parser_leak_add(LEAK_PTR, dst);
+ copy_string(dst, src, len);
+ sudoerslval.string = dst;
+
debug_return_bool(true);
}
bool
append(const char *src, size_t len)
{
- int olen = 0;
+ size_t olen = 0;
+ char *dst;
debug_decl(append, SUDOERS_DEBUG_PARSER);
- if (sudoerslval.string != NULL)
+ if (sudoerslval.string != NULL) {
olen = strlen(sudoerslval.string);
+ parser_leak_remove(LEAK_PTR, sudoerslval.string);
+ }
+
+ dst = realloc(sudoerslval.string, olen + len + 1);
+ if (dst == NULL) {
+ /* realloc failure, avoid leaking original */
+ free(sudoerslval.string);
+ sudoerslval.string = NULL;
+ sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
+ sudoerserror(NULL);
+ debug_return_bool(false);
+ }
+ parser_leak_add(LEAK_PTR, dst);
+ copy_string(dst + olen, src, len);
+ sudoerslval.string = dst;
- debug_return_bool(fill_txt(src, len, olen));
+ debug_return_bool(true);
}
#define SPECIAL(c) \
@@ -132,6 +158,7 @@ fill_cmnd(const char *src, size_t len)
}
}
+ parser_leak_add(LEAK_PTR, sudoerslval.command.cmnd);
debug_return_bool(true);
}
@@ -143,21 +170,31 @@ fill_args(const char *s, size_t len, int addspace)
debug_decl(fill_args, SUDOERS_DEBUG_PARSER);
if (arg_size == 0) {
+#ifdef NO_LEAKS
+ if (sudoerslval.command.args != NULL) {
+ sudo_warnx("%s: command.args %p, should be NULL", __func__,
+ sudoerslval.command.args);
+ sudoerslval.command.args = NULL;
+ }
+#endif
addspace = 0;
new_len = len;
- } else
+ } else {
new_len = arg_len + len + addspace;
+ }
if (new_len >= arg_size) {
/* Allocate in increments of 128 bytes to avoid excessive realloc(). */
arg_size = (new_len + 1 + 127) & ~127;
+ parser_leak_remove(LEAK_PTR, sudoerslval.command.args);
p = realloc(sudoerslval.command.args, arg_size);
if (p == NULL) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
goto bad;
- } else
- sudoerslval.command.args = p;
+ }
+ parser_leak_add(LEAK_PTR, p);
+ sudoerslval.command.args = p;
}
/* Efficiently append the arg (with a leading space if needed). */
@@ -167,6 +204,7 @@ fill_args(const char *s, size_t len, int addspace)
len = arg_size - (p - sudoerslval.command.args);
if (strlcpy(p, s, len) >= len) {
sudo_warnx(U_("internal error, %s overflow"), __func__);
+ parser_leak_remove(LEAK_PTR, sudoerslval.command.args);
goto bad;
}
arg_len = new_len;
diff --git a/plugins/sudoers/visudo.c b/plugins/sudoers/visudo.c
index 6fd3c8386..071322960 100644
--- a/plugins/sudoers/visudo.c
+++ b/plugins/sudoers/visudo.c
@@ -85,7 +85,6 @@ TAILQ_HEAD(sudoersfile_list, sudoersfile);
*/
static void quit(int);
static int whatnow(void);
-static int check_aliases(bool strict, bool quiet);
static char *get_editor(int *editor_argc, char ***editor_argv);
static bool check_syntax(const char *, bool, bool, bool);
static bool edit_sudoers(struct sudoersfile *, char *, int, char **, int);
@@ -100,7 +99,6 @@ static void usage(int);
static void visudo_cleanup(void);
extern void get_hostname(void);
-extern void sudoersrestart(FILE *);
/*
* Globals
@@ -382,15 +380,11 @@ static char *lineno_editors[] = {
static bool
editor_supports_plus(const char *editor)
{
- const char *editor_base = strrchr(editor, '/');
- const char *cp;
+ const char *cp, *editor_base;
char **av;
debug_decl(editor_supports_plus, SUDOERS_DEBUG_UTIL);
- if (editor_base != NULL)
- editor_base++;
- else
- editor_base = editor;
+ editor_base = sudo_basename(editor);
if (*editor_base == 'r')
editor_base++;
@@ -570,7 +564,7 @@ check_defaults_and_aliases(bool strict, bool quiet)
}
parse_error = true;
}
- if (check_aliases(strict, quiet) != 0) {
+ if (check_aliases(&parsed_policy, strict, quiet, print_unused) != 0) {
parse_error = true;
}
debug_return;
@@ -761,10 +755,7 @@ install_sudoers(struct sudoersfile *sp, bool oldperms)
sp->tpath, sp->path);
/* Build up argument vector for the command */
- if ((av[0] = strrchr(_PATH_MV, '/')) != NULL)
- av[0]++;
- else
- av[0] = _PATH_MV;
+ av[0] = sudo_basename(_PATH_MV);
av[1] = sp->tpath;
av[2] = sp->path;
av[3] = NULL;
@@ -1066,128 +1057,17 @@ open_sudoers(const char *path, bool doedit, bool *keepopen)
debug_return_ptr(fp);
}
+/* Display unused aliases from check_aliases(). */
static int
-check_alias(char *name, int type, char *file, int line, int column,
- bool strict, bool quiet)
+print_unused(struct sudoers_parse_tree *parse_tree, struct alias *a, void *v)
{
- struct member *m;
- struct alias *a;
- int errors = 0;
- debug_decl(check_alias, SUDOERS_DEBUG_ALIAS);
-
- if ((a = alias_get(&parsed_policy, name, type)) != NULL) {
- /* check alias contents */
- TAILQ_FOREACH(m, &a->members, entries) {
- if (m->type != ALIAS)
- continue;
- errors += check_alias(m->name, type, a->file, a->line, a->column,
- strict, quiet);
- }
- alias_put(a);
- } else {
- if (!quiet) {
- if (errno == ELOOP) {
- fprintf(stderr, strict ?
- U_("Error: %s:%d:%d: cycle in %s \"%s\"") :
- U_("Warning: %s:%d:%d: cycle in %s \"%s\""),
- file, line, column, alias_type_to_string(type), name);
- } else {
- fprintf(stderr, strict ?
- U_("Error: %s:%d:%d: %s \"%s\" referenced but not defined") :
- U_("Warning: %s:%d:%d: %s \"%s\" referenced but not defined"),
- file, line, column, alias_type_to_string(type), name);
- }
- fputc('\n', stderr);
- if (strict && errorfile == NULL) {
- errorfile = rcstr_addref(file);
- errorlineno = line;
- }
- }
- errors++;
- }
+ const bool quiet = *((bool *)v);
- debug_return_int(errors);
-}
-
-/*
- * Iterate through the sudoers datastructures looking for undefined
- * aliases or unused aliases.
- */
-static int
-check_aliases(bool strict, bool quiet)
-{
- struct rbtree *used_aliases;
- struct cmndspec *cs;
- struct member *m;
- struct privilege *priv;
- struct userspec *us;
- int errors = 0;
- debug_decl(check_aliases, SUDOERS_DEBUG_ALIAS);
-
- used_aliases = alloc_aliases();
- if (used_aliases == NULL) {
- sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
- debug_return_int(-1);
+ if (!quiet) {
+ fprintf(stderr, U_("Warning: %s:%d:%d: unused %s \"%s\""), a->file,
+ a->line, a->column, alias_type_to_string(a->type), a->name);
+ fputc('\n', stderr);
}
-
- /* Forward check. */
- TAILQ_FOREACH(us, &parsed_policy.userspecs, entries) {
- TAILQ_FOREACH(m, &us->users, entries) {
- if (m->type == ALIAS) {
- errors += check_alias(m->name, USERALIAS,
- us->file, us->line, us->column, strict, quiet);
- }
- }
- TAILQ_FOREACH(priv, &us->privileges, entries) {
- TAILQ_FOREACH(m, &priv->hostlist, entries) {
- if (m->type == ALIAS) {
- errors += check_alias(m->name, HOSTALIAS,
- us->file, us->line, us->column, strict, quiet);
- }
- }
- TAILQ_FOREACH(cs, &priv->cmndlist, entries) {
- if (cs->runasuserlist != NULL) {
- TAILQ_FOREACH(m, cs->runasuserlist, entries) {
- if (m->type == ALIAS) {
- errors += check_alias(m->name, RUNASALIAS,
- us->file, us->line, us->column, strict, quiet);
- }
- }
- }
- if (cs->runasgrouplist != NULL) {
- TAILQ_FOREACH(m, cs->runasgrouplist, entries) {
- if (m->type == ALIAS) {
- errors += check_alias(m->name, RUNASALIAS,
- us->file, us->line, us->column, strict, quiet);
- }
- }
- }
- if ((m = cs->cmnd)->type == ALIAS) {
- errors += check_alias(m->name, CMNDALIAS,
- us->file, us->line, us->column, strict, quiet);
- }
- }
- }
- }
-
- /* Reverse check (destructive) */
- if (!alias_find_used(&parsed_policy, used_aliases))
- errors++;
- free_aliases(used_aliases);
-
- /* If all aliases were referenced we will have an empty tree. */
- if (!no_aliases(&parsed_policy) && !quiet)
- alias_apply(&parsed_policy, print_unused, NULL);
-
- debug_return_int(strict ? errors : 0);
-}
-
-static int
-print_unused(struct sudoers_parse_tree *parse_tree, struct alias *a, void *v)
-{
- fprintf(stderr, U_("Warning: %s:%d:%d: unused %s \"%s\""),
- a->file, a->line, a->column, alias_type_to_string(a->type), a->name);
- fputc('\n', stderr);
return 0;
}
diff --git a/plugins/system_group/Makefile.in b/plugins/system_group/Makefile.in
index 99159b219..3219e6bbc 100644
--- a/plugins/system_group/Makefile.in
+++ b/plugins/system_group/Makefile.in
@@ -166,6 +166,8 @@ install-plugin: install-dirs system_group.la
INSTALL_BACKUP='$(INSTALL_BACKUP)' $(LIBTOOL) $(LTFLAGS) --mode=install $(INSTALL) $(INSTALL_OWNER) -m $(shlib_mode) system_group.la $(DESTDIR)$(plugindir); \
fi
+install-fuzzer:
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(plugindir)/system_group.la
-test -z "$(INSTALL_BACKUP)" || \
@@ -182,6 +184,8 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
+fuzz:
+
check:
clean:
@@ -200,6 +204,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# Autogenerated dependencies, do not modify
system_group.lo: $(srcdir)/system_group.c $(incdir)/compat/stdbool.h \
$(incdir)/sudo_compat.h $(incdir)/sudo_dso.h \
diff --git a/po/cs.mo b/po/cs.mo
index b1b2881bb..7de6866e4 100644
--- a/po/cs.mo
+++ b/po/cs.mo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 03858738c..01209801b 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -2,14 +2,14 @@
# This file is put in the public domain.
# Todd C. Miller <Todd.Miller@courtesan.com>, 2011-2013
# Petr Pisar <petr.pisar@atlas.cz>, 2013, 2014, 2015, 2016, 2017, 2018, 2019.
-# Petr Pisar <petr.pisar@atlas.cz>, 2020.
+# Petr Pisar <petr.pisar@atlas.cz>, 2020, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-14 19:42+02:00\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-03 21:24+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"
@@ -32,8 +32,8 @@ msgid "unable to restore registry"
msgstr "registr nelze obnovit"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -44,31 +44,33 @@ msgstr "registr nelze obnovit"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -78,26 +80,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "nelze alokovat paměť"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "%s nelze otevřít"
@@ -107,7 +110,7 @@ msgstr "%s nelze otevřít"
msgid "unable to mkdir %s"
msgstr "adresář %s nelze vytvořit"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "nelze získat údaje o %s"
@@ -122,7 +125,7 @@ msgid "Unknown signal"
msgstr "Neznámý signál"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "neplatná hodnota"
@@ -134,67 +137,81 @@ msgstr "hodnota je příliš velká"
msgid "value too small"
msgstr "hodnota je příliš malá"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "neplatná hodnota Path „%s“ v %s, řádek %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "neplatná hodnota pro %s „%s“ v %s, řádek %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "nepodporovaný zdroj skupin „%s“ v %s, řádek %u"
# This is about maximal GID. English text "max groups" is wrong.
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "neplatné maximum skupin „%s“ v %s, řádek %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s není obyčejný soubor"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s je vlastněn UID %u, avšak UID by mělo být %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s je zapisovatelný pro všechny"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s je zapisovatelný pro skupinu"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: zkrátit %s na nula bajtů? (y pro ano / n pro ne) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "%s nebude přepsáno"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "z %s nelze číst"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "do %s nelze zapsat"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: nejedná se o obyčejný soubor"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: chybná práva souboru: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "současný pracovní adresář nelze obnovit"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -229,8 +246,8 @@ msgid "starting from %s"
msgstr "začíná se od %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "obsluhu pro signál %d nelze nastavit"
@@ -255,14 +272,14 @@ msgstr "neočekávaný druh odpovědi na zpětném kanálu: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "událost nelze přidat do fronty"
@@ -270,8 +287,8 @@ msgstr "událost nelze přidat do fronty"
msgid "unable to set controlling tty"
msgstr "řídicí terminál nelze nastavit"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "nelze vytvořit rouru"
@@ -279,8 +296,8 @@ msgstr "nelze vytvořit rouru"
msgid "unable to receive message from parent"
msgstr "od rodiče nelze přijmout zprávu"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "nelze vytvořit potomka"
@@ -288,20 +305,20 @@ msgstr "nelze vytvořit potomka"
msgid "unable to restore tty label"
msgstr "nelze obnovit značku TTY"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "%s nelze spustit"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "modul s politikami zrušil inicializaci relace"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "chyba ve smyčce s událostmi"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "nelze obnovit obsluhu signálu %d"
@@ -310,36 +327,36 @@ msgstr "nelze obnovit obsluhu signálu %d"
msgid "unable to allocate pty"
msgstr "nelze alokovat PTY"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "chyba vstupně-výstupního modulu"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "příkaz zamítnut vstupně-výstupním modulem"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "chyba pozastavování protokolu"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "chyba při měnění velikosti okna"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "nelze vytvořit sockety"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "dohlížejícímu procesu nelze odeslat zprávu"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "chyba v %s na řádku %d při zavádění modulu „%s“"
@@ -359,46 +376,47 @@ msgstr "%s musí být vlastněn UID %d"
msgid "%s must be only be writable by owner"
msgstr "%s musí být zapisovatelný jen vlastníkem"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "ignoruje je opakovaný modul „%s“ v %s na řádku %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "%s nelze zavést: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "v %s nelze nalézt symbol „%s“"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "neslučitelná hlavní verze modulu %d (očekáváno %d) nalezena v %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ignoruje se modul politiky „%s“ v %s na řádku %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "lze zadat pouze jeden modul s politikou"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "v %2$s nalezen neznámý druh modulu %1$d"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "modul s politikou %s neobsahuje metodu check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "vnitřní chyba, přetečení v %s"
@@ -699,20 +717,40 @@ msgstr "nepodařilo se nastavit kontext pro spuštění na %s"
msgid "unable to set key creation context to %s"
msgstr "nepodařilo se nastavit kontext pro vytváření klíčů na %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "je třeba alespoň jeden argument"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "neplatné číslo deskriptoru souboru: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "%s nelze spustit jako přihlašovací shell"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: úprava symbolických odkazů není dovolena"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: úprava souborů v adresáři, do kterého lze zapisovat, není dovolena"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "obsah relace s úpravami ponechán v %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "nelze získat seznam skupin"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -761,25 +799,25 @@ msgstr "volání setproject selhalo u projektu „%s“"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "pozor, nepodařilo se přiřadit řízení zdrojů projektu „%s“"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo verze %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Přepínače configure: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "nepřekonatelná chyba, moduly nelze zavést"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "modul nevrátil příkaz k provedení"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "neočekávaný režim programu sudo 0x%x"
@@ -793,168 +831,163 @@ msgstr "neexistujete v databázi %s"
msgid "unable to determine tty"
msgstr "nelze určit terminál"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s musí být vlastněn UID %d a mít nastaven bit setuid"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "efektivní UID není %d, nalézá se %s na souborovém systému s nastavenou volbou „nosuid“ nebo na souborovém systému NFS bez práv roota?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "efektivní UID není %d, je sudo nainstalované jako setuid vlastněné rootem?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "nelze nastavit ID doplňkových skupin"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "efektivní GID nelze nastavit na %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "GID nelze nastavit na %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "neočekávaný důvod ukončení potomka: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "modul s politikami nelze inicializovat"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "modulu s politikami %s chybí metoda „check_policy“"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "příkaz zamítnut politikou"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "chyba modulu s politikou"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "modul s politikami %s nepodporuje získání seznamu oprávnění"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "modul s politikami %s nepodporuje přepínač -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "modul s politikami %s nepodporuje přepínače -k/-K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "chyba při inicializaci vstupně-výstupního modulu %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "chyba při inicializaci auditního modulu %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s nelze zaznamenat chybovou událost%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s nelze zaznamenat přijímací událost%s%s "
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "chyba auditního modulu"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s nelze zaznamenat zamítací událost%s%s "
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "chyba při inicializaci schvalovacího modulu %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "příkaz zamítnut schvalovatelem"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "chyba schvalovacího modulu"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "nenalezen žádný dočasný adresář, do kterého lze zapisovat"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "současný pracovní adresář nelze obnovit"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: nejedná se o obyčejný soubor"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: úprava symbolických odkazů není dovolena"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: úprava souborů v adresáři, do kterého lze zapisovat, není dovolena"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s ponechán nezměněn"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s nezměněn"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "obsah relace s úpravami ponechán v %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: vnitřní chyba: lichý počet cest"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: nelze vytvořit dočasné soubory"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: zabit signálem"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: neznámá chyba %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "dočasné soubory nelze zkopírovat zpět na jejich původní místo"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "některé z dočasných souborů nelze zkopírovat zpět na jejich původní místo"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "UID nelze změnit na roota (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "chyba modulu: programu sudoedit chybí seznam souborů"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "nelze přečíst hodiny"
@@ -1017,9 +1050,6 @@ msgstr "standardní vstup nelze obnovit"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "chybí terminál a program pro dotazování se na heslo nebyl zadán"
-#~ msgid "unable to get group vector"
-#~ msgstr "nelze získat vektor skupin"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "neznámé UID %u: kdo jsi?"
diff --git a/po/de.mo b/po/de.mo
index ff049ed65..9eb097cd4 100644
--- a/po/de.mo
+++ b/po/de.mo
Binary files differ
diff --git a/po/de.po b/po/de.po
index 06988b3cf..0339c9415 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,13 +1,13 @@
# German translation for sudo.
# This file is distributed under the same license as the sudo package.
# Jakob Kramer <jakob.kramer@gmx.de>, 2012, 2013, 2014.
-# Mario Blättermann <mario.blaettermann@gmail.com>, 2012, 2014-2017, 2019-2020.
+# Mario Blättermann <mario.blaettermann@gmail.com>, 2012, 2014-2017, 2019-2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-15 20:11+0200\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-03 20:43+0100\n"
"Last-Translator: Mario Blättermann <mario.blaettermann@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
"Language: de\n"
@@ -16,7 +16,7 @@ msgstr ""
"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: Lokalize 20.08.1\n"
+"X-Generator: Lokalize 20.12.2\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
msgid "unable to open userdb"
@@ -32,8 +32,8 @@ msgid "unable to restore registry"
msgstr "Registrierungsdatenbank konnte nicht wiederhergestellt werden"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -44,31 +44,33 @@ msgstr "Registrierungsdatenbank konnte nicht wiederhergestellt werden"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -78,26 +80,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "Speicher konnte nicht zugewiesen werden"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "%s konnte nicht geöffnet werden"
@@ -107,7 +110,7 @@ msgstr "%s konnte nicht geöffnet werden"
msgid "unable to mkdir %s"
msgstr "Verzeichnis %s konnte nicht erstellt werden"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "stat konnte nicht auf %s angewendet werden"
@@ -122,7 +125,7 @@ msgid "Unknown signal"
msgstr "Unbekanntes Signal"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "ungültiger Wert"
@@ -134,66 +137,80 @@ msgstr "Wert zu groß"
msgid "value too small"
msgstr "Wert zu klein"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "Ungültiger Pfad-Wert »%s« in %s, Zeile %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "Ungültiger Wert für %s »%s« in %s, Zeile %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "Nicht unterstützte Gruppenquelle »%s« in %s, Zeile %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "Ungültige Maximalzahl an Gruppen »%s« in %s, Zeile %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s ist keine reguläre Datei"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s gehört Benutzer mit UID %u, sollte allerdings %u gehören"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s kann von allen verändert werden"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s kann von der Gruppe verändert werden"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: %s auf null Byte kürzen? (j/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "%s wird nicht überschrieben"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "Aus %s konnte nicht gelesen werden"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "%s konnte nicht beschrieben werden"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: Keine reguläre Datei"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: falscher Dateimodus: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "Aktueller Arbeitsordner konnte nicht wiederhergestellt werden"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -228,8 +245,8 @@ msgid "starting from %s"
msgstr "beginnend mit %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "Handler für Signal %d konnte nicht gesetzt werden"
@@ -254,14 +271,14 @@ msgstr "Unerwarteter Antworttyp auf Rückmeldungskanal: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "Ereignis konnte nicht zur Warteschlange hinzugefügt werden"
@@ -269,8 +286,8 @@ msgstr "Ereignis konnte nicht zur Warteschlange hinzugefügt werden"
msgid "unable to set controlling tty"
msgstr "Kontrollierendes TTY konnte nicht gesetzt werden"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "Weiterleitung konnte nicht erstellt werden"
@@ -278,8 +295,8 @@ msgstr "Weiterleitung konnte nicht erstellt werden"
msgid "unable to receive message from parent"
msgstr "Die Nachricht konnte nicht empfangen werden"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "Es konnte nicht geforkt werden"
@@ -287,20 +304,20 @@ msgstr "Es konnte nicht geforkt werden"
msgid "unable to restore tty label"
msgstr "TTY-Kennzeichnung konnte nicht wiederhergestellt werden"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "%s konnte nicht ausgeführt werden"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "Regelwerks-Plugin konnte Sitzung nicht initialisieren"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "Fehler in Ereignisschleife"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "Handler für Signal %d konnte nicht wiederhergestellt werden"
@@ -309,36 +326,36 @@ msgstr "Handler für Signal %d konnte nicht wiederhergestellt werden"
msgid "unable to allocate pty"
msgstr "PTY konnte nicht vergeben werden"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "E/A-Pluginfehler"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "Befehl wurde vom E/A-Plugin abgewiesen"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "Fehler bei der Aussetzung der Protokollierung"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "Fehler beim Ändern der Fenstergröße"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "Sockets konnten nicht hergestellt werden"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "Die Nachricht konnte nicht an den überwachenden Prozess verschickt werden"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "Fehler in %s, Zeile %d, während Plugin »%s« geladen wurde"
@@ -358,46 +375,47 @@ msgstr "%s muss Benutzer mit UID %d gehören"
msgid "%s must be only be writable by owner"
msgstr "%s darf nur vom Besitzer beschreibbar sein"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "Doppelt vorhandenes Plugin »%s« in %s, Zeile %d, wird ignoriert"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "»%s« konnte nicht geladen werden: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "Symbol »%s« konnte in %s nicht gefunden werden"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "Inkompatible Hauptversion %d des Regelwerks (%d erwartet) wurde in %s gefunden"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "Regelwerks-Plugin »%s« in %s, Zeile %d, wird ignoriert"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "Nur ein einziges Regelwerks-Plugin kann geladen werden"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "Unbekannter Plugintyp %d wurde in %s gefunden"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "Das Regelwerks-Plugin %s enthält keine check_policy-Methode"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "Interner Fehler: %s-Überlauf"
@@ -702,20 +720,40 @@ msgstr "Ausführungskontext konnte nicht auf »%s« gesetzt werden"
msgid "unable to set key creation context to %s"
msgstr "Kontext der Schüsselerstellung konnte nicht auf %s festgelegt werden."
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "Benötigt mindestens ein Argument"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "Unzulässige Dateideskriptornummer: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "%s konnte nicht als Anmeldeshell ausgeführt werden"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: Bearbeiten symbolischer Links ist nicht erlaubt"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: Bearbeiten von Dateien in einem beschreibbaren Ordner ist nicht erlaubt"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "Bearbeitungssitzung wurden in %s gelassen"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "Gruppenliste konnte nicht geholt werden"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -764,25 +802,25 @@ msgstr "»setproject« schlug für Projekt »%s« fehl"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "Warnung: Ressourcenkontrolle von Projekt »%s« konnte nicht zugewiesen werden"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo-Version %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Optionen für »configure«: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "Schwerwiegender Fehler, Plugins konnten nicht geladen werden"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "Plugin gab keinen auszuführenden Befehl zurück"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "Unerwarteter sudo-Modus 0x%x"
@@ -796,168 +834,163 @@ msgstr "Sie sind in der %s-Datenbank nicht enthalten"
msgid "unable to determine tty"
msgstr "TTY konnte nicht ermittelt werden"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s muss dem Benutzer mit UID %d gehören und das »setuid«-Bit gesetzt haben"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "Effektive UID ist nicht %d. Liegt %s auf einem Dateisystem mit gesetzter »nosuid«-Option oder auf einem NFS-Dateisystem ohne Root-Rechte?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "Effektive UID ist nicht %d. Wurde sudo mit »setuid root« installiert?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "Zusätzliche Gruppenkennungen konnten nicht gesetzt werden"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "Effektive GID konnte nicht auf »runas«-GID %u gesetzt werden"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "GID konnte nicht auf »runas«-GID %u gesetzt werden"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "Unerwartete Abbruchbedingung eines Unterprozesses: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "Regelwerks-Plugin konnte nicht initialisiert werden"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "Dem Regelwerks-Plugin %s fehlt die »check_policy«-Methode"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "Befehl wurde durch Regelwerk abgewiesen"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "Regelwerk-Plugin-Fehler"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "Regelwerks-Plugin %s unterstützt das Auflisten von Privilegien nicht"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "Regelwerks-Plugin %s unterstützt die Option -v nicht"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "Regelwerks-Plugin %s unterstützt die Optionen -k und -K nicht"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "E/A-Plugin %s konnte nicht initialisiert werden"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "Audit-Plugin %s konnte nicht initialisiert werden"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: Fehlerereignis%s%s konnte nicht protokolliert werden"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: Ereignis%s%s konnte für das Protokoll nicht akzeptiert werden"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "Audit-Pluginfehler"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: Ereignis%s%s wurde vom Protokoll abgewiesen"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "Genehmigungs-Plugin %s konnte nicht initialisiert werden"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "Befehl wurde vom Genehmigenden abgewiesen"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "Genehmigungs-Plugin-Fehler"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "Kein beschreibbares temporäres Verzeichnis gefunden"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "Aktueller Arbeitsordner konnte nicht wiederhergestellt werden"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: Keine reguläre Datei"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: Bearbeiten symbolischer Links ist nicht erlaubt"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: Bearbeiten von Dateien in einem beschreibbaren Ordner ist nicht erlaubt"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s blieb unverändert"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s unverändert"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "Bearbeitungssitzung wurden in %s gelassen"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: interner Fehler: seltsame Anzahl an Pfaden"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: Temporäre Dateien konnten nicht angelegt werden"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: von einem Signal getötet"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: unbekannter Fehler %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "Temporäre Dateien konnten nicht an ihre ursprünglichen Orte zurück kopiert werden"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "Einige der temporären Dateien konnten nicht an ihre ursprünglichen Orte zurück kopiert werden"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "UID konnte nicht zu Root (%u) geändert werden"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "Plugin-Fehler: Fehlende Dateiliste für sudoedit"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "Die Uhr konnte nicht gelesen werden"
diff --git a/po/eo.mo b/po/eo.mo
index 1d959b2b5..f13f45432 100644
--- a/po/eo.mo
+++ b/po/eo.mo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index 8cee4f93e..43d8cd3bc 100644
--- a/po/eo.po
+++ b/po/eo.po
@@ -1,14 +1,14 @@
# Esperanto translations for sudo package.
# This file is distributed under the same license as the sudo package.
-# Keith Bowes <zooplah@gmail.com>, 2012, 2020.
+# Keith Bowes <zooplah@gmail.com>, 2012, 2020-2021
# Felipe Castro <fefcas@gmail.com>, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-20 12:15-0400\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-04 12:09-0500\n"
"Last-Translator: Keith Bowes <zooplah@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
"Language: eo\n"
@@ -33,8 +33,8 @@ msgid "unable to restore registry"
msgstr "ne eblas restarigi registrejon"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -45,31 +45,33 @@ msgstr "ne eblas restarigi registrejon"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -79,26 +81,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "ne eblas generi memoron"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "ne eblas malfermi %s"
@@ -108,7 +111,7 @@ msgstr "ne eblas malfermi %s"
msgid "unable to mkdir %s"
msgstr "ne eblas apliki mkdir al %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "ne eblas apliki stat al %s"
@@ -123,7 +126,7 @@ msgid "Unknown signal"
msgstr "Nekonata signalo"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "nevalida valoro"
@@ -135,66 +138,80 @@ msgstr "valoro tro grandas"
msgid "value too small"
msgstr "valoro tro malgrandas"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "nevalida voja valoro \"%s\" en %s, linio %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "nevalida valoro por %s \"%s\" en %s, linio %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "nekomprenata grupa fonto \"%s\" en %s, linio %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "nevalidaj maksimumaj grupoj \"%s\" en %s, linio %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s estas ne regula dosiero"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s estas estrata de uid %u, devas esti %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s estas skribebla de ĉiuj"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s estas skribebla de la tuta grupo"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: ĉu distranĉi %s ĝis nul bajto? (y/n) [n]"
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "ne anstataŭigos je %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "ne eblas legi ell %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "ne eblas skribi al %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: ne regula dosiero"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: malbona dosiera reĝimo: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "ne eblas restarigi nune kurantan dosierujon"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -229,8 +246,8 @@ msgid "starting from %s"
msgstr "komenciĝas de %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "ne eblas difini traktilon por la signalo %d"
@@ -255,14 +272,14 @@ msgstr "neatendita respondotipo ĉe la postkanalo: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "ne eblas aldoni al la atendovico eventon"
@@ -270,8 +287,8 @@ msgstr "ne eblas aldoni al la atendovico eventon"
msgid "unable to set controlling tty"
msgstr "ne eblas elekti la regan tty-on"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "ne eblas krei tubon"
@@ -279,8 +296,8 @@ msgstr "ne eblas krei tubon"
msgid "unable to receive message from parent"
msgstr "ne eblas ricevi mesaĝon el supre"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "ne eblas forki"
@@ -288,20 +305,20 @@ msgstr "ne eblas forki"
msgid "unable to restore tty label"
msgstr "ne eblis reatingi tty-etikedon"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "ne eblas plenumigi: %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "konduta kromprogramo fiaskis dum seanca komenciĝo"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "eraro en la eventa iteracio"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "ne eblas restarigi traktilon por la signalo %d"
@@ -310,36 +327,36 @@ msgstr "ne eblas restarigi traktilon por la signalo %d"
msgid "unable to allocate pty"
msgstr "ne eblis generi pty-on"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "En/eliga kromprograma eraro"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "komando rifuzita de en/eliga kromprogramo"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "ni paŭzas la protokoladon de eraroj"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "eraro dum ŝanĝo de fenestro-grando"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "ne eblas krei konektingojn"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "ne eblas sendi mesaĝon al observa procezo"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "eraro en %s, linio %d dum ŝargi kromprogramon \"%s\""
@@ -359,46 +376,47 @@ msgstr "%s devas esti estrita de uid %d"
msgid "%s must be only be writable by owner"
msgstr "%s estas skribebla nur de estro"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "ni malatentas duobligitan kromprogramon \"%s\" en %s, linio %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "maleblas ŝarĝi je %s: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "ne eblas trovi simbolon \"%s\" en %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "malkongrua granda versio %d de kromprogramo (atendite %d) trovita en %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ni malatentas kondutan kromprogramon \"%s\" en %s, linio %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "nur unu konduta kromprogramo povas esti indikata"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "nekonata kromprograma tipo %d trovita en %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "konduta kromprogramo %s ne inkluzivas la metodon check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "interna eraro, superfluo en %s"
@@ -699,20 +717,40 @@ msgstr "ne eblas elekti exec-kuntekston al %s"
msgid "unable to set key creation context to %s"
msgstr "ne eblas elekti kuntekston de kreo de ŝlosilo al %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "postulas almenaŭ unu parametron"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "malvalida dosierpriskribila numero: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "ne eblas lanĉi %s kiel ensalut-ŝelo"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: redakto de simbolaj ligoj ne estas permesata"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: redakto de dosieroj en skribebla dosierujo ne estas permesata"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "enhavo de redakta seanco restas en %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "ne eblas atingi grupan liston"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -761,25 +799,25 @@ msgstr "setproject malsukcesis por projekto \"%s\""
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "averto, rimedo-rega asigno malsukcesis por projekto \"%s\""
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo: eldono %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Muntaj parametroj: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "ĉesiga eraro: ne eblas ŝargi kromprogramojn"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "kromprogramo ne liveris komandon por plenumi"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "neatendita sudo-reĝimon 0x%x"
@@ -793,168 +831,163 @@ msgstr "vi ne ekzistas en la datumbazo %s"
msgid "unable to determine tty"
msgstr "ne eblas determini tty-on"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s devas esti posedata de uid %d kaj la setuid-bito devas esti markita"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "efektiva uid ne estas %d; ĉu %s estas en dosiersistemo kun la elekto 'nosuid' aŭ reta dosiersistemo sen ĉefuzanto-privilegioj?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "efektiva uid ne estas %d; ĉu sudo estas instalita kiel setuid-radiko?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "ne eblas elekti suplementajn grupajn identigilojn"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "ne eblas elekti efikan gid-on al plenumigkiela gid %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "ne eblas elekti gid-on kiel plenumigkielan gid-on %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "neatendita ido finiĝis laŭ la kondiĉo: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "ne eblas komenci konduktan kromprogramon"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "konduta kromprogramo %s ne inkluzivas la metodon \"check_policy\""
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "komando rifuzita pro konduto-regularo"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "eraro de konduta kromprogramo"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "konduta kromprogramo %s ne komprenas listigon de privilegioj"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "konduta kromprogramo %s ne komprenas la parametron -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "konduta kromprogramo %s ne komprenas la parametrojn -k kaj -K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "eraro dum lanĉo de eneliga kromprogramo %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "eraro dum lanĉo de ekzamena kromprogramo %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%smaleblas protokoli eraro-eventon%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: maleblas protokoli akcepto-eventon%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "Kontrolo-kromprograma eraro"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: neeblas protokoli malakcepto-eventon%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "eraro dum lanĉo de aproba kromprogramo %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "komando rifuzita de aprobanto"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "eraro de aproba kromprogramo"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "neniu skribebla provizora dosierujo estis trovata"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "ne eblas restarigi nune kurantan dosierujon"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: ne regula dosiero"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: redakto de simbolaj ligoj ne estas permesata"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: redakto de dosieroj en skribebla dosierujo ne estas permesata"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s restas ne modifita"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s ne ŝanĝita"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "enhavo de redakta seanco restas en %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: interna eraro: malpara nombro da vojoj"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: ne eblas krei provizorajn dosierojn"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: mortigita de signalo"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: nekonata eraro %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "ne eblas retrokopii provizorajn dosierojn al ilia originala loko"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "ne eblas retrokopii kelkajn el la provizoraj dosieroj al ilia originala loko"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "ne eblas ŝanĝi uid-on al ĉefuzanto (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "kromprograma eraro: malhavas dosieran liston por sudoedit"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "ne eblas legi la horloĝon"
@@ -1017,9 +1050,6 @@ msgstr "ne eblas restarigi norman enigon"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "neniu tty ĉeestas kaj neniu pasvorto-programo specifita"
-#~ msgid "unable to get group vector"
-#~ msgstr "ne eblas elekti grupan vektoron"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "nekonata uid %u: kiu vi estas?"
diff --git a/po/fi.mo b/po/fi.mo
index a40360774..63fa88523 100644
--- a/po/fi.mo
+++ b/po/fi.mo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index cdb132feb..fc254fdd1 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -2,14 +2,14 @@
# This file is put in the public domain.
# This file is distributed under the same license as the sudo package.
# Jorma Karvonen <karvonen.jorma@gmail.com>, 2011-2017.
-# Lauri Nurmi <lanurmi@iki.fi>, 2019.
+# Lauri Nurmi <lanurmi@iki.fi>, 2019-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-14 23:01+0300\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-04 23:36+0200\n"
"Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
"Language: fi\n"
@@ -18,7 +18,7 @@ msgstr ""
"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 2.4.1\n"
+"X-Generator: Poedit 2.4.2\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
msgid "unable to open userdb"
@@ -34,8 +34,8 @@ msgid "unable to restore registry"
msgstr "rekisterin palautus epäonnistui"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -46,31 +46,33 @@ msgstr "rekisterin palautus epäonnistui"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -80,26 +82,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "muistin varaaminen epäonnistui"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "%s: avaaminen epäonnistui"
@@ -109,7 +112,7 @@ msgstr "%s: avaaminen epäonnistui"
msgid "unable to mkdir %s"
msgstr "käskyn mkdir %s suorittaminen epäonnistui"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "stat-kutsu epäonnistui tiedostolle %s"
@@ -124,7 +127,7 @@ msgid "Unknown signal"
msgstr "Tuntematon signaali"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "virheellinen arvo"
@@ -136,67 +139,81 @@ msgstr "arvo on liian suuri"
msgid "value too small"
msgstr "arvo on liian pieni"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "virheellinen Path-arvo ”%s” tiedostossa %s, rivillä %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "virheellinen %s-arvo ”%s” tiedostossa %s, rivillä %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "tukematon ryhmälähde ”%s” tiedostossa %s, rivillä %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "virheellinen ryhmien enimmäismäärä ”%s” tiedostossa %s, rivillä %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s ei ole tavallinen tiedosto"
# ensimmäinen parametri on path
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "polun %s omistaa uid %u, tulisi olla %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s on yleiskirjoitettava"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s on ryhmäkirjoitettava"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: katkaistaanko %s nollaan tavuun? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "jätetään ylikirjoittamatta %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "tiedostosta %s lukeminen epäonnistui"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "tiedostoon %s kirjoittaminen epäonnistui"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: ei ole tavallinen tiedosto"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: virheellinen tiedostotila: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "nykyisen työhakemiston palauttaminen epäonnistui"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -231,8 +248,8 @@ msgid "starting from %s"
msgstr "aloitetaan hakemistosta %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "käsittelijän asettaminen signaalille %d epäonnistui"
@@ -258,14 +275,14 @@ msgstr "odottamaton vastaustyyppi paluukanavalla: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "tapahtuman lisääminen jonoon epäonnistui"
@@ -274,8 +291,8 @@ msgstr "tapahtuman lisääminen jonoon epäonnistui"
msgid "unable to set controlling tty"
msgstr "ohjaavan tty:n asettaminen epäonnistui"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "putken luominen epäonnistui"
@@ -283,8 +300,8 @@ msgstr "putken luominen epäonnistui"
msgid "unable to receive message from parent"
msgstr "viestin vastaanotto vanhemmalta epäonnistui"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "fork-kutsu epäonnistui"
@@ -292,20 +309,20 @@ msgstr "fork-kutsu epäonnistui"
msgid "unable to restore tty label"
msgstr "tty-nimiön palauttaminen epäonnistui"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "%s: suorittaminen epäonnistui"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "käytäntölisäosa epäonnistui istunnon alustamisessa"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "virhe tapahtumasilmukassa"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "käsittelijän palauttaminen signaalille %d epäonnistui"
@@ -314,36 +331,36 @@ msgstr "käsittelijän palauttaminen signaalille %d epäonnistui"
msgid "unable to allocate pty"
msgstr "pty:n varaaminen epäonnistui"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "siirräntälisäosan virhe"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "siirräntälisäosa hylkäsi komennon"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "virhe suspend-toiminnon lokiin kirjaamisessa"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "virhe ikkunan koon muuttamisessa"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "sokettien luominen epäonnistui"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "viestin lähettäminen prosessien valvomiseksi epäonnistui"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "virhe tiedostossa %s, rivillä %d alustettaessa lisäosaa ”%s”"
@@ -365,46 +382,47 @@ msgstr "polun %s omistajan on oltava uid %d"
msgid "%s must be only be writable by owner"
msgstr "polun %s on oltava vain omistajan kirjoitettavissa"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "ohitetaan lisäosan ”%s” kaksoiskappale tiedostossa %s, rivillä %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "%s: lataaminen epäonnistui: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "symbolia ”%s” ei löytynyt kohteesta %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "löydettiin yhteensopimaton lisäosan pääversio %d (odotettiin %d) kohteesta %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ohitetaan käytäntölisäosa ”%s” tiedostossa %s, rivillä %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "vain yksi käytäntölisäosa voidaan määritellä"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "tuntematon lisäosatyyppi %d löytyi kohteesta %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "käytäntölisäosa %s ei sisällä check_policy-metodia"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "sisäinen virhe, %s-ylivuoto"
@@ -706,20 +724,40 @@ msgstr "exec-kontekstin asetus arvoon %s epäonnistui"
msgid "unable to set key creation context to %s"
msgstr "avaimenluontikontekstin asetus arvoon %s epäonnistui"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "vaatii vähintään yhden argumentin"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "virheellinen tiedostokahvanumero: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "yritys ajaa %s kirjautumiskuorena epäonnistui"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: symbolisten linkkien muokkaus ei ole sallittua"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: tiedostojen muokkaus kirjoitettavassa hakemistossa ei ole sallittua"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "muokkausistunnon sisältö jätetty kohteeseen %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "ryhmälistan noutaminen epäonnistui"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -768,25 +806,25 @@ msgstr "setproject-kutsu ”%s”-hankkeelle epäonnistui"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "varoitus, ”%s”-hankkeen resurssivalvontaosoitus epäonnistui"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo-versio %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Asetusvalitsimet: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "vakava virhe, lisäosien lataaminen epäonnistui"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "lisäosa ei palauttanut suoritettavaa komentoa"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "odottamaton sudo-tila 0x%x"
@@ -801,170 +839,165 @@ msgid "unable to determine tty"
msgstr "tty:n päätteleminen epäonnistui"
# ensimmäinen parametri on path
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "polun %s omistajan on oltava uid %d ja setuid-bitin on oltava asetettu"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "vallitseva käyttäjä-id ei ole %d, sijaitseeko %s ”nosuid”-valintaa käyttävällä tiedostojärjestelmällä, vai onko tämä NFS-tiedostojärjestelmä ilman root-käyttöoikeuksia?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "vallitseva käyttäjä-id ei ole %d, onko sudo asennettu setuid root -käyttöoikeuksilla?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "täydentävien ryhmä-ID:iden asettaminen epäonnistui"
# tämän ymmärrän niin, että käyttöjärjestelmäydin luo tiedoston ja antaa tälle tavallaan tilapäisen effective gid-tunnisteen, joka vaihdetaan suorittamisen yhteydessä prosessin omistajan suoritettavaksi ryhmätunnisteeksi.
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "vallitsevan ryhmä-ID:n asettaminen runas-ryhmä-ID:ksi %u epäonnistui"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "ryhmä-ID:n asettaminen runas-ryhmä-ID:ksi %u epäonnistui"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "lapsiprosessin odottamaton päättymisehto: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "käytäntölisäosan alustaminen epäonnistui"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "käytäntölisäosalta %s puuttuu ”check_policy”-metodi"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "käytäntö hylkäsi komennon"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "käytäntölisäosan virhe"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "käytäntölisäosa %s ei tue käyttöoikeuksien luettelua"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "käytäntölisäosa %s ei tue valitsinta -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "käytäntölisäosa %s ei tue valitsimia -k/-K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "virhe alustettaessa siirräntälisäosaa %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "audit-lisäosan %s alustaminen epäonnistui"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: virhetapahtuman kirjaaminen lokiin epäonnistui%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: hyväksyntätapahtuman kirjaaminen lokiin epäonnistui%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "audit-lisäosan virhe"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: hylkäystapahtuman kirjaaminen lokiin epäonnistui%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "hyväksyntälisäosan %s alustaminen epäonnistui"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "hyväksyjä hylkäsi komennon"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "hyväksyntälisäosan virhe"
# parametrina on CWD- eli Change Working Directory- komennolla palautettava hakemisto
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "kirjoitettavaa väliaikaishakemistoa ei löytynyt"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "nykyisen työhakemiston palauttaminen epäonnistui"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: ei ole tavallinen tiedosto"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: symbolisten linkkien muokkaus ei ole sallittua"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: tiedostojen muokkaus kirjoitettavassa hakemistossa ei ole sallittua"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s jätetty muuttamattomaksi"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s muuttamaton"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "muokkausistunnon sisältö jätetty kohteeseen %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: sisäinen virhe: polkujen pariton määrä"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: väliaikaistiedostojen luominen epäonnistui"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: signaali tappoi"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: tuntematon virhe %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "väliaikaistiedostojen kopioiminen takaisin niiden alkuperäiseen sijaintiin epäonnistui"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "joidenkin väliaikaistiedostojen kopioiminen takaisin niiden alkuperäiseen sijaintiin epäonnistui"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "käyttäjä-ID:n vaihtaminen rootiksi (%u) epäonnistui"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "lisäosavirhe: puuttuu sudoedit-tiedostoluettelo"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "kellon lukeminen epäonnistui"
@@ -1024,9 +1057,6 @@ msgstr "vakiosyötteen palauttaminen epäonnistui"
#~ msgid "ignoring duplicate policy plugin \"%s\" in %s, line %d"
#~ msgstr "ohitetaan käytäntölisäosan ”%s” kaksoiskappale tiedostossa %s, rivillä %d"
-#~ msgid "unable to get group vector"
-#~ msgstr "ei kyetä hakemaan ryhmävektoria"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "tuntematon uid-käyttäjätunniste %u: kuka olet?"
diff --git a/po/fr.mo b/po/fr.mo
index 083e81d53..eb5dd02cd 100644
--- a/po/fr.mo
+++ b/po/fr.mo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index b7e6ca410..63208f165 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,15 +1,15 @@
# Messages français pour sudo.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2021 Free Software Foundation, Inc.
# This file is put in the public domain.
# Todd C. Miller <Todd.Miller@courtesan.com>, 2011-2013
-# Frédéric Marchal <fmarchal@perso.be>, 2020
+# Frédéric Marchal <fmarchal@perso.be>, 2021
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-20 13:35+0200\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-04 13:03+0100\n"
"Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
"Language-Team: French <traduc@traduc.org>\n"
"Language: fr\n"
@@ -33,8 +33,8 @@ msgid "unable to restore registry"
msgstr "impossible de rétablir le registre"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -45,31 +45,33 @@ msgstr "impossible de rétablir le registre"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -79,26 +81,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "impossible d'allouer la mémoire"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "impossible d'ouvrir %s"
@@ -108,7 +111,7 @@ msgstr "impossible d'ouvrir %s"
msgid "unable to mkdir %s"
msgstr "impossible d'exécuter mkdir %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "impossible d'évaluer par stat() %s"
@@ -123,7 +126,7 @@ msgid "Unknown signal"
msgstr "Signal inconnu"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "valeur incorrecte"
@@ -135,66 +138,80 @@ msgstr "valeur trop grande"
msgid "value too small"
msgstr "valeur trop petite"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "valeur de chemin « %s » incorrecte dans %s, ligne %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "valeur « %2$s » incorrecte pour %1$s dans %3$s, ligne %4$u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "source de groupe « %s » non supportée dans %s, ligne %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "groupes max « %s » incorrects dans %s, ligne %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s n'est pas un fichier régulier"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s est la propriété du uid %u alors que ça devrait être %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s peut être écrit par tout le monde"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s peut être écrit par le groupe"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: tronquer %s à zéro octets ? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "n'écrase pas %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "impossible de lire depuis %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "impossible d'écrire dans %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: pas un fichier régulier"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: mauvais mode de fichier : 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "impossible de rétablir le répertoire de travail actuel"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -229,8 +246,8 @@ msgid "starting from %s"
msgstr "au départ de %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "impossible de spécifier le gestionnaire pour le signal %d"
@@ -255,14 +272,14 @@ msgstr "réponse inattendue sur le backchannel : %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "impossible d'ajouter l'événement à la queue"
@@ -270,8 +287,8 @@ msgstr "impossible d'ajouter l'événement à la queue"
msgid "unable to set controlling tty"
msgstr "impossible de choisir le tty de contrôle"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "impossible de créer le tube"
@@ -279,8 +296,8 @@ msgstr "impossible de créer le tube"
msgid "unable to receive message from parent"
msgstr "impossible de recevoir un message du parent"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "erreur de fork"
@@ -288,20 +305,20 @@ msgstr "erreur de fork"
msgid "unable to restore tty label"
msgstr "impossible de rétablir l'étiquette du tty"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "impossible d'exécuter %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "le greffon de règles a échoué lors de l'initialisation de la session"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "erreur dans la boucle des événements"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "impossible de rétablir le gestionnaire pour le signal %d"
@@ -310,36 +327,36 @@ msgstr "impossible de rétablir le gestionnaire pour le signal %d"
msgid "unable to allocate pty"
msgstr "impossible d'allouer le pty"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "erreur du greffon d'E/S"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "commande rejetée par le greffon d'E/S"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "l'enregistrement des erreurs est suspendu"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "erreur lors du changement de la taille de la fenêtre"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "impossible de créer des sockets"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "impossible d'envoyer le message au processus de monitoring"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "erreur dans %s, ligne %d lors du chargement du greffon « %s »"
@@ -359,46 +376,47 @@ msgstr "%s doit être la propriété du uid %d"
msgid "%s must be only be writable by owner"
msgstr "seul le propriétaire doit pouvoir écrire dans %s"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "ignore le greffon en double « %s » dans %s, ligne %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "impossible de charger %s : %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "impossible de trouver le symbole « %s » dans %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "greffon à la version majeure %d incompatible (%d attendu) trouvé dans %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ignore le greffon de règles « %s » dans %s, ligne %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "un seul greffon de règles peut être spécifié"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "type de greffon %d inconnu dans %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "le greffon de règles %s ne contient pas de méthode check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "erreur interne, débordement %s"
@@ -699,20 +717,40 @@ msgstr "impossible de changer le contexte exec en %s"
msgid "unable to set key creation context to %s"
msgstr "impossible de changer le contexte de création de clé en %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "exige au moins un argument"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "numéro de descripteur de fichier invalide: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "impossible d'exécuter %s comme un shell de login"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: l'édition de liens symboliques n'est pas permise"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: l'édition de fichiers dans un répertoire accessible en écriture n'est pas permis"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "contenu de la session d'édition laissé dans %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "impossible d'obtenir la liste des groupes"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -761,25 +799,25 @@ msgstr "setproject a échoué pour le projet « %s »"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "attention, l'assignement du contrôle de ressources a échoue pour le projet « %s »"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo version %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Options de configuration : %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "erreur fatale, impossible de charger les greffons"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "le greffon n'a pas retourné une commande à exécuter"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "mode sudo 0x%x inattendu"
@@ -793,168 +831,163 @@ msgstr "vous n'existez pas dans la base de données %s"
msgid "unable to determine tty"
msgstr "impossible de déterminer le tty"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s doit être la propriété du uid %d et avoir le bit setuid mis"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "le uid effectif n'est pas %d. Est-ce que %s est sur un système de fichiers avec l'option « nosuid » ou un système de fichiers NFS sans privilèges root ?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "le uid effectif n'est pas %d. Est-ce que sudo est installé setuid root ?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "impossible d'attribuer les ID de groupe supplémentaires"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "impossible de changer le gid effectif à runas gid %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "impossible de changer le gid à runas gid %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "condition de fin de l'enfant inconnue: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "impossible d'initialiser le greffon de règles"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "le greffon de règles %s n'a pas de méthode « check_policy »"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "commande rejetée par la politique"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "erreur du greffon de politique"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "le greffon de règles %s ne supporte pas les privilèges de listage"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "le greffon de règles %s ne supporte pas l'option -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "le greffon de règles %s ne supporte pas les options -k/-K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "erreur à l'initialisation du greffon E/S %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "erreur à l'initialisation du greffon d'audit %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: impossible d'enregistrer dans le journal l'événement d'erreur%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: impossible d'enregistrer dans le journal l'événement d'acceptation%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "erreur du greffon d'audit"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: impossible d'enregistrer dans le journal l'événement de rejet%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "erreur à l'initialisation du greffon d'approbation %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "commande rejetée par l'approbateur"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "erreur du greffon d'approbation"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "aucun répertoire temporaire est disponible en écriture"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "impossible de rétablir le répertoire de travail actuel"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: pas un fichier régulier"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: l'édition de liens symboliques n'est pas permise"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: l'édition de fichiers dans un répertoire accessible en écriture n'est pas permis"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s laissé tel quel"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s non modifié"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "contenu de la session d'édition laissé dans %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: erreur interne: nombre impaire de chemins"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: impossible de créer des fichiers temporaires"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: tué par un signal"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: erreur %d inconnue"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "impossible de copier les fichiers temporaires à leurs emplacements d'origine"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "impossible de copier quelques fichiers temporaires à leurs emplacements d'origine"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "impossible de changer le uid en root (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "erreur de greffon : liste de fichiers manquantes pour sudoedit"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "impossible de lire l'horloge"
@@ -1017,9 +1050,6 @@ msgstr "impossible de rétablir stdin"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "pas de tty présent et pas de programme askpass spécifié"
-#~ msgid "unable to get group vector"
-#~ msgstr "impossible d'obtenir le vecteur de groupes"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "uid %u inconnu : qui êtes-vous ?"
diff --git a/po/hr.mo b/po/hr.mo
index f547dd743..4f4507486 100644
--- a/po/hr.mo
+++ b/po/hr.mo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index e2ab45ab8..7fd61cfa3 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,13 +1,13 @@
# Translation of sudo to Croatian.
# This file is put in the public domain.
# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012, 2013.
-# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2017, 2018, 2019, 2020.
+# Božidar Putanec <bozidarp@yahoo.com>, 2016, 2017, 2018, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudo-1.9.3b1\n"
+"Project-Id-Version: sudo-1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-11-26 17:25-0800\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-04 18:40-0800\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
"Language: hr\n"
@@ -23,9 +23,7 @@ msgstr ""
#: lib/util/aix.c:89 lib/util/aix.c:169
msgid "unable to open userdb"
-msgstr ""
-"nije moguće otvoriti userdb (korisničku baza podataka)\n"
-"1234567890123456789012345678901234567890123456789012345678901234567890123456789"
+msgstr "nije moguće otvoriti userdb (korisničku baza podataka)"
#: lib/util/aix.c:224
#, c-format
@@ -37,8 +35,8 @@ msgid "unable to restore registry"
msgstr "nije moguće obnoviti registar"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -49,31 +47,33 @@ msgstr "nije moguće obnoviti registar"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -83,26 +83,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "nije moguće dodijeliti memoriju"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "nije moguće otvoriti %s"
@@ -112,7 +113,7 @@ msgstr "nije moguće otvoriti %s"
msgid "unable to mkdir %s"
msgstr "nije moguće izvršiti mkdir %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "nije moguće dobiti status od %s"
@@ -127,7 +128,7 @@ msgid "Unknown signal"
msgstr "Nepoznati signal"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "nevaljana vrijednost"
@@ -139,66 +140,80 @@ msgstr "veličina je prevelika"
msgid "value too small"
msgstr "veličina je premala"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "nevaljana Path vrijednost „%s“ u %s, redak %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "nevaljana vrijednost za %s „%s“ u %s, redak %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "nepodržani izvor grupe „%s“ u %s, redak %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "nevaljani maksimalni broj grupa „%s“ u %s, redak %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s nije obična datoteka"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "vlasnik %s je UID %u, a treba biti %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s može svatko mijenjati/pisati"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s može svaki član grupe mijenjati/pisati"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: skratiti %s na nula bajtova? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "ne piše preko %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "nije moguće pročitati %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "nije moguće pisati u %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: nije obična datoteka"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: loš datotečni način: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "nije moguće obnoviti trenutni radni direktorij"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -234,8 +249,8 @@ msgstr "počevši od %s"
# Handler, an asynchronous callback (computer programming) subroutine in computing
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "nije moguće postaviti rukovatelja za signal %d"
@@ -260,14 +275,14 @@ msgstr "neočekivana vrsta odgovora na povratnom kanalu: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "nije moguće dodati događaj u red čekanja"
@@ -275,8 +290,8 @@ msgstr "nije moguće dodati događaj u red čekanja"
msgid "unable to set controlling tty"
msgstr "nije moguće uspostaviti upravljački TTY"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "nije moguće napraviti cijev"
@@ -284,8 +299,8 @@ msgstr "nije moguće napraviti cijev"
msgid "unable to receive message from parent"
msgstr "nije moguće primiti poruku od pretka (roditelja)"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "nije moguće kreirati potomka (dijete)"
@@ -293,21 +308,21 @@ msgstr "nije moguće kreirati potomka (dijete)"
msgid "unable to restore tty label"
msgstr "nije moguće obnoviti TTY etiketu"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "nije moguće izvršiti %s"
# initialization > inicirati > dati/davati inicijativu, pobudu; pokrenuti/pokretati, započeti/započinjati
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "plugin s pravilima nije uspio pokrenuti inicijalizaciju sesije"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "greška u petlji događaja"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "nije moguće obnoviti rukovatelja za signal %d"
@@ -316,36 +331,36 @@ msgstr "nije moguće obnoviti rukovatelja za signal %d"
msgid "unable to allocate pty"
msgstr "nije moguće dodijeliti PTY"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "greška I/O plugina (plugin za U/I)"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "U/I plugin je odbio izvršiti naredbu"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "obustava evidentiranja greški"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "pogreška pri mijenjanju veličine prozora"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "nije moguće napraviti utičnice"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "nije moguće poslati poruku za praćenje procesa"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "greška u %s, redak %d pri učitavanju plugina „%s“"
@@ -365,46 +380,47 @@ msgstr "vlasnik %s mora biti UID %d"
msgid "%s must be only be writable by owner"
msgstr "%s za pisanje mora biti dostupan samo vlasniku"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "ignorira se duplikat plugina „%s“ u %s, redak %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "nije moguće učitati %s: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "nije moguće pronaći simbol „%s“ u %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "nekompatibilni plugin inačica %d (očekivana %d) pronađen u %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ignorira se plugin s pravilima „%s“ u %s, redak %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "smije se navesti samo jedan plugin s pravilima"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "nepoznata vrsta %d plugina pronađena u %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "plugin s pravilima %s ne sadrži metodu check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "**interna greška**, %s prelijevanje"
@@ -705,20 +721,42 @@ msgstr "nije moguće postaviti exec kontekst na %s"
msgid "unable to set key creation context to %s"
msgstr "nije moguće postaviti kontekst stvaranja ključa na %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "zahtijeva barem jedan argument"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "nevaljani broj deskriptora datoteke: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "nije moguće pokrenuti %s kao prijavnu ljusku"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: simboličke veze nije dopušteno redigirati"
+
+# writable> zapisiv, upisiv, u kojem je dopušteno pisati
+# http://hjp.znanje.hr/ > upisiv > koji se može upisati, koji ispunjava uvjete upisa
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: datoteke nije dopušteno redigirati u direktoriju koji dopušta pisanje"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "sadržaj sesije redigiranja je ostavljen u %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "nije moguće dobiti popis grupa"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -767,25 +805,25 @@ msgstr "neuspješna setproject() za projekt „%s“"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "upozorenje: nije uspjelo dodijeliti upravljanje resursima projekta „%s“"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo inačica %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Konfiguracijske opcije: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "kobna greška, nije moguće učitati plugine"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "plugin nije uzvratio naredbu za izvršiti"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "neočekivani sudo mȏd 0x%x"
@@ -799,170 +837,163 @@ msgstr "vas nema u %s bazi podataka"
msgid "unable to determine tty"
msgstr "nije moguće odrediti TTY"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "vlasnik %s mora biti UID %d i mora imati postavljeni setuid bit"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "efektivni UID nije %d; je li %s na datotečnom sustavu s postavljenom opcijom „nosuid“ ili NFS datotečnom sustavu bez root privilegija?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "efektivni UID nije %d; je li sudo instaliran sa setuid root?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "nije moguće postaviti ID dodatnih grupa"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "nije moguće postaviti efektivni GID na runas GID %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "nije moguće postaviti GID na runas GID %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "neočekivano stanje završetka potomka (dijete-procesa) : %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "nije moguće inicijalizirati plugin s pravilima"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "pluginu s pravilima %s nedostaje metoda „check_policy“"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "pravilnik (policy) je odbio izvršiti naredbu"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "greška plugina s pravilima (policy plugin)"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "plugin s pravilima %s ne podržava ispis ovlasti"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "plugin s pravilima %s ne podržava opciju -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "plugin s pravilima %s ne podržava -k/-K opcije"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "greška pri inicijalizaciji U/I plugina %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "greška pri inicijalizaciji plugina za reviziju %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: nije uspjelo zabilježiti pogrešku događaja%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: nije uspjelo zabilježiti događaj prihvaćanja%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "pogreška u pluginu za reviziju"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: nije uspjelo zabilježiti događaj odbijanja%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "greška pri inicijalizaciji plugina za odobrenje %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "odobravatelj je odbio izvršiti naredbu"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "greška plugina za odobravanje"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "nije pronađen privremeni direktorij u koji je moguće pisati"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "nije moguće obnoviti trenutni radni direktorij"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: nije obična datoteka"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: simboličke veze nije dopušteno redigirati"
-
-# writable> zapisiv, upisiv, u kojem je dopušteno pisati
-# http://hjp.znanje.hr/ > upisiv > koji se može upisati, koji ispunjava uvjete upisa
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: datoteke nije dopušteno redigirati u direktoriju koji dopušta pisanje"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s nije izmijenjeno"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s nije promijenjeno"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "sadržaj sesije redigiranja je ostavljen u %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: interna greška: neparni broj staza"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: nije moguće čitati privremenu datoteku"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: ubijen signalom"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: nepoznata greška: %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "nije moguće kopirati privremene datoteke u njihovu originalnu lokaciju"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "nije moguće kopirati neke od privremenih datoteka u njihovu originalnu lokaciju"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "nije moguće promijeniti UID na root (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "greška plugina: nedostaje popis datoteka za sudoedit"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "nije moguće pročitati vrijeme (clock)"
@@ -1025,9 +1056,6 @@ msgstr "nije moguće obnoviti stdin"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "nema TTY i nije specificiran askpass program"
-#~ msgid "unable to get group vector"
-#~ msgstr "nije moguće dobiti grupni vektor"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "nepoznat UID %u: tko ste vi?"
diff --git a/po/ja.mo b/po/ja.mo
index 8cc72c7c6..345c598c0 100644
--- a/po/ja.mo
+++ b/po/ja.mo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index 92fbd8fdc..1c969adb4 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -1,14 +1,14 @@
# Japanese messages for sudo
# This file is put in the public domain.
# Yasuaki Taniguchi <yasuakit@gmail.com>, 2011.
-# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2012, 2015, 2016, 2017, 2018, 2019, 2020.
+# Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2012, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-14 21:10+0900\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-07 22:44+0900\n"
"Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
"Language: ja\n"
@@ -18,7 +18,7 @@ msgstr ""
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.2.1\n"
-"X-Poedit-Basepath: sudo-1.9.3b1\n"
+"X-Poedit-Basepath: sudo-1.9.6b1\n"
"X-Poedit-SearchPath-0: .\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
@@ -35,8 +35,8 @@ msgid "unable to restore registry"
msgstr "レジストリーを復元できません"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -47,31 +47,33 @@ msgstr "レジストリーを復元できません"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -81,26 +83,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "メモリ割り当てを行えませんでした"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "%s を開けません"
@@ -110,7 +113,7 @@ msgstr "%s を開けません"
msgid "unable to mkdir %s"
msgstr "%s を mkdir できません"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "%s の状態取得 (stat) ができません"
@@ -125,7 +128,7 @@ msgid "Unknown signal"
msgstr "不明なシグナルです"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "無効な値"
@@ -137,66 +140,80 @@ msgstr "値が大き過ぎます"
msgid "value too small"
msgstr "値が小さ過ぎます"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "無効な Path の値 \"%s\" が %s の %u 行目 にあります"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "無効な %s の値 \"%s\" が %s の %u 行目 にあります"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "サポートしていないグループソース \"%s\" が %s の %u 行目で指定されています"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "無効な最大グループの値 \"%s\" が %s の %u 行目 にあります"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s は通常ファイルではありません"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s はユーザーID %u によって所有されています。これは %u であるべきです"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s は誰でも書き込み可能です"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s はグループのメンバーによる書き込みが可能です"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: %s をゼロバイトに切り詰めますか? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "%s を上書きしません"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "%s から読み込むことができません"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "%s へ書き込むことができません"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: 通常ファイルではありません"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: ファイルのモードが異常です: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "カレントディレクトリを復元できません"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -231,8 +248,8 @@ msgid "starting from %s"
msgstr "%s から始めます"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "シグナル %d のハンドラを設定できません"
@@ -257,14 +274,14 @@ msgstr "バックチャンネルに関する予期しないリプレイタイプ
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "キューにイベントを追加できません"
@@ -272,8 +289,8 @@ msgstr "キューにイベントを追加できません"
msgid "unable to set controlling tty"
msgstr "tty の制御設定ができません"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "パイプを作成できません"
@@ -281,8 +298,8 @@ msgstr "パイプを作成できません"
msgid "unable to receive message from parent"
msgstr "親からのメッセージを受け取ることができません"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "fork できません"
@@ -290,20 +307,20 @@ msgstr "fork できません"
msgid "unable to restore tty label"
msgstr "tty ラベルを復旧できません"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "%s を実行できません"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "ポリシープラグインがセッションの初期化に失敗しました"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "イベントループでエラーが発生しました"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "シグナル %d のハンドラを復元できません"
@@ -312,36 +329,36 @@ msgstr "シグナル %d のハンドラを復元できません"
msgid "unable to allocate pty"
msgstr "pty を割り当てられません"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "I/O プラグインエラー"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "I/O プラグインによりコマンドが拒否されました"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "エラーの記録が一時中断しています"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "ウィンドウサイズの変更でエラー"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "ソケットを作成できません"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "監視プロセスへメッセージを送ることができません"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "%s, %d 行目 プラグイン \"%s\" をロード中にエラーが発生しました"
@@ -361,46 +378,47 @@ msgstr "%s の所有者は uid %d でなければいけません"
msgid "%s must be only be writable by owner"
msgstr "%s は所有者のみ書き込み可能で無ければいけません"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "重複しているプラグイン \"%s\" を無視します。%s の %d 行目"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "%s をロードできません: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "シンボル \"%s\" が %s に見つかりません"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "互換性の無いポリシーメジャーバージョン %d (予期されるのは %d)が %s で見つかりました"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ポリシープラグイン \"%s\" を無視します。%s の %d 行目"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "1つのポリシープラグインのみ指定できます"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "不明なプラグインタイプ %d が %s で見つかりました"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "ポリシープラグイン %s には check_policy メソッドが含まれていません"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "内部エラー、 %s がオーバーフローしました"
@@ -701,20 +719,40 @@ msgstr "実行コンテキストを %s に設定できません"
msgid "unable to set key creation context to %s"
msgstr "キー作成コンテキストを %s へ設定できません"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "最低でも一つ以上おの引数が必要です"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "無効なファイル記述子の番号: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "%s をログインシェルとして実行できません"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: シンボリックリンクの編集は許可されていません"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: 書き込み可能なディレクトリ内のファイルの編集は許可されていません"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "編集セッションの内容が %s 内に残っています"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "グループリストを取得できません"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -763,25 +801,25 @@ msgstr "プロジェクト\"%s\" への setproject に失敗しました"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "警告、プロジェクト \"%s\" への資源制御割り当てに失敗しました"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo バージョン %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "configure オプション: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "致命的エラー、プラグインをロードできません"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "プラグインが実行するべきコマンドを返しませんでした"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "予期しない sudo のモード 0x%x です"
@@ -795,168 +833,163 @@ msgstr "あなたは %s データベースに存在しません"
msgid "unable to determine tty"
msgstr "tty を特定できません"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s は所有者が uid %d である必要があり、かつ setuid が設定されている必要があります"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "実効 uid が %d ではありません、%s は 'nosuid' が設定されたファイルシステムにあるか、root 権限のないNFSファイルシステムにあるのでは?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "実効 uid が %d ではありません、sudo は setuid root を設定してインストールされていますか?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "追加のグループIDを設定できません"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "実行時のグループID (gid) %u を実効グループIDに設定できません"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "実行時のグループID (gid) %u をグループIDに設定できません"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "予期しない子プロセスの終了コードです: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "ポリシープラグインを初期化できません"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "ポリシープラグイン %s には check_policy メソッドが含まれていません"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "ポリシーによりコマンドが拒否されました"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "ポリシープラグインエラー"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "ポリシープラグイン %s は権限の一覧表示をサポートしていません"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "ポリシープラグイン %s は -v オプションをサポートしません"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "ポリシープラグイン %s は -k/-K オプションをサポートしません"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "I/O プラグイン %s を初期化中にエラーが発生しました"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "認証プラグイン %s を初期化中にエラーが発生しました"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: ログにエラーイベントを書き込むことができません%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: ログに accept イベントを書き込むことができません%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "認証プラグインエラー"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: ログに reject イベントを書き込むことができません%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "承認プラグイン %s を初期化中にエラーが発生しました"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "承認者によりコマンドが拒否されました"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "承認プラグイン エラー"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "書き込み可能な一時ディレクトリが見つかりません"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "カレントディレクトリを復元できません"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: 通常ファイルではありません"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: シンボリックリンクの編集は許可されていません"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: 書き込み可能なディレクトリ内のファイルの編集は許可されていません"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s を修正しないままにします"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s を変更しません"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "編集セッションの内容が %s 内に残っています"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: 内部エラー: パスの数がおかしいです"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: 一時ファイルを作成することができません"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: シグナルにより kill されました"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: 不明なエラー %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "一時ファイルを元の場所に戻すことができません"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "一時ファイルのいくつかを元の場所に戻すことができません"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "ユーザーID (uid) を root (%u) に変更できません"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "プラグインエラー: sudoedit 用のファイル一覧がありません"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "時刻を読み込むことができません"
@@ -1019,9 +1052,6 @@ msgstr "標準入力を復元できません"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "端末 (tty) が存在せず、パスワードを尋ねる (askpass) プログラムが指定されていません"
-#~ msgid "unable to get group vector"
-#~ msgstr "グループベクトルを取得できません"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "不明なユーザーID %u です: 誰ですか?"
diff --git a/po/ko.mo b/po/ko.mo
index d10c0650f..37266a692 100644
--- a/po/ko.mo
+++ b/po/ko.mo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
index 7e2e4f45e..95c2ad4e4 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -1,14 +1,14 @@
# Korean translation for sudo
# This file is distributed under the same license as the sudo package.
# Todd C. Miller <Todd.Miller@courtesan.com>, 2011-2015
-# Seong-ho Cho <darkcircle.0426@gmail.com>, 2016-2020.
+# Seong-ho Cho <darkcircle.0426@gmail.com>, 2016-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-12-11 01:07+0900\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-04 10:38+0900\n"
"Last-Translator: Seong-ho Cho <darkcircle.0426@gmail.com>\n"
"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
"Language: ko\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.3.1\n"
+"X-Generator: Poedit 2.2.1\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
msgid "unable to open userdb"
@@ -33,8 +33,8 @@ msgid "unable to restore registry"
msgstr "레지스트리를 복원할 수 없습니다"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -45,31 +45,33 @@ msgstr "레지스트리를 복원할 수 없습니다"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -79,26 +81,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "메모리를 할당할 수 없습니다"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "%s을(를) 열 수 없습니다"
@@ -108,7 +111,7 @@ msgstr "%s을(를) 열 수 없습니다"
msgid "unable to mkdir %s"
msgstr "%s 디렉터리를 새로 만들 수 없습니다"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "%s의 상태를 가져올 수 없습니다"
@@ -123,7 +126,7 @@ msgid "Unknown signal"
msgstr "알 수 없는 시그널"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "잘못된 값"
@@ -135,66 +138,80 @@ msgstr "값이 너무 큽니다"
msgid "value too small"
msgstr "값이 너무 작습니다"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "%2$s의 %3$u번째 줄에 잘못된 경로 값 \"%1$s\""
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "%3$s의 %4$u번째 줄에 %1$s의 잘못된 값 \"%2$s\""
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "%2$s의 %3$u번째 줄에 지원하지 않는 그룹 원본 \"%1$s\""
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "%2$s의 %3$u번째 줄에 잘못된 최대 그룹 값 \"%1$s\""
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s은(는) 일반 파일이 아닙니다"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s은(는) %u uid에서 소유하고 있지만 %u uid가 소유해야 합니다"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s에 모두가 기록할 수 있습니다"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s에 그룹 구성원이 기록할 수 있습니다"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: %s 문자열을 0 바이트로 자릅니까? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "%s 덮어쓰지 않음"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "%s을(를) 읽을 수 없습니다"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "%s에 기록할 수 없습니다"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: 일반 파일 아님"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: 잘못된 파일 모드: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "현재 작업 디렉터리를 복원할 수 없습니다"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -229,8 +246,8 @@ msgid "starting from %s"
msgstr "%s에서 시작 중"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "%d 시그널의 핸들러를 설정할 수 없습니다"
@@ -255,14 +272,14 @@ msgstr "백 채널에 잘못된 응답 형식: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "큐에 이벤트를 추가할 수 없습니다"
@@ -270,8 +287,8 @@ msgstr "큐에 이벤트를 추가할 수 없습니다"
msgid "unable to set controlling tty"
msgstr "처리 tty를 설정할 수 없습니다"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "파이프를 만들 수 없습니다"
@@ -280,8 +297,8 @@ msgstr "파이프를 만들 수 없습니다"
msgid "unable to receive message from parent"
msgstr "상위로부터 메시지를 받을 수 없습니다"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "포킹할 수 없습니다"
@@ -289,20 +306,20 @@ msgstr "포킹할 수 없습니다"
msgid "unable to restore tty label"
msgstr "tty 레이블을 복원할 수 없습니다"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "%s을(를) 실행할 수 없습니다"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "정책 플러그인에서 세션 초기화에 실패했습니다"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "이벤트 루프에 오류"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "%d 시그널의 핸들러를 복원할 수 없습니다"
@@ -311,36 +328,36 @@ msgstr "%d 시그널의 핸들러를 복원할 수 없습니다"
msgid "unable to allocate pty"
msgstr "pty를 할당할 수 없습니다"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "입출력 플러그인 오류"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "입출력 플러그인에서 명령을 거부했습니다"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "오류 로깅 대기"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "윈도우 크기 변경 오류"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "소켓을 만들 수 없습니다"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "감사 프로세스에 메시지를 보낼 수 없습니다"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "%s의 %d번째 줄에서 \"%s\" 플러그인을 불러오는 중 오류"
@@ -360,46 +377,47 @@ msgstr "%s은(는) uid %d에서 소유해야 합니다"
msgid "%s must be only be writable by owner"
msgstr "%s은(는) 소유자만 기록할 수 있어야 합니다"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "%2$s의 %3$d번째 줄에서 \"%1$s\" 중복 플러그인 무시"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "%s을(를) 불러올 수 없습니다: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "%2$s에서 \"%1$s\" 심볼을 찾을 수 없습니다"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "%3$s에 주 버전이(%2$d을(를) 기대했지만) %1$d인 비호환 플러그인이 있습니다"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "%2$s의 %3$d번째 줄에서 \"%1$s\" 정책 플러그인 무시"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "단일 정책 플러그인을 지정하십시오"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "%2$s에 알 수 없는 정책 유형 %1$d이(가) 있습니다"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "%s 정책 플러그인에 check_policy 메서드가 없습니다"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "내부 오류, %s 오버플로우"
@@ -415,11 +433,11 @@ msgstr "-C의 인자 값은 3보다 크거나 같아야 합니다"
#: src/parse_args.c:552
msgid "you may not specify both the -i and -s options"
-msgstr "-i 와 -s 옵션을 함께 지정할 수 없습니다"
+msgstr "-i 옵션과 -s 옵션을 함께 지정할 수 없습니다"
#: src/parse_args.c:557
msgid "you may not specify both the -i and -E options"
-msgstr "-i 와 -E 옵션을 함께 지정할 수 없습니다"
+msgstr "-i 옵션과 -E 옵션을 함께 지정할 수 없습니다"
#: src/parse_args.c:567
msgid "the -E option is not valid in edit mode"
@@ -431,11 +449,11 @@ msgstr "편집 모드에서 환경 변수를 지정할 수 없습니다"
#: src/parse_args.c:580
msgid "the -U option may only be used with the -l option"
-msgstr "-U 옵션은 -l 옵션만 함께 사용할 수 있습니다"
+msgstr "-U 옵션에는 -l 옵션만 함께 쓸 수 있습니다"
#: src/parse_args.c:584
msgid "the -A and -S options may not be used together"
-msgstr "-A 와 -S 옵션을 함께 사용할 수 없습니다"
+msgstr "-A 옵션과 -S 옵션을 함께 쓸 수 없습니다"
#: src/parse_args.c:677
msgid "sudoedit is not supported on this platform"
@@ -700,20 +718,40 @@ msgstr "exec 컨텍스트를 %s(으)로 설정할 수 없습니다"
msgid "unable to set key creation context to %s"
msgstr "키 생성 컨텍스트를 %s(으)로 설정할 수 없습니다"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "최소한 하나의 인자가 필요합니다"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "잘못된 파일 서술자 번호: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "%s(을)를 로그인 쉘로 실행할 수 없습니다"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: 심볼릭 링크 편집을 허용하지 않습니다"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: 기록 가능한 디렉터리에서 파일 편집을 허용하지 않습니다"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "%s에 편집 세션 내용 남음"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "그룹 목록을 가져올 수 없습니다"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -762,25 +800,25 @@ msgstr "\"%s\" 프로젝트에서 setproject에 실패했습니다"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "경고! \"%s\" 프로젝트에 자원 처리 할당에 실패했습니다"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "sudo 버전 %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "설정 옵션: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "치명적인 오류. 플러그인을 불러올 수 없습니다"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "플러그인에서 실행할 명령을 반환하지 않았습니다"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "예상치 못한 sudo 모드 0x%x"
@@ -794,168 +832,163 @@ msgstr "%s 데이터베이스에 없는 사용자입니다"
msgid "unable to determine tty"
msgstr "tty를 지정할 수 없습니다"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s은(는) %d uid를 소유해야 하며 setuid 비트를 설정해야 합니다"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "%d은(는) 유효한 uid가 아닙니다. %s은(는) 'nosuid' 옵션을 설정한 파일 시스템이거나 루트 권한이 없는 NFS 파일 시스템입니까?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "%d은(는) 유효한 uid가 아닙니다. sudo에 setuid root를 설치했습니까?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "추가 그룹 ID를 설정할 수 없습니다"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "유효한 gid를 %u 실행 gid로 설정할 수 없습니다"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "gid를 실행 gid %u(으)로 설정할 수 없습니다"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "예상치 못한 하위 프로세스 중단 상태: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "정책 플러그인을 초기화할 수 없습니다"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "%s 정책 플러그인에 \"check_policy\" 메서드가 빠졌습니다"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "정책을 통해 명령을 거부 했습니다"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "정책 플러그인 오류"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "%s 정책 플러그인에서 권한 조회를 지원하지 않습니다"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "%s 정책 플러그인에서 -v 옵션을 지원하지 않습니다"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "%s 정책 플러그인에서 -k/-K 옵션을 지원하지 않습니다"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "%s 입출력 플러그인 초기화 오류"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "%s 감사 플러그인 초기화 오류"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: %s%s 오류 이벤트를 기록할 수 없습니다"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: %s%s 허용 이벤트를 기록할 수 없습니다"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "감사 플러그인 오류"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: %s%s 거부 이벤트를 기록할 수 없습니다"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "%s 승인 플러그인 초기화 오류"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "승인자가 명령을 거부했습니다"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "승인 플러그인 오류"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "기록 가능한 임시 디렉터리를 찾을 수 없습니다"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "현재 작업 디렉터리를 복원할 수 없습니다"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: 일반 파일 아님"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: 심볼릭 링크 편집을 허용하지 않습니다"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: 기록 가능한 디렉터리에서 파일 편집을 허용하지 않습니다"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s 수정하지 않은 상태로 남음"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s 바꾸지 않음"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "%s에 편집 세션 내용 남음"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: 내부 오류: 경로에 잘못된 파일"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: 임시 파일을 만들 수 없습니다"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: 시그널을 받아 죽음"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: 잘못된 오류 %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "원위치에 임시 파일을 복사할 수 없습니다"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "원 위치에 임시 파일 일부를 복사할 수 없습니다"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "uid를 루트로 바꿀 수 없습니다(%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "플러그인 오류: sudoedit에 파일 목록이 빠짐"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "클록을 읽을 수 없습니다"
@@ -1021,8 +1054,5 @@ msgstr "표준 입력을 복원할 수 없습니다"
#~ msgid "error reading from signal pipe"
#~ msgstr "시그널 파이프 읽기 오류"
-#~ msgid "unable to get group vector"
-#~ msgstr "그룹 벡터를 가져올 수 없습니다"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "알 수 없는 %u: 누구일까요?"
diff --git a/po/pl.mo b/po/pl.mo
index 63d3e534b..64223c40d 100644
--- a/po/pl.mo
+++ b/po/pl.mo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 739581aed..a9831dfe8 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,13 +1,13 @@
# Polish translation for sudo.
# This file is put in the public domain.
-# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2020.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2011-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-14 18:58+0200\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-03 20:38+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
"Language: pl\n"
@@ -30,8 +30,8 @@ msgid "unable to restore registry"
msgstr "nie udało się odtworzyć rejestru"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -42,31 +42,33 @@ msgstr "nie udało się odtworzyć rejestru"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -76,26 +78,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "nie udało się przydzielić pamięci"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "nie udało się otworzyć %s"
@@ -105,7 +108,7 @@ msgstr "nie udało się otworzyć %s"
msgid "unable to mkdir %s"
msgstr "nie udało się utworzyć katalogu %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "nie udało się wykonać stat na %s"
@@ -120,7 +123,7 @@ msgid "Unknown signal"
msgstr "Nieznany sygnał"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "błędna wartość"
@@ -132,66 +135,80 @@ msgstr "wartość zbyt duża"
msgid "value too small"
msgstr "wartość zbyt mała"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "błędna wartość Path \"%s\" w %s, w linii %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "błędna wartość opcji %s \"%s\" w %s, w linii %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "nieobsługiwane źródło grup \"%s\" w %s, w linii %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "błędna maksymalna liczba grup \"%s\" w %s, w linii %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s nie jest zwykłym plikiem"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "właścicielem %s jest uid %u, powinien być %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s jest zapisywalny dla świata"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s jest zapisywalny dla grupy"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: uciąć %s to zera bajtów? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "bez nadpisywania %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "nie można czytać z %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "nie można pisać do %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: nie jest zwykłym plikiem"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: błędny tryb pliku: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "nie udało się odtworzyć bieżącego kartalogu roboczego"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -226,8 +243,8 @@ msgid "starting from %s"
msgstr "zaczynając od %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "nie udało się ustawić procedury obsługi dla sygnału %d"
@@ -252,14 +269,14 @@ msgstr "nieoczekiwany typ odpowiedzi z kanału zwrotnego: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "nie udało się dodać zdarzenia do kolejki"
@@ -267,8 +284,8 @@ msgstr "nie udało się dodać zdarzenia do kolejki"
msgid "unable to set controlling tty"
msgstr "nie udało się ustawić sterującego tty"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "nie udało się utworzyć potoku"
@@ -276,8 +293,8 @@ msgstr "nie udało się utworzyć potoku"
msgid "unable to receive message from parent"
msgstr "nie udało się odebrać komunikatu od rodzica"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "nie udało się wykonać fork"
@@ -285,20 +302,20 @@ msgstr "nie udało się wykonać fork"
msgid "unable to restore tty label"
msgstr "nie udało się przywrócić etykiety tty"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "nie udało się wykonać %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "nie udało się zainicjować sesji przez wtyczkę polityki"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "błąd w pętli zdarzeń"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "nie udało się przywrócić procedury obsługi dla sygnału %d"
@@ -307,36 +324,36 @@ msgstr "nie udało się przywrócić procedury obsługi dla sygnału %d"
msgid "unable to allocate pty"
msgstr "nie udało się przydzielić pty"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "błąd wtyczki we/wy"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "polecenie odrzucone przez wtyczkę we/wy"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "błąd logowania odroczenia"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "błąd zmiany rozmiaru okna"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "nie udało się utworzyć gniazd"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "nie udało się wysłać komunikatu do procesu monitorującego"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "błąd w %s, w linii %d podczas wczytywania wtyczki \"%s\""
@@ -356,46 +373,47 @@ msgstr "właścicielem %s musi być uid %d"
msgid "%s must be only be writable by owner"
msgstr "prawo zapisu do %s może mieć tylko właściciel"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "zignotowano powtórzoną wtyczkę \"%s\" w %s, w linii %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "nie udało się załadować %s: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "nie udało się odnaleźć symbolu \"%s\" w %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "niezgodna główna wersja polityki %d (zamiast oczekiwanej %d) napotkana w %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "zignorowano wtyczkę polityki \"%s\" w %s, w linii %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "może być podana tylko jedna wtyczka polityki"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "nieznany typ wtyczki %d napotkany w %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "wtyczka polityki %s nie zawiera metody check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "błąd wewnętrzny, przepełnienie %s"
@@ -696,20 +714,40 @@ msgstr "nie udało się ustawić kontekstu wykonywania na %s"
msgid "unable to set key creation context to %s"
msgstr "nie udało się ustawić kontekstu tworzenia klucza na %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "wymagany jest przynajmniej jeden argument"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "błędny numer deskryptora pliku: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "nie udało się uruchomić %s jako powłoki logowania"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: edycja dowiązań symbolicznych nie jest dozwolona"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: edycja plików w katalogu zapisywalnym nie jest dozwolona"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "zawartość sesji edycji pozostawiono w %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "nie udało się uzyskać listy grup"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -758,25 +796,25 @@ msgstr "setproject dla projektu \"%s\" nie powiodło się"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "uwaga: przypisanie kontroli zasobów dla projektu \"%s\" nie powiodło się"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo wersja %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Opcje konfiguracji: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "błąd krytyczny, nie udało się załadować wtyczek"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "wtyczka nie zwróciła polecenia do wykonania"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "nieoczekiwany tryb sudo 0x%x"
@@ -790,168 +828,163 @@ msgstr "nie istniejesz w bazie danych %s"
msgid "unable to determine tty"
msgstr "nie udało się określić tty"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s musi mieć uid %d jako właściciela oraz ustawiony bit setuid"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "efektywny uid nie wynosi %d, czy %s jest na systemie plików z opcją 'nosuid' albo systemie plików NFS bez uprawnień roota?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "efektywny uid nie wynosi %d, czy sudo jest zainstalowane z setuid root?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "nie udało się ustawić ID dodatkowych grup"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "nie udało się ustawić efektywnego gid-a w celu działania jako gid %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "nie udało się ustawić gid-a w celu działania jako gid %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "nieoczekiwane zakończenie procesu potomnego: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "nie udało się zainicjować wtyczki polityki"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "wtyczka polityki %s nie zawiera metody \"check_policy\""
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "polecenie odrzucone przez politykę"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "błąd wtyczki polityki"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "wtyczka polityki %s nie obsługuje wypisywania uprawnień"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "wtyczka polityki %s nie obsługuje opcji -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "wtyczka polityki %s nie obsługuje opcji -k/-K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "błąd inicjalizacji wtyczki we/wy %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "błąd inicjowania wtyczki audytu %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: nie udało się zalogować zdarzenia błędu%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: nie udało się zalogować zdarzenia akceptacji%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "błąd wtyczki audytu"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: nie udało się zalogować zdarzenia odrzucenia%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "błąd inicjowania wtyczki zgody %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "polecenie odrzucone przez wtyczkę zgody"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "błąd wtyczki zgody"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "nie znaleziono katalogu tymczasowego z prawem zapisu"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "nie udało się odtworzyć bieżącego kartalogu roboczego"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: nie jest zwykłym plikiem"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: edycja dowiązań symbolicznych nie jest dozwolona"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: edycja plików w katalogu zapisywalnym nie jest dozwolona"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "pozostawiono bez zmian: %s"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "nie zmieniono: %s"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "zawartość sesji edycji pozostawiono w %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: błąd wewnętrzny: nieparzysta liczba ścieżek"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: nie udało się utworzyć plików tymczasowych"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: zabito sygnałem"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: nieznany błąd %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "nie udało się skopiować plików tymczasowych z powrotem w ich oryginalne miejsce"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "nie udało się skopiować części plików tymczasowych z powrotem w ich oryginalne miejsce"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "nie udało się zmienić uid-a na roota (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "błąd wtyczki: brak listy plików dla sudoedit"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "nie udało się odczytać zegara"
diff --git a/po/pt.mo b/po/pt.mo
index e499d9633..881eda544 100644
--- a/po/pt.mo
+++ b/po/pt.mo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index 3669492ce..fef1f88ea 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,14 +1,14 @@
# Portuguese (Portugal) translations for the sudo package
# This file is distributed under the same license as the sudo package.
# Todd C. Miller <Todd.Miller@sudo.ws>, 2011-2016
-# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020.
+# Pedro Albuquerque <pmra@protonmail.com>, 2018, 2019, 2020, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo-1.9.3b1\n"
+"Project-Id-Version: sudo-1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-15 06:40+0100\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-04 08:02+0000\n"
"Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
"Language: pt\n"
@@ -16,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Geany / PoHelper 1.36\n"
+"X-Generator: Geany / PoHelper 1.37\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
@@ -33,8 +33,8 @@ msgid "unable to restore registry"
msgstr "impossível restaurar o registo"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -45,31 +45,33 @@ msgstr "impossível restaurar o registo"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -79,26 +81,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "impossível alocar memória"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "impossível abrir %s"
@@ -108,7 +111,7 @@ msgstr "impossível abrir %s"
msgid "unable to mkdir %s"
msgstr "impossível executar mkdir %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "impossível obter informações de %s"
@@ -123,7 +126,7 @@ msgid "Unknown signal"
msgstr "Sinal desconhecido"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "valor inválido"
@@ -135,66 +138,80 @@ msgstr "valor muito grande"
msgid "value too small"
msgstr "valor muito pequeno"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "valor de caminho inválido \"%s\" em %s, linha %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "valor inválido %s \"%s\" em %s, linha %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "fonte de grupo não suportada \"%s\" em %s, linna %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "máximo de grupos inválido \"%s\" em %s, linha %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s não é um ficheiro normal"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s é propriedade de uid %u, deveria ser %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s é escrito universalmente"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s é escrito pelo grupo"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: truncar %s para zero bytes? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "não sobrescrever %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "impossível ler de %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "impossível escrever em %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s não é um ficheiro normal"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: modo de ficheiro errado: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "impossível restaurar pasta de trabalho actual"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -229,8 +246,8 @@ msgid "starting from %s"
msgstr "começando em %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "impossível definir gestor para sinal %d"
@@ -255,14 +272,14 @@ msgstr "tipo de resposta inesperada no canal secundário: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "impossível adicionar evento à fila"
@@ -270,8 +287,8 @@ msgstr "impossível adicionar evento à fila"
msgid "unable to set controlling tty"
msgstr "impossível definir tty de controlo"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "impossível criar túnel"
@@ -279,8 +296,8 @@ msgstr "impossível criar túnel"
msgid "unable to receive message from parent"
msgstr "impossível receber mensagem de pai"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "impossível bifurcar"
@@ -288,20 +305,20 @@ msgstr "impossível bifurcar"
msgid "unable to restore tty label"
msgstr "impossível restaurar rótulo tty"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "impossível executar %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "a extensão de política falhou a inicialização de sessão"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "erro em ciclo de evento"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "impossível restaurar gestor para o sinal %d"
@@ -310,36 +327,36 @@ msgstr "impossível restaurar gestor para o sinal %d"
msgid "unable to allocate pty"
msgstr "impossível alocar pty"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "Erro da extensão E/S"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "comando rejeitado pela extensão E/S"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "erro ao registar suspensão"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "erro ao alterar o tamanho da janela"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "impossível criar sockets"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "impossível enviar mensagem para monitorizar processo"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "erro em %s, linha %d ao carregar a extensão \"%s\""
@@ -359,46 +376,47 @@ msgstr "%s tem de ser propriedade de uid %d"
msgid "%s must be only be writable by owner"
msgstr "%s só pode ter permissão de escrita para o dono"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "a ignorar extensão duplicada \"%s\" em %s, linha %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "impossível carregar %s: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "impossível encontrar símbolo \"%s\" em %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "versão principal de extensão %d incompatível (esperada %d) encontrada em %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "a ignorar extensão de política \"%s\" em %s, linha %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "só pode especificar um tipo de extensão de política"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "tipo de extensão %d desconhecida encontrada em %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "extensão de política %s não inclui um método check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "erro interno, transporte %s"
@@ -699,20 +717,40 @@ msgstr "impossível definir contexto exec para %s"
msgid "unable to set key creation context to %s"
msgstr "impossível definir contexto de criação de chave para %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "requer pelo menos um argumento"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "número de descritor de ficheiro inválido: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "impossível executar %s como shell de sessão"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: não é permitido editar ligações simbólicas"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: não é permitido editar ficheiros numa pasta onde se pode escrever"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "conteúdo da sessão de edição deixados em %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "impossível obter lista de grupo"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -761,25 +799,25 @@ msgstr "falha setproject para o projecto \"%s\""
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "aviso: falha na atribuição de controlo de recursos para o projecto \"%s\""
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo versão %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Opções de configuração: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "erro fatal, impossível carregar extensões"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "a extensão não devolveu um comando a executar"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "modo sudo 0x%x inesperado"
@@ -793,168 +831,163 @@ msgstr "utilizador não existente na base de dados %s"
msgid "unable to determine tty"
msgstr "impossível determinar tty"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s tem ser propriedade de uid %d e ter o bit setuid definido"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "a uid efectiva não é %d, é %s num sistema de ficheiros com a opção 'nosuid' definida ou um sistema de ficheiros NFS sem privilégios root?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "a uid efectiva não é %d, tem sudo instalado com setuid root?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "impossível definir IDs de grupo suplementares"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "impossível definir gid efectiva para gid runas %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "impossível definir gid para gid runas %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "condição de terminação de filho inesperada: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "impossível inicializar a extensão de política"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "a extensão de política %s tem o método \"check_policy\" em falta"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "cpmando rejeitado pela política"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "erro da extensão de política"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "a extensão de política %s não suporta privilégios de listagem"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "a extensão de política %s não suporta a opção -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "a extensão de política %s não suporta as opções -k/-K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "erro ao inicializar a extensão E/S %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "erro ao inicializar a extensão de auditoria %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: impossível registar evento%s%s de erro"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: impossível registar evento%s%s de aceitação"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "erro da extensão de auditoria"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: impossível registar evento%s%s de rejeição"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "erro ao inicializar a extensão de aprovação %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "comando rejeitado pelo aprovador"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "erro da extensão de aprovação"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "sem pasta temporária onde possa escrever"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "impossível restaurar pasta de trabalho actual"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s não é um ficheiro normal"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: não é permitido editar ligações simbólicas"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: não é permitido editar ficheiros numa pasta onde se pode escrever"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s deixado sem alterações"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s não alterado"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "conteúdo da sessão de edição deixados em %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: erro interno: número de caminhos ímpar"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: impossível criar ficheiros temporários"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: morto por um sinal"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: erro %d desconhecido"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "impossível copiar ficheiros temporários de volta à localização original"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "impossível copiar alguns ficheiros temporários de volta à localização original"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "impossível alterar uid para root (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "erro de extensão: lista de ficheiros para sudoedit em falta"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "impossível ler o relógio"
@@ -1017,8 +1050,5 @@ msgstr "impossível restaurar stdin"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "sem tty presente e sem programa askpass especificado"
-#~ msgid "unable to get group vector"
-#~ msgstr "impossível obter vector de grupo"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "uid %u desconhecida: quem é?"
diff --git a/po/pt_BR.mo b/po/pt_BR.mo
index bf5a18702..93c8d7c5c 100644
--- a/po/pt_BR.mo
+++ b/po/pt_BR.mo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 0413716bf..d93507ed9 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,15 +1,15 @@
# Brazilian Portuguese translation for sudo package.
# Traduções em português brasileiro para o pacote sudo.
-# Copyright (C) 2020 Free Software Foundation, Inc.
+# Copyright (C) 2021 Free Software Foundation, Inc.
# This file is distributed under the same license as the sudo package.
-# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2020.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-14 06:42-0300\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-04 04:47-0300\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n"
"Language: pt_BR\n"
@@ -34,8 +34,8 @@ msgid "unable to restore registry"
msgstr "não foi possível restaurar registro"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -46,31 +46,33 @@ msgstr "não foi possível restaurar registro"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -80,26 +82,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "não foi possível alocar memória"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "não foi possível abrir %s"
@@ -109,7 +112,7 @@ msgstr "não foi possível abrir %s"
msgid "unable to mkdir %s"
msgstr "não foi possível criar diretório %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "não foi possível obter o estado de %s"
@@ -124,7 +127,7 @@ msgid "Unknown signal"
msgstr "Sinal desconhecido"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "valor inválido"
@@ -136,66 +139,80 @@ msgstr "valor grande demais"
msgid "value too small"
msgstr "valor pequeno demais"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "Path inválido com valor \"%s\" em %s, linha %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "Valor inválido para %s \"%s\" em %s, linha %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "fonte de grupo sem suporte \"%s\" em %s, linha %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "máximo de grupos inválido \"%s\" em %s, linha %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s não é um arquivo comum"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s tem como dono o uid %u, deveria ser %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s é gravável globalmente"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s é gravável pelo grupo"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: truncar %s para zero bytes? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "não vou sobrescrever %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "não foi possível ler de %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "não foi possível gravar em %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: não é um arquivo comum"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: mode inválido de arquivo: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "não foi possível restaurar o diretório de trabalho atual"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -230,8 +247,8 @@ msgid "starting from %s"
msgstr "iniciando a partir de %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "não foi possível definir manipulador para sinal %d"
@@ -256,14 +273,14 @@ msgstr "tipo de resposta inesperada no canal de retorno: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "não foi possível adicionar um evento à fila"
@@ -271,8 +288,8 @@ msgstr "não foi possível adicionar um evento à fila"
msgid "unable to set controlling tty"
msgstr "não foi possível definir tty de controle"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "não foi possível criar um encadeamento (pipe)"
@@ -280,8 +297,8 @@ msgstr "não foi possível criar um encadeamento (pipe)"
msgid "unable to receive message from parent"
msgstr "não foi possível receber mensagem de pai"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "não foi possível fazer fork"
@@ -289,20 +306,20 @@ msgstr "não foi possível fazer fork"
msgid "unable to restore tty label"
msgstr "não foi possível restaurar rótulo de tty"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "não foi possível executar %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "plug-in de política falhou ao inicializar da sessão"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "erro em loop de evento"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "não foi possível restaurar manipulador para sinal %d"
@@ -311,36 +328,36 @@ msgstr "não foi possível restaurar manipulador para sinal %d"
msgid "unable to allocate pty"
msgstr "não foi possível alocar pty"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "erro no plug-in de E/S"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "comando rejeitado pelo plug-in de E/S"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "erro a registrar a suspensão"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "erro ao alterar o tamanho da janela"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "não foi possível criar soquetes"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "não foi possível enviar mensagem para monitorar processo"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "erro em %s, linha %d ao carregar plug-in \"%s\""
@@ -360,46 +377,47 @@ msgstr "%s deve ter como dono o uid %d"
msgid "%s must be only be writable by owner"
msgstr "%s deve ser gravável apenas pelo dono"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "ignorando plug-in \"%s\" duplicado em %s, linha %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "não foi possível carregar %s: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "não foi possível localizar símbolo \"%s\" em %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "versão maior %d do plug-in incompatível (esperava %d) localizada em %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ignorando plug-in de política \"%s\" em %s, linha %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "apenas um plug-in de política pode ser especificado"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "tipo de plug-in %d desconhecido localizado em %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "plug-in de política %s não inclui um método de check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "erro interno, estouro de pilha de %s"
@@ -701,20 +719,40 @@ msgstr "não foi possível definir contexto de exec de %s"
msgid "unable to set key creation context to %s"
msgstr "não foi possível definir contexto de criação de chave para %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "requer ao menos um argumento"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "número de descritor de arquivos inválido: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "não foi possível executar %s como shell de login"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: edição de links simbólicos não é permitida"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: edição de arquivos em um diretório gravável não é permitida"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "conteúdo da sessão de edição deixado em %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "não foi possível obter lista de grupos"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -763,25 +801,25 @@ msgstr "setproject falhou para o projeto \"%s\""
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "aviso, atribuição de controle de recursos falhou para o projeto \"%s\""
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo versão %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Opções de configuração: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "erro fatal, não foi possível carregar os plug-ins"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "o plug-in não retornou um comando para ser executado"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "modo de sudo inesperado 0x%x"
@@ -795,168 +833,163 @@ msgstr "você não existe no banco de dados %s"
msgid "unable to determine tty"
msgstr "não foi possível determinar o tty"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s deve ter como dono o uid %d e tem definido o bit setuid"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "uid efetivo não é %d, é %s em um sistema de arquivos com a opção \"nosuid\" defina ou um sistema de arquivos NFS sem privilégios de root?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "uid efetivo não é %d, sudo está instalado em uma raiz com setuid?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "não foi possível definir IDs de grupo suplementares"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "não foi possível definir gid efetivo para executar como gid %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "não foi possível definir gid para executar como gid %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "condição inesperada de término de filho: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "não foi possível inicializar plug-in de política"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "plug-in de política %s é sem o método \"check_policy\""
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "comando rejeitado pela política"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "erro de plug-in de política"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "plug-in de política %s não tem suporte a listagem de privilégios"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "plug-in de política %s não tem suporte à opção -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "plug-in de política %s não tem suporte às opções -k/-K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "erro ao inicializar o plug-in de E/S %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "erro ao inicializar o plug-in de auditoria %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: não foi possível registrar evento de erro%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: não foi possível registrar evento de aceite%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "erro no plug-in de auditoria"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: não foi possível registrar evento de rejeição%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "erro ao inicializar o plug-in de aprovação %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "comando rejeitado pelo aprovador"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "erro no plug-in de aprovação"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "nenhum diretório temporário gravável encontrado"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "não foi possível restaurar o diretório de trabalho atual"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: não é um arquivo comum"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: edição de links simbólicos não é permitida"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: edição de arquivos em um diretório gravável não é permitida"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s não foi modificado"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s sem alteração"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "conteúdo da sessão de edição deixado em %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: erro interno: número ímpar de caminhos"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: não foi possível criar arquivos temporários"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: morto por um sinal"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: erro desconhecido: %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "não foi possível copiar arquivos temporários de volta para sua localização original"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "não foi possível copiar alguns dos arquivos temporários de volta para sua localização original"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "não foi possível alterar uid de root (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "erro no plug-in: faltando lista de arquivo para sudoedit"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "não foi possível ler o relógio"
@@ -1019,9 +1052,6 @@ msgstr "não foi possível restaurar a entrada padrão"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "nenhum tty presente e nenhum programa de askpass especificado"
-#~ msgid "unable to get group vector"
-#~ msgstr "não foi possível obter vetor de grupos"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "uid desconhecido %u: quem é você?"
diff --git a/po/tr.mo b/po/tr.mo
index ed5368bd0..1904f040b 100644
--- a/po/tr.mo
+++ b/po/tr.mo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 9a5d8c3fd..990f32676 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -1,13 +1,13 @@
# This file is put in the public domain.
# This file is distributed under the same license as the sudo package.
# Volkan Gezer <vlkngzr@gmail.com>, 2013, 2015.
-# Mehmet Kececi <mkececi@mehmetkececi.com>, 2016, 2017, 2018, 2019, 2020.
+# Mehmet Kececi <mkececi@mehmetkececi.com>, 2016, 2017, 2018, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-14 14:10+0300\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-08 11:10+0300\n"
"Last-Translator: Mehmet Kececi <mkececi@mehmetkececi.com>\n"
"Language-Team: Turkish <gnome-turk@gnome.org>\n"
"Language: tr\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 2.4.2\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
@@ -32,8 +32,8 @@ msgid "unable to restore registry"
msgstr "kayıt geri yüklenemiyor"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -44,31 +44,33 @@ msgstr "kayıt geri yüklenemiyor"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -78,26 +80,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "bellek ayırma başarısız"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "%s açılamıyor"
@@ -107,7 +110,7 @@ msgstr "%s açılamıyor"
msgid "unable to mkdir %s"
msgstr "mkdir %s için olanaksız"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "%s durumlanamıyor"
@@ -122,7 +125,7 @@ msgid "Unknown signal"
msgstr "Bilinmeyen sinyal"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "geçersiz değer"
@@ -134,66 +137,80 @@ msgstr "değer çok büyük"
msgid "value too small"
msgstr "değer çok küçük"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "geçersiz Yol değeri %s içinde \"%s\", satır %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "%s \"%s\" için geçersiz değer, %s içinde, satır %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "\"%s\" desteklenmeyen grup kaynağı, %s içinde, satır %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "`\"%s\" geçersiz azami grubu, %s içinde, satır %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s düzenli bir dosya değil"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s, %u kullanıcı kimliği tarafından sahiplenmiş, %u olmalı"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s genel yazılabilir"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s grup yazılabilir"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: %s sıfır bayta indirilsin mi? (e/h) [h] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "%s üzerine yazılmıyor"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "%s öğesinden okunamıyor"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "%s dosyasına yazılamıyor"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: düzenli bir dosya değil"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: bozuk dosya modu: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "geçerli çalışma klasörü geri yüklenemiyor"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -228,8 +245,8 @@ msgid "starting from %s"
msgstr "%s'den başlayarak"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "sinyal %d için işleyici ayarlanamıyor"
@@ -254,14 +271,14 @@ msgstr "backchannel'da beklenmeyen yanıt türü: %d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "olay kuyruğa eklenemedi"
@@ -269,8 +286,8 @@ msgstr "olay kuyruğa eklenemedi"
msgid "unable to set controlling tty"
msgstr "tty denetleme ayarlaması başarısız"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "iletişim tüneli oluşturulamıyor"
@@ -278,8 +295,8 @@ msgstr "iletişim tüneli oluşturulamıyor"
msgid "unable to receive message from parent"
msgstr "ebeveynden mesaj alamıyor"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "çatallanamıyor"
@@ -287,20 +304,20 @@ msgstr "çatallanamıyor"
msgid "unable to restore tty label"
msgstr "tty etiketi geri yüklenemiyor"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "%s çalıştırılamıyor"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "oturum başlatma için ilke eklentisi başarısız"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "olay döngüsünde hata"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "sinyal %d için işleyici geri yüklenemiyor"
@@ -309,36 +326,36 @@ msgstr "sinyal %d için işleyici geri yüklenemiyor"
msgid "unable to allocate pty"
msgstr "pty ayırma başarısız"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "G/Ç eklenti hatası"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "komut G/Ç eklentisi tarafından reddedildi"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "günlüğü askıya alma hatası"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "pencere boyutunu değiştirme hatası"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "soket oluşturulamıyor"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "süreci izlemek için mesaj gönderilemiyor"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "\"%s\" eklentisi yüklenirken satır %d, %s içerisinde hata"
@@ -358,46 +375,47 @@ msgstr "%s, %d kullanıcı kimliği tarafından sahiplenmeli"
msgid "%s must be only be writable by owner"
msgstr "%s sadece sahibi tarafından yazılabilir olmalı"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "%s içinde \"%s\" yinelenen eklentisini yok sayılıyor, %d satırı"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "%s yüklenemedi: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "%s içerisinde \"%s\" sembolü bulunamıyor"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "uyumsuz temel ilke sürümü %d bulundu (beklenen %d) %s içerisinde"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "\"%s\" ilke eklentisi ihmal ediliyor, %s içinde, satır %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "sadece tek ilke eklentisi belirtilebilir"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "bilinmeyen eklenti türü %d %s içinde bulundu"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "%s ilke eklentisi, bir check_policy yöntemi içermiyor"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "dahili hata, %s taşması"
@@ -698,20 +716,40 @@ msgstr "%s için exec bağlamı ayarlanamıyor"
msgid "unable to set key creation context to %s"
msgstr "%s için anahtar oluşturma bağlamı ayarlanamıyor"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "en az bir argüman gerektirir"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "geçersiz dosya tanımlayıcı sayısı: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "bir oturum açma kabuğu gibi %s çalıştırılamıyor"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: sembolik bağlantı düzenlemesine izin verilmemiştir"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: yazılabilir klasördeki düzenleme dosyalarına izin verilmemiştir"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "düzenleme oturumu içerikleri %s içinde bırakıldı"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "grup listesi alınamıyor"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -760,25 +798,25 @@ msgstr "\"%s\" projesi için setproject başarısız"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "uyarı, \"%s\" projesi için kaynak denetim ataması başarısız"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo sürüm %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Yapılandırma seçenekleri: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "ölümcül hata, eklentiler yüklenemiyor"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "eklenti çalıştırmak için bir komut döndürmedi"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "beklenmeyen 0x%x sudo kipi"
@@ -792,168 +830,163 @@ msgstr "sen %s veritabanında yoksun"
msgid "unable to determine tty"
msgstr "tty belirlenemiyor"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s, %d kullanıcı kimliği tarafından sahiplenmeli ve setuid biti ayarlanmış olmalı"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "etkin kullanıcı kimliği %d değil, %s 'nosuid' seçeneği ayarlanmış bir dosya sisteminde veya yetkisiz haklara sahip bir NFS dosya sisteminde mi?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "etkin kullanıcı kimliği %d değil, sudo setuid root ile mi yüklendi?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "ek grup kimlikleri ayarlanamıyor"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "etkin grup kimliği, runas gid %u olarak ayarlanamıyor"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "grup kimliği, runas gid %u olarak ayarlanamıyor"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "beklenmeyen alt sonlandırma şartı: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "ilke eklentisi başlatılamıyor"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "%s ilke eklentisi, bir \"check_policy\" yöntemi içermiyor"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "komut politika tarafından reddedildi"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "politika eklentisi hatası"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "%s ilke eklentisi listeleme yetkilerini desteklemiyor"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "%s ilke eklentisi -v seçeneğini desteklemiyor"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "%s ilke eklentisi -k/-K seçeneklerini desteklemiyor"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "başlatma hatası G/Ç eklentisi %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "başlatma hatası I/O eklentisi %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: hata etkinlik kaydı yüklenemiyor%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: kabul etkinlik kaydı yüklenemiyor%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "denetim eklentisi hatası"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: reddetme etkinlik kaydı yüklenemiyor%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "onay eklentisini %s başlatma hatası"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "onaylayan tarafından komut reddedildi"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "onay eklentisi hatası"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "yazılabilir geçici dizin bulunamadı"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "geçerli çalışma klasörü geri yüklenemiyor"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: düzenli bir dosya değil"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: sembolik bağlantı düzenlemesine izin verilmemiştir"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: yazılabilir klasördeki düzenleme dosyalarına izin verilmemiştir"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s düzenlenmemiş olarak bırakıldı"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s değiştirilmemiş"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "düzenleme oturumu içerikleri %s içinde bırakıldı"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: iç hata: yolların tek sayısı"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: geçici dosyalar oluşturulamıyor"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: bir sinyal tarafından ortadan kaldırıldı"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: bilinmeyen hata %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "geçici dosyalar onların özgün konumlarına kopyalanamıyor"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "bazı geçici dosyalar onların özgün konumlarına kopyalanamıyor"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "kullanıcı kimliği yetkili (%u) olarak değiştirilemiyor"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "eklenti hatası: sudoedit için eksik dosya listesi"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "saat okunamıyor"
@@ -1016,9 +1049,6 @@ msgstr "stdin geri yüklenemiyor"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "tty bulunmuyor ve askpass programı belirtilmemiş"
-#~ msgid "unable to get group vector"
-#~ msgstr "grup vektörü alınamıyor"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "bilinmeyen kullanıcı kimliği %u: kimsiniz?"
diff --git a/po/uk.mo b/po/uk.mo
index 71a0076e8..325836b74 100644
--- a/po/uk.mo
+++ b/po/uk.mo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index c761b9a0b..36e6331c1 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -1,13 +1,13 @@
# Ukrainian translation for sudo.
# This file is put in the public domain.
#
-# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-14 11:44+0300\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-03 20:33+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
"Language: uk\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Lokalize 20.03.70\n"
+"X-Generator: Lokalize 20.11.70\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
@@ -32,8 +32,8 @@ msgid "unable to restore registry"
msgstr "не вдалося відновити регістр"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -44,31 +44,33 @@ msgstr "не вдалося відновити регістр"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -78,26 +80,27 @@ msgstr "%s: %s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "не вдалося отримати потрібний об’єм пам’яті"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "не вдалося відкрити %s"
@@ -107,7 +110,7 @@ msgstr "не вдалося відкрити %s"
msgid "unable to mkdir %s"
msgstr "не вдалося створити каталог %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "не вдалося виконати stat для %s"
@@ -122,7 +125,7 @@ msgid "Unknown signal"
msgstr "Невідомий сигнал"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "некоректне значення"
@@ -134,66 +137,80 @@ msgstr "надто велике значення"
msgid "value too small"
msgstr "надто мале значення"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "некоректне значення Path, «%s», у %s, рядок %u"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "некоректне значення %s, «%s», у %s, рядок %u"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "непідтримуване джерело групи, «%s», у %s, рядок %u"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "некоректна максимальна кількість груп, «%s», у %s, рядок %u"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s не є звичайним файлом"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s належить uid %u, має належати %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "Запис до «%s» можливий для довільного користувача"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "Запис до «%s» може здійснювати будь-який користувач з групи"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s: обрізати %s до нуля байтів? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "не перезаписуємо %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "не вдалося виконати читання з %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "не вдалося виконати запис до %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: не є звичайним файлом"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s: помилковий режим доступу до файла: 0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "не вдалося відновити поточний робочий каталог"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -228,8 +245,8 @@ msgid "starting from %s"
msgstr "починаючи з %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "не вдалося встановити обробник для сигналу %d"
@@ -254,14 +271,14 @@ msgstr "неочікуваний тип відповіді на зворотно
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "не вдалося додати подію до черги обробки"
@@ -269,8 +286,8 @@ msgstr "не вдалося додати подію до черги обробк
msgid "unable to set controlling tty"
msgstr "не вдалося встановити tty для керування"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "не вдалося створити канал"
@@ -278,8 +295,8 @@ msgstr "не вдалося створити канал"
msgid "unable to receive message from parent"
msgstr "не вдалося отримати повідомлення від батьківського процесу"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "не вдалося створити відгалуження"
@@ -287,20 +304,20 @@ msgstr "не вдалося створити відгалуження"
msgid "unable to restore tty label"
msgstr "не вдалося відновити позначку tty"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "не вдалося виконати %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "не вдалося виконати ініціалізацію сеансу через додаток правил"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "помилка у циклі обробки подій"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "не вдалося відновити обробник для сигналу %d"
@@ -309,36 +326,36 @@ msgstr "не вдалося відновити обробник для сигн
msgid "unable to allocate pty"
msgstr "не вдалося розмістити pty"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "Помилка у додатку введення-виведення"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "відмова у виконання команди від додатка введення-виведення"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "помилка під час призупинення ведення журналу"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "помилка під час зміни розмірів вікна"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "не вдалося створити сокети"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "не вдалося надіслати повідомлення до процесу аудиту"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "помилка у %s, рядок %d під час спроби завантаження додатка «%s»"
@@ -358,46 +375,47 @@ msgstr "%s має належати користувачеві з uid %d"
msgid "%s must be only be writable by owner"
msgstr "%s має бути доступним до запису лише для власника"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "ігноруємо повторний запис додатка, «%s», у %s, рядок %d"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "не вдалося завантажити %s: %s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "не вдалося знайти символ «%s» у %s"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "несумісна основна версія додатка, %d, (мало бути %d) у %s"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "ігноруємо додаток правил, «%s», у %s, рядок %d"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "можна визначати лише один додаток обробки правил"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "у %2$s виявлено невідомий тип додатка, %1$d"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "до додатка правил %s не включено метод check_policy"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "внутрішня помилка, переповнення %s"
@@ -698,20 +716,40 @@ msgstr "не вдалося встановити контекст виконан
msgid "unable to set key creation context to %s"
msgstr "не вдалося встановити контекст ключа створення у значення %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "потребує принаймні одного аргументу"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "некоректний номер дескриптора файла: %s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "%s не можна працювати як оболонка для входу"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s: не можна редагувати символічні посилання"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s: не можна редагувати файли у непридатному до запису каталозі"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "дані сеансу редагування залишилися у %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "не вдалося отримати список груп"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -760,25 +798,25 @@ msgstr "помилка під час виконання setproject для про
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "попередження, помилка призначення керування ресурсами проекту «%s»"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Версія sudo %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "Параметри налаштування: %s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "критична помилка, не вдалося завантажити додатки"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "додатком не повернуто команди, яку слід виконати"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "неочікуваний режим sudo 0x%x"
@@ -792,168 +830,163 @@ msgstr "вас немає у базі даних %s"
msgid "unable to determine tty"
msgstr "не вдалося визначити tty"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s має належати користувачеві з uid %d, крім того, має бути встановлено біт setuid"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "поточним uid не є %d. Можливо %s зберігається у файловій системі зі встановленим параметром «nosuid» або у файловій системі NFS без прав доступу root?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "поточним uid не є %d, sudo встановлено з ідентифікатором користувача root?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "не вдалося встановити ідентифікатори додаткових груп"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "не вдалося встановити ефективний ідентифікатор групи для ідентифікатора групи запуску %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "не вдалося встановити ідентифікатор групи для ідентифікатора групи запуску %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "неочікувана умова переривання дочірнього процесу: %d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "не вдалося ініціалізувати додаток правил"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "до додатка правил %s не включено метод check_policy"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "у виконанні команди відмовлено згідно правил"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "помилка у додатку правил"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "у додатку правил %s не передбачено підтримки побудови списку прав доступу"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "у додатку правил %s не передбачено підтримки параметра -v"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "у додатку правил %s не передбачено підтримки параметрів -k/-K"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "помилка під час спроби ініціалізації додатка введення/виведення даних %s"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "помилка під час спроби ініціалізації додатка аудиту %s"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s: не вдалося записати до журналу подію помилки%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s: не вдалося записати до журналу подію прийняття%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "помилка у додатку аудиту"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s: не вдалося записати до журналу подію відмови%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "помилка під час спроби ініціалізації додатка підтвердження %s"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "у виконанні команди відмовлено засобом підтвердження"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "помилка у додатку підтвердження"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "не знайдено придатного до запису тимчасового каталогу"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "не вдалося відновити поточний робочий каталог"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s: не є звичайним файлом"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s: не можна редагувати символічні посилання"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s: не можна редагувати файли у непридатному до запису каталозі"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s залишено без змін"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s не змінено"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "дані сеансу редагування залишилися у %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh: внутрішня помилка: непарна кількість шляхів"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh: не вдалося створити тимчасові файли"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh: завершено надсиланням сигналу"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh: невідома помилка %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "не вдалося скопіювати тимчасові файли назад до початкового місця зберігання"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "не вдалося скопіювати деякі з тимчасових файлів назад до початкового місця зберігання"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "не вдалося змінити значення uid на значення root (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "помилка додатка: не вистачає списку файлів для sudoedit"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "не вдалося прочитати час на годиннику"
diff --git a/po/zh_CN.mo b/po/zh_CN.mo
index ddf19f1e1..fdfc0ac53 100644
--- a/po/zh_CN.mo
+++ b/po/zh_CN.mo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 4938a9980..e6b22b8c6 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -2,14 +2,14 @@
# sudo 的简体中文翻译。
# This file is put in the public domain.
# Wylmer Wang <wantinghard@gmail.com>, 2011, 2012, 2013, 2014, 2015, 2016, 2018.
-# Boyuan Yang <073plan@gmail.com>, 2019, 2020.
+# Boyuan Yang <073plan@gmail.com>, 2019, 2020, 2021.
#
msgid ""
msgstr ""
-"Project-Id-Version: sudo-1.9.3b1\n"
+"Project-Id-Version: sudo-1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-16 19:50-0400\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-03 20:17-0500\n"
"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Poedit 2.4.1\n"
+"X-Generator: Poedit 2.4.2\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
msgid "unable to open userdb"
@@ -33,8 +33,8 @@ msgid "unable to restore registry"
msgstr "无法恢复注册表"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -45,31 +45,33 @@ msgstr "无法恢复注册表"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s:%s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -79,26 +81,27 @@ msgstr "%s:%s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "无法分配内存"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "无法打开 %s"
@@ -108,7 +111,7 @@ msgstr "无法打开 %s"
msgid "unable to mkdir %s"
msgstr "无法创建目录 %s"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "无法 stat %s"
@@ -123,7 +126,7 @@ msgid "Unknown signal"
msgstr "未知信号"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "值无效"
@@ -135,66 +138,80 @@ msgstr "值过大"
msgid "value too small"
msgstr "值过小"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "%2$s 第 %3$u 行的路径值“%1$s”无效"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "%3$s 第 %4$u 行的 %1$s 的值“%2$s”无效"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "不支持 %2$s 第 %3$u 行的组来源“%1$s”"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "%2$s 第 %3$u 行的最大组数“%1$s”无效"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s 不是常规文件"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s 属于用户 ID %u,应为 %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s 可被任何人写"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s 可被用户组写"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s:截断 %s 至零字节? (y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "不覆盖 %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "无法读取 %s"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "无法写入 %s"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s:不是常规文件"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s:不正确的文件模式:0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "无法恢复当前工作目录"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -229,8 +246,8 @@ msgid "starting from %s"
msgstr "起始于 %s"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "无法设置 %d 信号的处理程序"
@@ -255,14 +272,14 @@ msgstr "联络通道的回应类型异常:%d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "无法将事件添加到队列"
@@ -270,8 +287,8 @@ msgstr "无法将事件添加到队列"
msgid "unable to set controlling tty"
msgstr "无法设置控制终端"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "无法创建管道"
@@ -279,8 +296,8 @@ msgstr "无法创建管道"
msgid "unable to receive message from parent"
msgstr "无法从父(进程)接收消息"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "无法执行 fork"
@@ -288,20 +305,20 @@ msgstr "无法执行 fork"
msgid "unable to restore tty label"
msgstr "无法恢复终端标签"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "无法执行 %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "策略插件会话初始化失败"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "事件循环中有错误"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "无法恢复 %d 信号的处理程序"
@@ -310,36 +327,36 @@ msgstr "无法恢复 %d 信号的处理程序"
msgid "unable to allocate pty"
msgstr "无法分配伪终端"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "I/O 插件错误"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "命令被 I/O 插件拒绝"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "记录挂起事件时出错"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "变更窗口大小出错"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "无法创建套接字"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "无法向监视进程发送消息"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "在加载插件“%3$s”时在 %1$s 第 %2$d 行出错"
@@ -359,46 +376,47 @@ msgstr "%s 必须属于用户 ID %d(的用户)"
msgid "%s must be only be writable by owner"
msgstr "%s 必须只对其所有者可写"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "忽略位于 %2$s 第 %3$d 行的重复插件“%1$s”"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "无法加载 %s:%s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "在 %2$s 中找不到符号“%1$s”"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "%3$s 中发现不兼容的插件主版本号 %1$d(应为 %2$d)"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "忽略位于 %2$s 第 %3$d 行的策略插件“%1$s”"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "只能指定一个策略插件"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "未知的插件类型 %d,在 %s"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "策略插件 %s 不包含 check_policy 方法"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "内部错误,%s 溢出"
@@ -699,20 +717,40 @@ msgstr "无法向 %s 设置 exec 环境"
msgid "unable to set key creation context to %s"
msgstr "无法向 %s 设置键创建环境"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "要求至少有一个参数"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "无效的文件描述符数字:%s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "无法以登录 shell 执行 %s"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s:不允许编辑符号链接"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s:不允许编辑可写目录中的文件"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "编辑会话的内容留在了 %s 中"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "无法获取组列表"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -761,25 +799,25 @@ msgstr "对项目“%s”执行 setproject 失败"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "警告,对项目“%s”的资源控制分配失败"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo 版本 %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "当前选项:%s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "致命错误,无法加载插件"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "插件未返回能执行的命令"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "异常的 sudo 模式 0x%x"
@@ -793,168 +831,163 @@ msgstr "%s 数据库中没有您"
msgid "unable to determine tty"
msgstr "无法确定终端"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s 必须属于用户 ID %d(的用户)并且设置 setuid 位"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "有效用户 ID 不是 %d,%s 位于一个设置了“nosuid”选项的文件系统或没有 root 权限的 NFS 文件系统中吗?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "有效用户 ID 不是 %d,sudo 属于 root 并设置了 setuid 位吗?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "无法设置补充组 ID"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "无法设置有效组 ID 来以组 ID %u 运行"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "无法设置组 ID 来以组 ID %u 运行"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "异常的子进程终止条件:%d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "无法初始化策略插件"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "check_policy 方法中缺少策略插件 %s"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "命令被策略拒绝"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "策略插件错误"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "策略插件 %s 不支持列出权限"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "策略插件 %s不支持 -v 选项"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "策略插件 %s 不支持 -k/-K 选项"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "初始化 I/O 插件 %s 出错"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "初始化审计插件 %s 出错"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s:无法记录错误事件%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s:无法记录接受事件%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "审计插件错误"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s:无法记录拒绝事件%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "初始化批准插件 %s 出错"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "命令被批准者拒绝"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "批准插件出错"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "未找到可写的临时目录"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "无法恢复当前工作目录"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s:不是常规文件"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s:不允许编辑符号链接"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s:不允许编辑可写目录中的文件"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s 并未修改"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s 已更改"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "编辑会话的内容留在了 %s 中"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh:内部错误:路径数量异常"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh:无法创建临时文件"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh:被信号杀死"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh:未知错误 %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "无法将临时文件复制回其原位置"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "无法将某些临时文件复制回其原位置"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "无法将用户 ID 切换到 root(%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "插件错误:缺少 sudoedit 的文件列表"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "无法读取时钟"
@@ -1017,9 +1050,6 @@ msgstr "无法恢复 stdin"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "没有终端存在,且未指定 askpass 程序"
-#~ msgid "unable to get group vector"
-#~ msgstr "无法获取组向量"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "未知的用户 ID %u:您是?"
diff --git a/po/zh_TW.mo b/po/zh_TW.mo
index 8b87f901f..60206c3b9 100644
--- a/po/zh_TW.mo
+++ b/po/zh_TW.mo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index d57d2fbcc..807682d64 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -2,13 +2,13 @@
# This file is put in the public domain.
#
# 林博仁 (Buo-ren, Lin) <Buo.Ren.Lin@gmail.com>, 2018.
-# Yi-Jyun Pan <pan93412@gmail.com>, 2019, 2020.
+# Yi-Jyun Pan <pan93412@gmail.com>, 2019, 2020, 2021.
msgid ""
msgstr ""
-"Project-Id-Version: sudo 1.9.3b1\n"
+"Project-Id-Version: sudo 1.9.6b1\n"
"Report-Msgid-Bugs-To: https://bugzilla.sudo.ws\n"
-"POT-Creation-Date: 2020-09-12 08:28-0600\n"
-"PO-Revision-Date: 2020-09-16 01:02+0800\n"
+"POT-Creation-Date: 2021-01-09 12:59-0700\n"
+"PO-Revision-Date: 2021-03-06 02:52+0800\n"
"Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n"
"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n"
"Language: zh_TW\n"
@@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 2.4\n"
+"X-Generator: Poedit 2.4.2\n"
#: lib/util/aix.c:89 lib/util/aix.c:169
msgid "unable to open userdb"
@@ -33,8 +33,8 @@ msgid "unable to restore registry"
msgstr "無法還原登錄表"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/gidlist.c:76
-#: lib/util/json.c:54 lib/util/json.c:180 lib/util/sudo_conf.c:186
-#: lib/util/sudo_conf.c:272 lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575
+#: lib/util/json.c:54 lib/util/json.c:183 lib/util/sudo_conf.c:198
+#: lib/util/sudo_conf.c:284 lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647
#: src/conversation.c:80 src/exec_common.c:106 src/exec_common.c:122
#: src/exec_common.c:131 src/exec_monitor.c:206 src/exec_monitor.c:455
#: src/exec_monitor.c:461 src/exec_monitor.c:469 src/exec_monitor.c:477
@@ -45,31 +45,33 @@ msgstr "無法還原登錄表"
#: src/exec_nopty.c:249 src/exec_nopty.c:256 src/exec_nopty.c:263
#: src/exec_nopty.c:270 src/exec_nopty.c:277 src/exec_nopty.c:284
#: src/exec_nopty.c:291 src/exec_nopty.c:299 src/exec_nopty.c:473
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1046 src/exec_pty.c:1218 src/exec_pty.c:1227
-#: src/exec_pty.c:1234 src/exec_pty.c:1241 src/exec_pty.c:1248
-#: src/exec_pty.c:1255 src/exec_pty.c:1262 src/exec_pty.c:1269
-#: src/exec_pty.c:1276 src/exec_pty.c:1283 src/exec_pty.c:1290
-#: src/exec_pty.c:1298 src/exec_pty.c:1740 src/load_plugins.c:52
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1053 src/exec_pty.c:1225 src/exec_pty.c:1234
+#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
+#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
+#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1297
+#: src/exec_pty.c:1305 src/exec_pty.c:1747 src/load_plugins.c:52
#: src/load_plugins.c:65 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:202 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:632 src/sudo.c:701 src/sudo.c:711 src/sudo.c:732 src/sudo.c:751
-#: src/sudo.c:760 src/sudo.c:769 src/sudo.c:786 src/sudo.c:828 src/sudo.c:838
-#: src/sudo.c:867 src/sudo.c:1053 src/sudo.c:1075 src/sudo.c:1373
-#: src/sudo.c:1546 src/sudo.c:1740 src/sudo.c:2084 src/sudo_edit.c:263
-#: src/sudo_edit.c:770 src/sudo_edit.c:854 src/sudo_edit.c:976
-#: src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:143 src/sesh.c:149 src/sesh.c:156 src/sesh.c:162 src/sesh.c:407
+#: src/sudo.c:632 src/sudo.c:702 src/sudo.c:712 src/sudo.c:733 src/sudo.c:752
+#: src/sudo.c:761 src/sudo.c:770 src/sudo.c:787 src/sudo.c:829 src/sudo.c:839
+#: src/sudo.c:868 src/sudo.c:1054 src/sudo.c:1076 src/sudo.c:1378
+#: src/sudo.c:1551 src/sudo.c:1776 src/sudo.c:2120 src/sudo_edit.c:89
+#: src/sudo_edit.c:151 src/sudo_edit.c:431 src/sudo_edit.c:440
+#: src/sudo_edit.c:539 src/sudo_edit.c:546 src/sudo_edit.c:682
+#: src/sudo_edit.c:702
#, c-format
msgid "%s: %s"
msgstr "%s:%s"
#: lib/util/aix.c:272 lib/util/gidlist.c:66 lib/util/json.c:55
-#: lib/util/json.c:181 lib/util/sudo_conf.c:187 lib/util/sudo_conf.c:272
-#: lib/util/sudo_conf.c:349 lib/util/sudo_conf.c:575 src/conversation.c:81
+#: lib/util/json.c:184 lib/util/sudo_conf.c:199 lib/util/sudo_conf.c:284
+#: lib/util/sudo_conf.c:361 lib/util/sudo_conf.c:647 src/conversation.c:81
#: src/exec_common.c:106 src/exec_common.c:123 src/exec_common.c:132
#: src/exec_monitor.c:455 src/exec_monitor.c:461 src/exec_monitor.c:469
#: src/exec_monitor.c:477 src/exec_monitor.c:484 src/exec_monitor.c:491
@@ -79,26 +81,27 @@ msgstr "%s:%s"
#: src/exec_nopty.c:242 src/exec_nopty.c:249 src/exec_nopty.c:256
#: src/exec_nopty.c:263 src/exec_nopty.c:270 src/exec_nopty.c:277
#: src/exec_nopty.c:284 src/exec_nopty.c:291 src/exec_nopty.c:299
-#: src/exec_pty.c:827 src/exec_pty.c:836 src/exec_pty.c:893
-#: src/exec_pty.c:1218 src/exec_pty.c:1227 src/exec_pty.c:1234
-#: src/exec_pty.c:1241 src/exec_pty.c:1248 src/exec_pty.c:1255
-#: src/exec_pty.c:1262 src/exec_pty.c:1269 src/exec_pty.c:1276
-#: src/exec_pty.c:1283 src/exec_pty.c:1290 src/exec_pty.c:1298
-#: src/exec_pty.c:1740 src/load_plugins.c:163 src/load_plugins.c:188
-#: src/load_plugins.c:223 src/load_plugins.c:463 src/load_plugins.c:469
+#: src/exec_pty.c:834 src/exec_pty.c:843 src/exec_pty.c:900
+#: src/exec_pty.c:1225 src/exec_pty.c:1234 src/exec_pty.c:1241
+#: src/exec_pty.c:1248 src/exec_pty.c:1255 src/exec_pty.c:1262
+#: src/exec_pty.c:1269 src/exec_pty.c:1276 src/exec_pty.c:1283
+#: src/exec_pty.c:1290 src/exec_pty.c:1297 src/exec_pty.c:1305
+#: src/exec_pty.c:1747 src/load_plugins.c:163 src/load_plugins.c:188
+#: src/load_plugins.c:223 src/load_plugins.c:455 src/load_plugins.c:461
#: src/parse_args.c:181 src/parse_args.c:203 src/parse_args.c:275
#: src/parse_args.c:616 src/parse_args.c:638 src/parse_args.c:663
#: src/preserve_fds.c:46 src/preserve_fds.c:131 src/selinux.c:90
-#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:115
-#: src/sudo.c:235 src/sudo.c:632 src/sudo.c:867 src/sudo.c:1053
-#: src/sudo.c:1075 src/sudo.c:1373 src/sudo.c:1546 src/sudo.c:1740
-#: src/sudo.c:2084 src/sudo_edit.c:263 src/sudo_edit.c:770 src/sudo_edit.c:854
-#: src/sudo_edit.c:976 src/sudo_edit.c:996
+#: src/selinux.c:360 src/selinux.c:489 src/selinux.c:498 src/sesh.c:110
+#: src/sesh.c:408 src/sudo.c:236 src/sudo.c:632 src/sudo.c:868 src/sudo.c:1054
+#: src/sudo.c:1076 src/sudo.c:1378 src/sudo.c:1551 src/sudo.c:1776
+#: src/sudo.c:2120 src/sudo_edit.c:89 src/sudo_edit.c:151 src/sudo_edit.c:431
+#: src/sudo_edit.c:440 src/sudo_edit.c:539 src/sudo_edit.c:546
+#: src/sudo_edit.c:682 src/sudo_edit.c:702
msgid "unable to allocate memory"
msgstr "無法分配記憶體"
-#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:614 src/selinux.c:234
-#: src/selinux.c:264 src/sudo.c:369
+#: lib/util/mkdir_parents.c:69 lib/util/sudo_conf.c:686 src/selinux.c:234
+#: src/selinux.c:264 src/sudo.c:367 src/sudo_edit.c:496 src/sudo_edit.c:559
#, c-format
msgid "unable to open %s"
msgstr "無法開啟 %s"
@@ -108,7 +111,7 @@ msgstr "無法開啟 %s"
msgid "unable to mkdir %s"
msgstr "無法建立 %s 目錄"
-#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:591
+#: lib/util/mkdir_parents.c:93 lib/util/sudo_conf.c:663 src/copy_file.c:150
#, c-format
msgid "unable to stat %s"
msgstr "無法取得 %s 檔案的資訊"
@@ -123,7 +126,7 @@ msgid "Unknown signal"
msgstr "訊號未知"
#: lib/util/strtoid.c:87 lib/util/strtomode.c:52 lib/util/strtonum.c:148
-#: lib/util/strtonum.c:187
+#: lib/util/strtonum.c:187 src/sesh.c:143 src/sesh.c:156
msgid "invalid value"
msgstr "數值無效"
@@ -135,66 +138,80 @@ msgstr "數值過大"
msgid "value too small"
msgstr "數值過小"
-#: lib/util/sudo_conf.c:205
+#: lib/util/sudo_conf.c:217
#, c-format
msgid "invalid Path value \"%s\" in %s, line %u"
msgstr "於 %2$s 第 %3$u 行發現無效的 Path 值「%1$s」"
-#: lib/util/sudo_conf.c:371 lib/util/sudo_conf.c:387 lib/util/sudo_conf.c:440
+#: lib/util/sudo_conf.c:383 lib/util/sudo_conf.c:399 lib/util/sudo_conf.c:452
#, c-format
msgid "invalid value for %s \"%s\" in %s, line %u"
msgstr "於 %3$s 中第 %4$u 行發現用於 %1$s 的「%2$s」無效數值"
-#: lib/util/sudo_conf.c:408
+#: lib/util/sudo_conf.c:420
#, c-format
msgid "unsupported group source \"%s\" in %s, line %u"
msgstr "於「%2$s」第 %3$u 行發現不支援的「%1$s」群組來源"
-#: lib/util/sudo_conf.c:424
+#: lib/util/sudo_conf.c:436
#, c-format
msgid "invalid max groups \"%s\" in %s, line %u"
msgstr "於 %2$s 第 %3$u 行發現無效的「%1$s」最大群組"
-#: lib/util/sudo_conf.c:594
+#: lib/util/sudo_conf.c:666
#, c-format
msgid "%s is not a regular file"
msgstr "%s 非一般檔案"
-#: lib/util/sudo_conf.c:597
+#: lib/util/sudo_conf.c:669 src/copy_file.c:162
#, c-format
msgid "%s is owned by uid %u, should be %u"
msgstr "%s 不應由使用者 ID 為 %u 的使用者所擁有,應為 %u"
-#: lib/util/sudo_conf.c:601
+#: lib/util/sudo_conf.c:673
#, c-format
msgid "%s is world writable"
msgstr "%s 允許所有使用者寫入"
-#: lib/util/sudo_conf.c:604
+#: lib/util/sudo_conf.c:676
#, c-format
msgid "%s is group writable"
msgstr "%s 允許群組寫入"
-#: src/copy_file.c:91
+#: src/copy_file.c:93
#, c-format
msgid "%s: truncate %s to zero bytes? (y/n) [n] "
msgstr "%s:將 %s 截斷至 0 位元組?(y/n) [n] "
-#: src/copy_file.c:95
+#: src/copy_file.c:97
#, c-format
msgid "not overwriting %s"
msgstr "不覆寫 %s"
-#: src/copy_file.c:117
+#: src/copy_file.c:119
#, c-format
msgid "unable to read from %s"
msgstr "無法從 %s 讀取"
-#: src/copy_file.c:134 src/sudo_edit.c:695
+#: src/copy_file.c:136 src/sudo_edit.c:322
#, c-format
msgid "unable to write to %s"
msgstr "無法寫入「%s」"
+#: src/copy_file.c:154 src/sesh.c:215 src/sudo_edit.c:199
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s:非一般檔案"
+
+#: src/copy_file.c:158
+#, c-format
+msgid "%s: bad file mode: 0%o"
+msgstr "%s:檔案模式無效:0%o"
+
+#: src/edit_open.c:265
+msgid "unable to restore current working directory"
+msgstr "無法還原目前的工作目錄"
+
#: src/exec.c:128
#, c-format
msgid "unknown login class %s"
@@ -229,8 +246,8 @@ msgid "starting from %s"
msgstr "從 %s 啟動"
#: src/exec.c:300 src/exec_monitor.c:564 src/exec_monitor.c:566
-#: src/exec_nopty.c:531 src/exec_pty.c:568 src/exec_pty.c:1386
-#: src/exec_pty.c:1388 src/signal.c:139 src/signal.c:153
+#: src/exec_nopty.c:531 src/exec_pty.c:575 src/exec_pty.c:1393
+#: src/exec_pty.c:1395 src/signal.c:139 src/signal.c:153
#, c-format
msgid "unable to set handler for signal %d"
msgstr "無法設定用於處理 %d 訊號的程式"
@@ -255,14 +272,14 @@ msgstr "未預期的 backchannel 回應類型:%d"
#: src/exec_nopty.c:230 src/exec_nopty.c:237 src/exec_nopty.c:244
#: src/exec_nopty.c:251 src/exec_nopty.c:258 src/exec_nopty.c:265
#: src/exec_nopty.c:272 src/exec_nopty.c:279 src/exec_nopty.c:286
-#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:693
-#: src/exec_pty.c:698 src/exec_pty.c:795 src/exec_pty.c:802 src/exec_pty.c:899
-#: src/exec_pty.c:1220 src/exec_pty.c:1229 src/exec_pty.c:1236
-#: src/exec_pty.c:1243 src/exec_pty.c:1250 src/exec_pty.c:1257
-#: src/exec_pty.c:1264 src/exec_pty.c:1271 src/exec_pty.c:1278
-#: src/exec_pty.c:1285 src/exec_pty.c:1292 src/exec_pty.c:1693
-#: src/exec_pty.c:1703 src/exec_pty.c:1748 src/exec_pty.c:1755
-#: src/exec_pty.c:1782
+#: src/exec_nopty.c:293 src/exec_nopty.c:301 src/exec_pty.c:700
+#: src/exec_pty.c:705 src/exec_pty.c:802 src/exec_pty.c:809 src/exec_pty.c:906
+#: src/exec_pty.c:1227 src/exec_pty.c:1236 src/exec_pty.c:1243
+#: src/exec_pty.c:1250 src/exec_pty.c:1257 src/exec_pty.c:1264
+#: src/exec_pty.c:1271 src/exec_pty.c:1278 src/exec_pty.c:1285
+#: src/exec_pty.c:1292 src/exec_pty.c:1299 src/exec_pty.c:1700
+#: src/exec_pty.c:1710 src/exec_pty.c:1755 src/exec_pty.c:1762
+#: src/exec_pty.c:1789
msgid "unable to add event to queue"
msgstr "無法新增事件至佇列中"
@@ -270,8 +287,8 @@ msgstr "無法新增事件至佇列中"
msgid "unable to set controlling tty"
msgstr "無法設定控制終端"
-#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1465
-#: src/exec_pty.c:1486 src/exec_pty.c:1506 src/tgetpass.c:306
+#: src/exec_monitor.c:590 src/exec_nopty.c:358 src/exec_pty.c:1472
+#: src/exec_pty.c:1493 src/exec_pty.c:1513 src/tgetpass.c:306
msgid "unable to create pipe"
msgstr "無法建立管線"
@@ -279,8 +296,8 @@ msgstr "無法建立管線"
msgid "unable to receive message from parent"
msgstr "無法自上層接收訊息"
-#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1544
-#: src/sudo_edit.c:735 src/tgetpass.c:310
+#: src/exec_monitor.c:612 src/exec_nopty.c:387 src/exec_pty.c:1551
+#: src/sudo_edit.c:363 src/tgetpass.c:310
msgid "unable to fork"
msgstr "無法複製 (fork) 出新行程"
@@ -288,20 +305,20 @@ msgstr "無法複製 (fork) 出新行程"
msgid "unable to restore tty label"
msgstr "無法還原終端標籤 (tty label)"
-#: src/exec_monitor.c:632 src/sesh.c:125 src/sudo.c:1131
+#: src/exec_monitor.c:632 src/sesh.c:120 src/sudo.c:1132
#, c-format
msgid "unable to execute %s"
msgstr "無法執行 %s"
-#: src/exec_nopty.c:352 src/exec_pty.c:1395
+#: src/exec_nopty.c:352 src/exec_pty.c:1402
msgid "policy plugin failed session initialization"
msgstr "政策外掛程式初始化工作階段失敗"
-#: src/exec_nopty.c:429 src/exec_pty.c:1632
+#: src/exec_nopty.c:429 src/exec_pty.c:1639
msgid "error in event loop"
msgstr "在事件處理迴圈中發生錯誤"
-#: src/exec_nopty.c:539 src/exec_pty.c:606 src/signal.c:101
+#: src/exec_nopty.c:539 src/exec_pty.c:613 src/signal.c:101
#, c-format
msgid "unable to restore handler for signal %d"
msgstr "無法還原用於處理 %d 訊號的程序"
@@ -310,36 +327,36 @@ msgstr "無法還原用於處理 %d 訊號的程序"
msgid "unable to allocate pty"
msgstr "無法分配虛擬終端機"
-#: src/exec_pty.c:216 src/exec_pty.c:255 src/exec_pty.c:294 src/exec_pty.c:344
-#: src/exec_pty.c:394
+#: src/exec_pty.c:216 src/exec_pty.c:256 src/exec_pty.c:296 src/exec_pty.c:347
+#: src/exec_pty.c:398
msgid "I/O plugin error"
msgstr "I/O 外掛程式錯誤"
-#: src/exec_pty.c:219 src/exec_pty.c:258 src/exec_pty.c:297 src/exec_pty.c:347
-#: src/exec_pty.c:397
+#: src/exec_pty.c:220 src/exec_pty.c:260 src/exec_pty.c:300 src/exec_pty.c:351
+#: src/exec_pty.c:402
msgid "command rejected by I/O plugin"
msgstr "命令被 I/O 外掛程式拒絕"
-#: src/exec_pty.c:444
+#: src/exec_pty.c:449
msgid "error logging suspend"
msgstr "記錄暫停時發生錯誤"
-#: src/exec_pty.c:477
+#: src/exec_pty.c:483
msgid "error changing window size"
msgstr "變更視窗大小時發生錯誤"
-#: src/exec_pty.c:1375
+#: src/exec_pty.c:1382
msgid "unable to create sockets"
msgstr "無法建立 socket 檔案"
-#: src/exec_pty.c:1587
+#: src/exec_pty.c:1594
msgid "unable to send message to monitor process"
msgstr "無法傳送訊息至監控程序"
#: src/load_plugins.c:50 src/load_plugins.c:63 src/load_plugins.c:85
#: src/load_plugins.c:115 src/load_plugins.c:129 src/load_plugins.c:135
-#: src/load_plugins.c:287 src/load_plugins.c:297 src/load_plugins.c:307
-#: src/load_plugins.c:354
+#: src/load_plugins.c:283 src/load_plugins.c:293 src/load_plugins.c:303
+#: src/load_plugins.c:350
#, c-format
msgid "error in %s, line %d while loading plugin \"%s\""
msgstr "載入「%3$s」外掛程式時,發現 %1$s 中的第 %2$d 行有錯誤"
@@ -359,46 +376,47 @@ msgstr "%s 必須由使用者 ID 為 %d 的使用者所擁有"
msgid "%s must be only be writable by owner"
msgstr "%s 必須只能被其所有者可寫"
-#: src/load_plugins.c:247 src/load_plugins.c:322
+#: src/load_plugins.c:247 src/load_plugins.c:318
#, c-format
msgid "ignoring duplicate plugin \"%s\" in %s, line %d"
msgstr "忽略第 %3$d 行 %2$s 中的重複外掛程式「%1$s」"
-#: src/load_plugins.c:289
+#: src/load_plugins.c:285
#, c-format
msgid "unable to load %s: %s"
msgstr "無法載入 %s:%s"
-#: src/load_plugins.c:299
+#: src/load_plugins.c:295
#, c-format
msgid "unable to find symbol \"%s\" in %s"
msgstr "無法在 %s 中找到「%s」符號"
-#: src/load_plugins.c:309
+#: src/load_plugins.c:305
#, c-format
msgid "incompatible plugin major version %d (expected %d) found in %s"
msgstr "在 %3$s 中發現不相容的外掛程式主版本號 %1$d(預期應為 %2$d)"
-#: src/load_plugins.c:327
+#: src/load_plugins.c:323
#, c-format
msgid "ignoring policy plugin \"%s\" in %s, line %d"
msgstr "無視 %2$s 中第 %3$d 行的「%1$s」sudo 政策外掛程式"
-#: src/load_plugins.c:330
+#: src/load_plugins.c:326
msgid "only a single policy plugin may be specified"
msgstr "只能指定一個 Sudo 政策外掛程式"
-#: src/load_plugins.c:356
+#: src/load_plugins.c:352
#, c-format
msgid "unknown plugin type %d found in %s"
msgstr "在 %2$s 發現未知的外掛程式類型 %1$d"
-#: src/load_plugins.c:552
+#: src/load_plugins.c:535
#, c-format
msgid "policy plugin %s does not include a check_policy method"
msgstr "%s 政策外掛程式未包含 check_policy 方法"
-#: src/net_ifs.c:178 src/net_ifs.c:195 src/net_ifs.c:340 src/sudo.c:479
+#: src/net_ifs.c:179 src/net_ifs.c:197 src/net_ifs.c:343 src/sudo.c:479
+#: src/sudo_edit.c:400 src/sudo_edit.c:408
#, c-format
msgid "internal error, %s overflow"
msgstr "內部錯誤,%s 溢位"
@@ -699,20 +717,40 @@ msgstr "無法設定執行上下文為 %s"
msgid "unable to set key creation context to %s"
msgstr "無法設定金鑰建立上下文為 %s"
-#: src/sesh.c:77
+#: src/sesh.c:72
msgid "requires at least one argument"
msgstr "至少需要至少一個指令列引數"
-#: src/sesh.c:106
+#: src/sesh.c:101
#, c-format
msgid "invalid file descriptor number: %s"
msgstr "無效的檔案描述元:%s"
-#: src/sesh.c:120
+#: src/sesh.c:115
#, c-format
msgid "unable to run %s as a login shell"
msgstr "無法以登入 shell 執行 %s"
+#: src/sesh.c:197 src/sesh.c:297 src/sudo_edit.c:206
+#, c-format
+msgid "%s: editing symbolic links is not permitted"
+msgstr "%s:不允許編輯符號連結"
+
+#: src/sesh.c:200 src/sesh.c:300 src/sudo_edit.c:209
+#, c-format
+msgid "%s: editing files in a writable directory is not permitted"
+msgstr "%s:不允許在可寫目錄編輯檔案"
+
+#: src/sesh.c:284 src/sesh.c:305 src/sesh.c:314 src/sesh.c:322
+#: src/sudo_edit.c:333
+#, c-format
+msgid "contents of edit session left in %s"
+msgstr "編輯階段的內容被留在 %s"
+
+#: src/sesh.c:412 src/sudo_edit.c:93
+msgid "unable to get group list"
+msgstr "無法取得群組清單"
+
#: src/signal.c:79
#, c-format
msgid "unable to save handler for signal %d"
@@ -761,25 +799,25 @@ msgstr "對專案「%s」進行專案設定程序 (setproject) 失敗"
msgid "warning, resource control assignment failed for project \"%s\""
msgstr "警告:對專案「%s」執行資源控制指派失敗"
-#: src/sudo.c:220
+#: src/sudo.c:222
#, c-format
msgid "Sudo version %s\n"
msgstr "Sudo 版本 %s\n"
-#: src/sudo.c:222
+#: src/sudo.c:224
#, c-format
msgid "Configure options: %s\n"
msgstr "設定選項:%s\n"
-#: src/sudo.c:231
+#: src/sudo.c:232
msgid "fatal error, unable to load plugins"
msgstr "致命錯誤:無法載入外掛程式"
-#: src/sudo.c:277
+#: src/sudo.c:278
msgid "plugin did not return a command to execute"
msgstr "外掛程式沒有回傳要執行的指令"
-#: src/sudo.c:312
+#: src/sudo.c:310
#, c-format
msgid "unexpected sudo mode 0x%x"
msgstr "未預期的 0x%x sudo 模式"
@@ -793,168 +831,163 @@ msgstr "您不在 %s 資料庫中"
msgid "unable to determine tty"
msgstr "無法判斷終端機"
-#: src/sudo.c:913
+#: src/sudo.c:914
#, c-format
msgid "%s must be owned by uid %d and have the setuid bit set"
msgstr "%s 必須由使用者 ID 為 %d 的使用者所擁有,且必須設定 setuid 位元"
-#: src/sudo.c:916
+#: src/sudo.c:917
#, c-format
msgid "effective uid is not %d, is %s on a file system with the 'nosuid' option set or an NFS file system without root privileges?"
msgstr "有效的使用者 ID 不是 %d,請問「%s」是存在於設定「nosuid」掛載選項的檔案系統中,還是存在於沒有 root 權限的 NFS 檔案系統?"
-#: src/sudo.c:922
+#: src/sudo.c:923
#, c-format
msgid "effective uid is not %d, is sudo installed setuid root?"
msgstr "有效的使用者 ID 不是 %d,sudo 是否已經安裝 setuid root?"
-#: src/sudo.c:938
+#: src/sudo.c:939
msgid "unable to set supplementary group IDs"
msgstr "無法設定增補群組 ID"
-#: src/sudo.c:945
+#: src/sudo.c:946
#, c-format
msgid "unable to set effective gid to runas gid %u"
msgstr "無法將有效群組 ID 設定為 runas 群組 ID %u"
-#: src/sudo.c:951
+#: src/sudo.c:952
#, c-format
msgid "unable to set gid to runas gid %u"
msgstr "無法將群組 ID 設定為 runas 群組 ID %u"
-#: src/sudo.c:994
+#: src/sudo.c:995
#, c-format
msgid "unexpected child termination condition: %d"
msgstr "未預期之子行程中止狀況:%d"
-#: src/sudo.c:1103
+#: src/sudo.c:1104
msgid "unable to initialize policy plugin"
msgstr "無法初始化 Sudo 政策外掛程式"
-#: src/sudo.c:1166
+#: src/sudo.c:1167
#, c-format
msgid "policy plugin %s is missing the \"check_policy\" method"
msgstr "%s 政策外掛程式缺少 \"check_policy\" 方法"
-#: src/sudo.c:1181 src/sudo.c:1234 src/sudo.c:1278
+#: src/sudo.c:1182 src/sudo.c:1235 src/sudo.c:1279
msgid "command rejected by policy"
msgstr "命令被策略拒絕"
-#: src/sudo.c:1186 src/sudo.c:1239 src/sudo.c:1283
+#: src/sudo.c:1187 src/sudo.c:1240 src/sudo.c:1284 src/sudo.c:1358
msgid "policy plugin error"
msgstr "策略外掛程式發生錯誤"
-#: src/sudo.c:1220
+#: src/sudo.c:1221
#, c-format
msgid "policy plugin %s does not support listing privileges"
msgstr "%s 政策外掛程式不支援權限"
-#: src/sudo.c:1264
+#: src/sudo.c:1265
#, c-format
msgid "policy plugin %s does not support the -v option"
msgstr "%s 政策外掛程式不支援 -v 指令列選項"
-#: src/sudo.c:1302
+#: src/sudo.c:1303
#, c-format
msgid "policy plugin %s does not support the -k/-K options"
msgstr "%s 政策外掛程式不支援 -k/-K 指令列選項"
-#: src/sudo.c:1431
+#: src/sudo.c:1436
#, c-format
msgid "error initializing I/O plugin %s"
msgstr "初始化「%s」I/O 外掛程式時發生錯誤"
-#: src/sudo.c:1585
+#: src/sudo.c:1590
#, c-format
msgid "error initializing audit plugin %s"
msgstr "初始化稽核外掛程式 %s 時發生錯誤"
-#: src/sudo.c:1763
+#: src/sudo.c:1668
+#, c-format
+msgid "%s: unable to log error event%s%s"
+msgstr "%s:無法記錄錯誤事件%s%s"
+
+#: src/sudo.c:1703
+#, c-format
+msgid "%s: unable to log accept event%s%s"
+msgstr "%s:無法記錄接受事件%s%s"
+
+#: src/sudo.c:1708 src/sudo.c:1746
+msgid "audit plugin error"
+msgstr "稽核外掛程式發生錯誤"
+
+#: src/sudo.c:1741
+#, c-format
+msgid "%s: unable to log reject event%s%s"
+msgstr "%s:無法記錄拒絕事件%s%s"
+
+#: src/sudo.c:1799
#, c-format
msgid "error initializing approval plugin %s"
msgstr "初始化核准外掛程式 %s 時發生錯誤"
-#: src/sudo.c:1839
+#: src/sudo.c:1875
msgid "command rejected by approver"
msgstr "命令被核准人拒絕"
-#: src/sudo.c:1848
+#: src/sudo.c:1884
msgid "approval plugin error"
msgstr "核准外掛程式發生錯誤"
-#: src/sudo_edit.c:226
+#: src/sudo_edit.c:112
msgid "no writable temporary directory found"
msgstr "沒有找到可寫入的暫存目錄"
-#: src/sudo_edit.c:351
-msgid "unable to restore current working directory"
-msgstr "無法還原目前的工作目錄"
-
-#: src/sudo_edit.c:566 src/sudo_edit.c:666
-#, c-format
-msgid "%s: not a regular file"
-msgstr "%s:非一般檔案"
-
-#: src/sudo_edit.c:573
-#, c-format
-msgid "%s: editing symbolic links is not permitted"
-msgstr "%s:不允許編輯符號連結"
-
-#: src/sudo_edit.c:576
-#, c-format
-msgid "%s: editing files in a writable directory is not permitted"
-msgstr "%s:不允許在可寫目錄編輯檔案"
-
-#: src/sudo_edit.c:667
+#: src/sudo_edit.c:293
#, c-format
msgid "%s left unmodified"
msgstr "%s 保持未變更狀態"
-#: src/sudo_edit.c:680 src/sudo_edit.c:871
+#: src/sudo_edit.c:306 src/sudo_edit.c:571
#, c-format
msgid "%s unchanged"
msgstr "%s 未變更"
-#: src/sudo_edit.c:706 src/sudo_edit.c:909
-#, c-format
-msgid "contents of edit session left in %s"
-msgstr "編輯階段的內容被留在 %s"
-
-#: src/sudo_edit.c:814
+#: src/sudo_edit.c:483
msgid "sesh: internal error: odd number of paths"
msgstr "sesh:內部錯誤:只有奇數個路徑"
-#: src/sudo_edit.c:816
+#: src/sudo_edit.c:485
msgid "sesh: unable to create temporary files"
msgstr "sesh:無法建立暫存檔案"
-#: src/sudo_edit.c:818 src/sudo_edit.c:902
+#: src/sudo_edit.c:487 src/sudo_edit.c:605
msgid "sesh: killed by a signal"
msgstr "sesh:被信號中止"
-#: src/sudo_edit.c:820 src/sudo_edit.c:905
+#: src/sudo_edit.c:489 src/sudo_edit.c:608
#, c-format
msgid "sesh: unknown error %d"
msgstr "sesh:未知錯誤代碼 %d"
-#: src/sudo_edit.c:895
+#: src/sudo_edit.c:598
msgid "unable to copy temporary files back to their original location"
msgstr "無法將暫存檔複製回暫存檔的原始位置"
-#: src/sudo_edit.c:899
+#: src/sudo_edit.c:602
msgid "unable to copy some of the temporary files back to their original location"
msgstr "無法將部份的暫存檔複製回其原始位置"
-#: src/sudo_edit.c:943
+#: src/sudo_edit.c:645
#, c-format
msgid "unable to change uid to root (%u)"
msgstr "無法將使用者 ID 變更為 root (%u)"
-#: src/sudo_edit.c:960
+#: src/sudo_edit.c:666
msgid "plugin error: missing file list for sudoedit"
msgstr "外掛程式錯誤:缺少可用於 sudoedit 的檔案清單"
-#: src/sudo_edit.c:1011 src/sudo_edit.c:1024
+#: src/sudo_edit.c:717 src/sudo_edit.c:725
msgid "unable to read the clock"
msgstr "無法讀取時間"
@@ -1017,8 +1050,5 @@ msgstr "無法復原標準輸入"
#~ msgid "no tty present and no askpass program specified"
#~ msgstr "未提供終端機且沒有指定 askpass 程式"
-#~ msgid "unable to get group vector"
-#~ msgstr "無法取得 group vector"
-
#~ msgid "unknown uid %u: who are you?"
#~ msgstr "未知的 %u 使用者識別碼:你是哪位啊?"
diff --git a/scripts/mkpkg b/scripts/mkpkg
index 92da74b95..5e7831e22 100755
--- a/scripts/mkpkg
+++ b/scripts/mkpkg
@@ -410,8 +410,8 @@ case "$osversion" in
if [ $osrelease -ge 11 ]; then
# Build 64-bit binaries on Solaris 11 and above.
- CFLAGS="-O2 -g -m64"; export CFLAGS
- LDFLAGS="-m64"; export LDFLAGS
+ CFLAGS="${CFLAGS:--O2 -g} -m64"; export CFLAGS
+ LDFLAGS="-m64${LDFLAGS:+ }${LDFLAGS}"; export LDFLAGS
# Solaris audit is not supported by Illumos
if test X"`uname -o 2>/dev/null`" = X"illumos"; then
configure_opts="${configure_opts}${configure_opts+$tab}--with-bsm-audit"
diff --git a/scripts/pp b/scripts/pp
index c1e94731d..0d3e47539 100755
--- a/scripts/pp
+++ b/scripts/pp
@@ -1,6 +1,6 @@
#!/bin/sh
-# Copyright 2020 One Identity LLC. ALL RIGHTS RESERVED
-pp_revision="20200814"
+# Copyright 2021 One Identity LLC. ALL RIGHTS RESERVED
+pp_revision="20210310"
# Copyright 2018 One Identity LLC. ALL RIGHTS RESERVED.
#
# Redistribution and use in source and binary forms, with or without
@@ -1618,13 +1618,11 @@ pp_aix_version_fix () {
pp_aix_select () {
case "$1" in
- -user) op="";;
- -root) op="!";;
+ -user) op="!";;
+ -root) op="";;
*) pp_die "pp_aix_select: bad argument";;
esac
- #pp_debug awk '$5 '$op' /^\/(usr|opt)(\/|$)/ { print; }'
- #awk '$5 '$op' /^\/(usr|opt)(\/|$)/ { print; }'
- awk $op'($6 ~ /^\/usr\// || $6 ~ /^\/opt\//) { print; }'
+ awk $op'($6 ~ /^\/(dev|etc|sbin|var)\//) { print }'
}
pp_aix_copy_root () {
@@ -2857,7 +2855,11 @@ pp_solaris_detect_os () {
}
pp_solaris_detect_arch () {
- pp_solaris_arch=`/usr/bin/optisa amd64 sparcv9 i386 sparc`
+ if [ -x /usr/bin/isainfo ]; then
+ pp_solaris_arch=`/usr/bin/isainfo -n`
+ else
+ pp_solaris_arch=`/usr/bin/optisa amd64 sparcv9 i386 sparc`
+ fi
[ -z "$pp_solaris_arch" ] &&
pp_error "can't determine processor architecture"
case "$pp_solaris_arch" in
diff --git a/src/Makefile.in b/src/Makefile.in
index fb49d670a..4671cd1a9 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -239,6 +239,8 @@ install-noexec: install-dirs sudo_noexec.la
install-plugin:
+install-fuzzer:
+
uninstall:
-$(LIBTOOL) $(LTFLAGS) --mode=uninstall rm -f $(DESTDIR)$(noexecdir)/sudo_noexec.la
-rm -f $(DESTDIR)$(bindir)/sudo \
@@ -263,8 +265,16 @@ pvs-log-files: $(POBJS)
pvs-studio: $(POBJS)
plog-converter $(PVS_LOG_OPTS) $(POBJS)
+fuzz:
+
check: $(TEST_PROGS)
@if test X"$(cross_compiling)" != X"yes"; then \
+ if locale -a 2>&1 | grep '^C.UTF-8$$' >/dev/null 2>&1; then \
+ LC_ALL=C.UTF-8; export LC_ALL; \
+ else \
+ LC_ALL=C; export LC_ALL; \
+ fi; \
+ unset LANG || LANG=; \
MALLOC_OPTIONS=S; export MALLOC_OPTIONS; \
MALLOC_CONF="abort:true,junk:true"; export MALLOC_CONF; \
./check_ttyname; \
@@ -290,6 +300,8 @@ realclean: distclean
cleandir: realclean
+.PHONY: clean mostlyclean distclean cleandir clobber realclean
+
# *Not* auto-generated to avoid building with ASAN
sudo_noexec.lo: $(srcdir)/sudo_noexec.c $(incdir)/sudo_compat.h \
$(top_builddir)/config.h $(top_builddir)/pathnames.h
diff --git a/src/copy_file.c b/src/copy_file.c
index 9404408b6..e173c43cf 100644
--- a/src/copy_file.c
+++ b/src/copy_file.c
@@ -35,7 +35,7 @@
* Extend the given fd to the specified size in bytes.
* We do this to allocate disk space up-front before overwriting
* the original file with the temporary. Otherwise, we could
- * we run out of disk space after truncating the original file.
+ * run out of disk space after truncating the original file.
*/
static int
sudo_extend_file(int fd, const char *name, off_t new_size)
diff --git a/src/get_pty.c b/src/get_pty.c
index e50a9a633..f03089a7e 100644
--- a/src/get_pty.c
+++ b/src/get_pty.c
@@ -55,7 +55,7 @@ bool
get_pty(int *leader, int *follower, char *name, size_t namesz, uid_t ttyuid)
{
struct group *gr;
- gid_t ttygid = -1;
+ gid_t ttygid = (gid_t)-1;
bool ret = false;
debug_decl(get_pty, SUDO_DEBUG_PTY);
diff --git a/src/parse_args.c b/src/parse_args.c
index 2d326cc2c..eeca9af7a 100644
--- a/src/parse_args.c
+++ b/src/parse_args.c
@@ -248,21 +248,18 @@ parse_args(int argc, char **argv, int *old_optind, int *nargc, char ***nargv,
int ch, i;
char *cp;
const char *progname;
- int proglen;
debug_decl(parse_args, SUDO_DEBUG_ARGS);
/* Is someone trying something funny? */
if (argc <= 0)
usage();
- /* Pass progname to plugin so it can call initprogname() */
+ /* The plugin API includes the program name (either sudo or sudoedit). */
progname = getprogname();
sudo_settings[ARG_PROGNAME].value = progname;
/* First, check to see if we were invoked as "sudoedit". */
- proglen = strlen(progname);
- if (proglen > 4 && strcmp(progname + proglen - 4, "edit") == 0) {
- progname = "sudoedit";
+ if (strcmp(progname, "sudoedit") == 0) {
mode = MODE_EDIT;
sudo_settings[ARG_SUDOEDIT].value = "true";
valid_flags = EDIT_VALID_FLAGS;
diff --git a/src/sesh.c b/src/sesh.c
index f8f465439..b07aa9737 100644
--- a/src/sesh.c
+++ b/src/sesh.c
@@ -345,14 +345,14 @@ sesh_sudoedit(int argc, char *argv[])
edit_flags = CD_SUDOEDIT_FOLLOW;
/* Check for -h flag (don't follow links). */
- if (argv[2] != NULL && strcmp(argv[2], "-h") == 0) {
+ if (argc > 2 && strcmp(argv[2], "-h") == 0) {
argv++;
argc--;
CLR(edit_flags, CD_SUDOEDIT_FOLLOW); // -V753
}
/* Check for -w flag (disallow directories writable by the user). */
- if (argv[2] != NULL && strcmp(argv[2], "-w") == 0) {
+ if (argc > 2 && strcmp(argv[2], "-w") == 0) {
SET(edit_flags, CD_SUDOEDIT_CHECKDIR);
/* Parse uid:gid:gid1,gid2,... */
diff --git a/src/sudo.c b/src/sudo.c
index 4c6c60e1e..625f847c9 100644
--- a/src/sudo.c
+++ b/src/sudo.c
@@ -396,9 +396,11 @@ fill_group_list(const char *user, struct sudo_cred *cred)
if (cred->ngroups > 0) {
cred->groups = reallocarray(NULL, cred->ngroups, sizeof(GETGROUPS_T));
if (cred->groups != NULL) {
- /* No error on insufficient space if user specified max_groups. */
- (void)sudo_getgrouplist2(user, cred->gid,
- &cred->groups, &cred->ngroups);
+ /* Clamp to max_groups if insufficient space for all groups. */
+ if (sudo_getgrouplist2(user, cred->gid, &cred->groups,
+ &cred->ngroups) == -1) {
+ cred->ngroups = sudo_conf_max_groups();
+ }
ret = 0;
}
} else {
diff --git a/src/sudo_edit.c b/src/sudo_edit.c
index b3eea9821..41fc61c3a 100644
--- a/src/sudo_edit.c
+++ b/src/sudo_edit.c
@@ -132,20 +132,17 @@ set_tmpdir(struct sudo_cred *user_cred)
static int
sudo_edit_mktemp(const char *ofile, char **tfile)
{
- const char *cp, *suff;
+ const char *base, *suff;
int len, tfd;
debug_decl(sudo_edit_mktemp, SUDO_DEBUG_EDIT);
- if ((cp = strrchr(ofile, '/')) != NULL)
- cp++;
- else
- cp = ofile;
- suff = strrchr(cp, '.');
+ base = sudo_basename(ofile);
+ suff = strrchr(base, '.');
if (suff != NULL) {
len = asprintf(tfile, "%s/%.*sXXXXXXXX%s", edit_tmpdir,
- (int)(size_t)(suff - cp), cp, suff);
+ (int)(size_t)(suff - base), base, suff);
} else {
- len = asprintf(tfile, "%s/%s.XXXXXXXX", edit_tmpdir, cp);
+ len = asprintf(tfile, "%s/%s.XXXXXXXX", edit_tmpdir, base);
}
if (len == -1) {
sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory"));
diff --git a/src/sudo_noexec.c b/src/sudo_noexec.c
index 6025d9148..3a2abdfdd 100644
--- a/src/sudo_noexec.c
+++ b/src/sudo_noexec.c
@@ -188,17 +188,10 @@ FN_NAME(wordexp)(const char *words, wordexp_t *we, int flags)
void *fn = NULL;
int idx = 0;
- name = strrchr(myname, '/');
- if (name != NULL)
- myname = name + 1;
-
/* Search for wordexp() but skip this shared object. */
+ myname = sudo_basename(myname);
while (shl_get(idx++, &desc) == 0) {
- name = strrchr(desc->filename, '/');
- if (name == NULL)
- name = desc->filename;
- else
- name++;
+ name = sudo_basename(desc->filename);
if (strcmp(name, myname) == 0)
continue;
if (shl_findsym(&desc->handle, "wordexp", TYPE_PROCEDURE, &fn) == 0)