diff --git a/COPYING b/COPYING index 88bd403e..5b1b5e2d 100644 --- a/COPYING +++ b/COPYING @@ -1,118 +1,41 @@ -NOTE: - This license has been obsoleted by the change to the BSD-style copyright. - You may continue to use this license if you wish, but you are under no - obligation to do so. +SPDX-License-Identifier: BSD-3-Clause -(* -This document is freely plagiarised from the 'Artistic Licence', -distributed as part of the Perl v4.0 kit by Larry Wall, which is -available from most major archive sites. I stole it from CrackLib. +All files under this project either - $Id$ -*) +1. fall under the BSD 3 clause license (by default). -This documents purpose is to state the conditions under which this -Package (See definition below) viz: "Shadow", the Shadow Password Suite -which is held by Julianne Frances Haugh, may be copied, such that the -copyright holder maintains some semblance of artistic control over the -development of the package, while giving the users of the package the -right to use and distribute the Package in a more-or-less customary -fashion, plus the right to make reasonable modifications. +2. carry an SPDX header declaring what license applies. -So there. +or -*************************************************************************** +3. list a full custom license -Definitions: +This software is originally + * Copyright (c) 1989 - 1994, Julianne Frances Haugh -A "Package" refers to the collection of files distributed by the -Copyright Holder, and derivatives of that collection of files created -through textual modification, or segments thereof. - -"Standard Version" refers to such a Package if it has not been modified, -or has been modified in accordance with the wishes of the Copyright -Holder. - -"Copyright Holder" is whoever is named in the copyright or copyrights -for the package. - -"You" is you, if you're thinking about copying or distributing this -Package. - -"Reasonable copying fee" is whatever you can justify on the basis of -media cost, duplication charges, time of people involved, and so on. -(You will not be required to justify it to the Copyright Holder, but -only to the computing community at large as a market that must bear the -fee.) - -"Freely Available" means that no fee is charged for the item itself, -though there may be fees involved in handling the item. It also means -that recipients of the item may redistribute it under the same -conditions they received it. - - -1. You may make and give away verbatim copies of the source form of the -Standard Version of this Package without restriction, provided that you -duplicate all of the original copyright notices and associated -disclaimers. - -2. You may apply bug fixes, portability fixes and other modifications -derived from the Public Domain or from the Copyright Holder. A Package -modified in such a way shall still be considered the Standard Version. - -3. You may otherwise modify your copy of this Package in any way, -provided that you insert a prominent notice in each changed file stating -how and when AND WHY you changed that file, and provided that you do at -least ONE of the following: - -a) place your modifications in the Public Domain or otherwise make them -Freely Available, such as by posting said modifications to Usenet or an -equivalent medium, or placing the modifications on a major archive site -such as uunet.uu.net, or by allowing the Copyright Holder to include -your modifications in the Standard Version of the Package. - -b) use the modified Package only within your corporation or organization. - -c) rename any non-standard executables so the names do not conflict with -standard executables, which must also be provided, and provide separate -documentation for each non-standard executable that clearly documents -how it differs from the Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -4. You may distribute the programs of this Package in object code or -executable form, provided that you do at least ONE of the following: - -a) distribute a Standard Version of the executables and library files, -together with instructions (in the manual page or equivalent) on where -to get the Standard Version. - -b) accompany the distribution with the machine-readable source of the -Package with your modifications. - -c) accompany any non-standard executables with their corresponding -Standard Version executables, giving the non-standard executables -non-standard names, and clearly documenting the differences in manual -pages (or equivalent), together with instructions on where to get the -Standard Version. - -d) make other distribution arrangements with the Copyright Holder. - -5. You may charge a reasonable copying fee for any distribution of this -Package. You may charge any fee you choose for support of this Package. -YOU MAY NOT CHARGE A FEE FOR THIS PACKAGE ITSELF. However, you may -distribute this Package in aggregate with other (possibly commercial) -programs as part of a larger (possibly commercial) software distribution -provided that YOU DO NOT ADVERTISE this package as a product of your -own. - -6. The name of the Copyright Holder may not be used to endorse or -promote products derived from this software without specific prior -written permission. - -7. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED -WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF -MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - - The End + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the copyright holders or contributors may not be used to + * endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/ChangeLog b/ChangeLog index 89b065a4..c6cc8f60 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,86 @@ +2022-01-02 Serge Hallyn + + * build: include lib/shadowlog_internal.h in dist tarballs (Sam James) + +2022-01-02 Serge Hallyn + + * Handle possible TOCTTOU issues in usermod/userdel (edneville) + * (CVE-2013-4235) + * Use O_NOFOLLOW when copying file + * Kill all user tasks in userdel + * Fix useradd -D segfault (Xi Ruoyao) + * Clean up obsolete libc feature-check ifdefs (Alejandro Colomar) + * Fix -fno-common build breaks due to duplicate Prog declarations + (Adam Sampson) + * Have single date_to_str definition (Alejandro Colomar) + * Fix libsubid SONAME version (Sam James) + +2021-12-19 Serge Hallyn + + Note: From this release forward, su from this package should be + considered deprecated. Please replace any users of it with su from + util-linux. Please open an issue if there is a problem with that. + We intend to remove it in an upcoming release. + + * libsubid fixes (Xi Ruoyao, Serge Hallyn, Iker Pedrosa, Mike Gilbert, + GalaxyMaster, and Luís Ferreira) + * Rename the test program list_subid_ranges to getsubids, write + a manpage, so distros can ship it. (Iker Pedrosa) + * Add libeconf dep for new*idmap (Iker Pedrosa) + * Allow all group types with usermod -G (Iker Pedrosa) + * Avoid useradd generating empty subid range (Iker Pedrosa) + * Handle NULL pw_passwd (Jaroslav Jindrak) + * Fix default value SHA_get_salt_rounds (Mike Gilbert) + * Use https where possible in README (Paul Menzel) + * Update content and format of README (Iker Pedrosa) + * Translation updates (Balint Reczey, Frans Spiesschaert) + * Switch from xml2po to itstool in 'make dist' (Serge Hallyn) + * Fix double frees (Michael Vetter) + * Add LOG_INIT configurable to useradd (Andy Zaugg) + * Add CREATE_MAIL_SPOOL documentation (Andy Zaugg) + * Create a security.md + * Fix su never being SIGKILLd when trapping TERM (Ruihan li) + * Fix wrong SELinux labels in several possible cases (Iker Pedrosa) + * Fix missing chmod in chadowtb_move (GalaxyMaster) + * Handle malformed hushlogins entries (Tobias Stoeckmann) + * Fix groupdel segv when passwd does not exist (François Rigault) + * Fix covscan-found newgrp segfault (Iker Pedrosa) + * Remove trailing slash on hoedir (Ed Neville) + * Fix passwd -l message - it does not change expirey (Ed Neville) + * Fix SIGCHLD handling bugs in su and vipw (Tobias Stoeckmann) + * Remove special case for "" in usermod (Alejandro Colomar) + * Implement usermod -rG to remove a specific group + (Andy Zaugg) + * call pam_end() after fork in child path for su and login + (Björn Fischer) + * useradd: In absence of /etc/passwd, assume 0 == root + (Ludwig Nussel) + * lib: check NULL before freeing data (Iker Pedrosa) + * Fix pwck segfault (Iker Pedrosa) + +2021-07-22 Serge Hallyn + + * Updated translations (Björn Esser, Juergen Hoetzel) + * Major salt updates (Björn Esser) + * Various coverity and cleanup fixes (Iker Pedrosa) + * Consistently use 0 to disable PASS_MIN_DAYS in man (tzccinct) + * Implement NSS support for subids and a libsubid (Serge Hallyn) + * setfcap: retain setfcap when mapping uid 0 (Christian Brauner) + * login.defs: include HMAC_CRYPTO_ALGO key (Iker Pedrosa) + * selinux fixes (Christian Göttsche) + * Fix path prefix path handling (Lucas Servén Marín) + * Manpage updates (tzccinct, Sevan Janiyan, Iker Pedrosa, Geert Ijewski, + 谭九鼎, Jamin W. Collins, towerpark, andydna, Frans Spiesschaert) + * Treat an empty passwd field as invalid (Haelwenn Monnier) + * newxidmap: allow running under alternative gid (Martijn de Gouw) + * usermod: check that shell is executable (Geert Ijewski) + * Add yescript support (Rodolphe Bréard) + * useradd memleak fixes (whzhe) + * useradd: use built-in settings by default (Ludwig Nussel) + * getdefs: add foreign (non-shadow-utils) items (Karel Zak) + * buffer overflow fixes (Tobias Stoeckmann) + * Adding run-parts style for pre and post useradd/del (ed@s5h.net) + 2020-01-23 Serge Hallyn * selinux: inclue stdio (Michael Vetter) @@ -262,7 +345,7 @@ 2013-08-15 Nicolas François * src/usermod.c: Check early if /etc/subuid (/etc/subgid) exists - when option -v/-V (-w/-W) are provided. + when option -v/-V (-w/-W) are provided. 2013-08-15 Nicolas François @@ -639,8 +722,8 @@ * configure.in: Prepare for next point release 4.2. * if using the static char* for pw_dir, strdup it so - pw_free() can be used. (Closes: Debian#691459, alioth#313957) - * Kill the child process group, rather than just the + pw_free() can be used. (Closes: Debian#691459, alioth#313957) + * Kill the child process group, rather than just the immediate child; this is needed now that su no longer starts a controlling terminal when not running an interactive shell (closes: Debian#713979) @@ -867,7 +950,7 @@ * po/pt.po: Updated to 557t. -2012-01-19 Holger Wansing +2012-01-19 Holger Wansing * po/de.po: Updated to 557t. @@ -1454,8 +1537,8 @@ * NEWS, src/chpasswd.c: Create a shadow entry if the password is set to 'x' in passwd and there are no entry in shadow for the user. - * NEWS, src/chgpasswd.c: Create a gshadow entry if the password is - set to 'x' in group and there are no entry in gshadow for the + * NEWS, src/chgpasswd.c: Create a gshadow entry if the password is + set to 'x' in group and there are no entry in gshadow for the group. 2011-07-28 Nicolas François @@ -1527,7 +1610,7 @@ 2011-07-22 Nicolas François * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Fail in case of - invalid configuration. + invalid configuration. * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Updated comments. * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Be more strict @@ -1764,7 +1847,7 @@ man/login.defs.d/DEFAULT_HOME.xml, man/login.defs.d/LOGIN_RETRIES.xml, man/login.defs.d/MD5_CRYPT_ENAB.xml, - man/login.defs.d/PORTTIME_CHECKS_ENAB.xml, + man/login.defs.d/PORTTIME_CHECKS_ENAB.xml, man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml: Fix typos * man/po/de.po: German translation of manpages completed @@ -1811,7 +1894,7 @@ 2011-03-30 YunQiang Su - * man/po/zh_CN.po: convert Simplified Chinese translation + * man/po/zh_CN.po: convert Simplified Chinese translation of manpages to gettext * po/zh_CN.po: Simplified Chinese translation completed @@ -1950,7 +2033,7 @@ boolean. safe_system last argument is a boolean. * libmisc/system.c: Check return value of dup2. * libmisc/system.c: Do not check *printf/*puts return value. - * libmisc/system.c: Do not check execve return value. + * libmisc/system.c: Do not check execve return value. * libmisc/salt.c: Do not check *printf/*puts return value. * libmisc/loginprompt.c: Do not check gethostname return value. * libmisc/find_new_gid.c, libmisc/find_new_uid.c: Do not check @@ -2103,7 +2186,7 @@ 2010-04-04 Nicolas François * src/useradd.c: spool is a constant string. - * src/useradd.c: Set the new copy_tree's paramater 'copy_root' to false + * src/useradd.c: Set the new copy_tree's paramater 'copy_root' to false 2010-04-04 Nicolas François @@ -4952,7 +5035,7 @@ * src/groupadd.c: Log to audit with type AUDIT_ADD_GROUP instead of AUDIT_USER_CHAUTHTOK. - * src/groupdel.c: Log to audit with type AUDIT_DEL_GROUP instead + * src/groupdel.c: Log to audit with type AUDIT_DEL_GROUP instead of AUDIT_USER_CHAUTHTOK. * src/useradd.c: Log to audit with type AUDIT_ADD_USER / AUDIT_ADD_GROUP / AUDIT_USYS_CONFIG instead of @@ -5208,7 +5291,7 @@ * NEWS, src/gpasswd.c: Use getopt_long instead of getopt. Added support for long options --add (-a), --delete (-d), --remove-password (-r), --restrict (-R), --administrators (-A), - and --members (-M) + and --members (-M) * man/gpasswd.1.xml: Document the new long options. * src/gpasswd.c: The sgrp structure is only used if SHADOWGRP is defined. @@ -7397,7 +7480,7 @@ to mimic useradd's behavior choices of UID and GID. * src/newusers.c: Reuse the generic find_new_uid() and find_new_gid() functions. This permits to respect the - UID_MIN/UID_MAX and GID_MIN/GID_MAX variables, should + UID_MIN/UID_MAX and GID_MIN/GID_MAX variables, should * src/newusers.c: Check if the user or group exist using the external databases (with the libc getpwnam/getgrnam functions). Refuse to update an user which exist in an external database but @@ -9194,7 +9277,7 @@ Debian's patch 202_it_man_uses_gettext. Thanks to Giuseppe Sacco who contributed the Italian translation. * man/de/de.po: (nearly) complete German translation of man pages - Imported from Debian's patch 203_de-man-update. Thanks to + Imported from Debian's patch 203_de-man-update. Thanks to Simon Brandmair * src/usermod.c: Clarify the online help of usermod for "-a" Imported from Debian's patch 402-clarify_usermod_usage diff --git a/Makefile.am b/Makefile.am index 8851f5d6..630e2aa9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2,5 +2,14 @@ EXTRA_DIST = NEWS README TODO shadow.spec.in -SUBDIRS = po man libmisc lib src \ - contrib doc etc +SUBDIRS = libmisc lib + +if ENABLE_SUBIDS +SUBDIRS += libsubid +endif + +SUBDIRS += src po contrib doc etc + +if ENABLE_REGENERATE_MAN +SUBDIRS += man +endif diff --git a/Makefile.in b/Makefile.in index 32edc35d..7999454e 100644 --- a/Makefile.in +++ b/Makefile.in @@ -87,10 +87,18 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ +@ENABLE_SUBIDS_TRUE@am__append_1 = libsubid +@ENABLE_REGENERATE_MAN_TRUE@am__append_2 = man subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ @@ -157,7 +165,7 @@ am__define_uniq_tagged_files = \ ETAGS = etags CTAGS = ctags CSCOPE = cscope -DIST_SUBDIRS = $(SUBDIRS) +DIST_SUBDIRS = libmisc lib libsubid src po contrib doc etc man am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/shadow.spec.in $(top_srcdir)/man/po/Makefile.in \ ABOUT-NLS COPYING ChangeLog NEWS README TODO compile \ @@ -231,7 +239,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -260,9 +267,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -300,7 +312,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ @@ -361,9 +372,8 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = NEWS README TODO shadow.spec.in -SUBDIRS = po man libmisc lib src \ - contrib doc etc - +SUBDIRS = libmisc lib $(am__append_1) src po contrib doc etc \ + $(am__append_2) all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive diff --git a/NEWS b/NEWS index dbf06537..7cfd1b7f 100644 --- a/NEWS +++ b/NEWS @@ -15,7 +15,7 @@ shadow-4.1.5.1 -> shadow-4.2 UNRELEASED - su * When su receives a signal (SIGTERM, or SIGINT/SIGQUIT in non - interactive mode), kill the child process group, rather than just the + interactive mode), kill the child process group, rather than just the immediate child. * Fix segmentation faults for users without a proper home or shell in their passwd entries. @@ -622,7 +622,7 @@ shadow-4.0.18.2 -> shadow-4.1.0 09-12-2007 - Add support for uClibc with no l64a(). - userdel, usermod: Fix infinite loop caused by erroneous group file containing two entries with the same name. (The fix strategy differs - from + from (https://bugzilla.redhat.com/show_bug.cgi?id=240915) - userdel: Abort if an error is detected while updating the passwd or group databases. The passwd or group files will not be written. @@ -1001,9 +1001,9 @@ shadow-4.0.12 -> shadow-4.0.13 10-10-2005 shadow-4.0.11.1 -> shadow-4.0.12 22-08-2005 *** general: -- newgrp, login: remove using login.defs::CLOSE_SESSIONS variable and always +- newgrp, login: remove using login.defs::CLOSE_SESSIONS variable and always close PAM session, -- fixed configure.in: really enable shadow group support by default (pointed by +- fixed configure.in: really enable shadow group support by default (pointed by Greg Schafer and Peter Vrabec ), - login.defs: removed handle QMAIL_DIR variable, - login: allow regular user to login on read-only root file system (not only for root) @@ -1080,7 +1080,7 @@ shadow-4.0.10 -> shadow-4.0.11 18-07-2005 - S/Key support is back, - usermod: added -a option. This flag can only be used in conjunction with the -G option. It cause usermod to append user to the current supplementary group list. - (patch by Peter Vrabec ) + (patch by Peter Vrabec ) - chage: added missing \n in error messages, - useradd, groupadd: change -O option to -K and document it in man page, - su, sulogin, login: fixed erroneous warning messages when used with PAM about some @@ -1130,7 +1130,7 @@ shadow-4.0.9 -> shadow-4.0.10 28-06-2005 http://bugs.debian.org/53570 http://bugs.debian.org/195048 http://bugs.debian.org/211884 - login: made login's -f option also able to use the username after -- if none was passed as it's optarg - http://bugs.debian.org/53702 + http://bugs.debian.org/53702 - login: check for hushed login and pass PAM_SILENT if true, http://bugs.debian.org/48002 - login: fixed username on succesful login (was using the normal username, @@ -1208,7 +1208,7 @@ shadow-4.0.7 -> shadow-4.0.8 26-04-2005 -- new: chage.1, chpasswd.8, expiry.1, faillog.5, faillog.8, getspnam.3, logoutd.8, porttime.5, pwck.8, shadow.3, shadowconfig.8, su.1, - passwd(1): fix #160477 Debian bug: improve -S output description, -- newgrp(1): fix #251926, #166173, #113191 Debian bugs: explain why editing /etc/group +- newgrp(1): fix #251926, #166173, #113191 Debian bugs: explain why editing /etc/group (without gshadow) doesn't permit to use newgrp, - newgrp(1): newgrp uses /bin/sh (not bash), - faillog(8): updated after rewritten faillog command for use getopt_long(), @@ -1238,7 +1238,7 @@ shadow-4.0.6 -> shadow-4.0.7 26-01-2005 - chpasswd: -- switch chpasswd to use getopt_long() and adds a --md5 option (by Ian Gulliver ), --- rewritten chpasswd(8) man page. +-- rewritten chpasswd(8) man page. shadow-4.0.5 -> shadow-4.0.6 08-11-2004 @@ -1309,7 +1309,7 @@ shadow-4.0.4 => shadow-4.0.4.1 14-01-2004 - bug fixes in automake files for generate correct tar ball on "make dist": added missing "EXTRA_DIST = $(man_MANS)" in man/*/Makefile.am. -shadow-4.0.3 => shadow-4.0.4 14-01-2004 +shadow-4.0.3 => shadow-4.0.4 14-01-2004 *** general: - added missing information about -f options in groupadd usage message @@ -1408,7 +1408,7 @@ shadow-4.0.0 => shadow-4.0.1 - fixes for handle/print correctly 32bit uid/gid (Thorsten Kukuk ), - implemented functions for better reloading the nscd cache (per NSS map) (Thorsten Kukuk ), -- fixed warnings "not used but defined" on compile using gcc 3.0.x +- fixed warnings "not used but defined" on compile using gcc 3.0.x (bulletpr00ph ), - added ja, ko translations found in SuSE, - added symlinks: newgrp -> sg, vipw -> vigr, @@ -1416,7 +1416,7 @@ shadow-4.0.0 => shadow-4.0.1 - added sg(1) man page as roff .so link to newgrp(1), - installed fix for SEGV when using pwck -s on /etc/passwd file with empty lines in it. - + shadow-20001016 => shadow-4.0.0 06-01-2002 - fix bug discovered and fixed by Marcel Ritter @@ -1466,7 +1466,7 @@ shadow-20000902 => shadow-20001012 overwrite previously existing groups in adduser, - added PAM support for chage (bind to "chage" PAM config file) also added PAM support for all other small tools like chpasswd, groupadd, - groupdel, groupmod, newusers, useradd, userdel, usermod (bind to common + groupdel, groupmod, newusers, useradd, userdel, usermod (bind to common "shadow" PAM config file) - this modifications mainly based on modifications prepared by Janek Rękojarski , - many small fixes and improvements in automake (mow "make dist" diff --git a/README b/README index c0c03f2d..3c035ef6 100644 --- a/README +++ b/README @@ -1,122 +1,36 @@ -Shadow SITES -============ +# shadow-utils -Homepage - http://github.com/shadow-maint/shadow +## Introduction +The shadow-utils package includes the necessary programs for +converting UNIX password files to the shadow password format, plus +programs for managing user and group accounts. The pwconv command +converts passwords to the shadow password format. The pwunconv command +unconverts shadow passwords and generates a passwd file (a standard +UNIX password file). The pwck command checks the integrity of password +and shadow files. The lastlog command prints out the last login times +for all users. The useradd, userdel, and usermod commands are used for +managing user accounts. The groupadd, groupdel, and groupmod commands +are used for managing group accounts. -Issue tracker - http://github.com/shadow-maint/shadow/issues +## Sites +* [Homepage](https://github.com/shadow-maint/shadow) +* [Issue tracker](https://github.com/shadow-maint/shadow/issues) +* [Releases](https://github.com/shadow-maint/shadow/releases) -Releases - https://github.com/shadow-maint/shadow/releases +## Contacts +There are several ways to contact us: +* [the general discussion mailing list]( + https://alioth-lists.debian.net/mailman/listinfo/pkg-shadow-devel) +* the #shadow IRC channel on libera.chat: + * irc://irc.libera.chat/shadow -Mailing lists - for general discuss: pkg-shadow-devel@alioth-lists.debian.net - commit list: pkg-shadow-commits@alioth-lists.debian.net - -Mailing lists subscription - http://alioth-lists.debian.net/mailman/listinfo/pkg-shadow-devel - http://alioth-lists.debian.net/mailman/listinfo/pkg-shadow-commits - -Mailing lists archives: - http://alioth-lists.debian.net/pipermail/pkg-shadow-devel/ - http://alioth-lists.debian.net/pipermail/pkg-shadow-commits/ - -S/Key support: - Shadow can be built with S/Key support using the S/Key package from: - - http://cvsweb.netbsd.org/bsdweb.cgi/src/lib/libskey/ - or - http://gentoo.osuosl.org/distfiles/skey-1.1.5.tar.bz2 - -Authors and contributors -======================== - -Thanks to at least the following people for sending patches, bug -reports and various comments. This list may be incomplete, I received -a lot of mail... - - -Adam Rudnicki -Alan Curry -Aleksa Sarai -Alexander O. Yuriev -Algis Rudys -Andreas Jaeger -Aniello Del Sorbo -Anton Gluck -Arkadiusz Miskiewicz -Ben Collins -Brian R. Gaeke -Calle Karlsson -Chip Rosenthal -Chris Evans -Chris Lamb -Cristian Gafton -Dan Walsh -Darcy Boese -Dave Hagewood -David A. Holland -David Frey -Ed Carp -Eric W. Biederman" -Floody -Frank Denis -George Kraft IV -Greg Mortensen -Guido van Rooij -Guy Maor -Hrvoje Dogan -Jakub Hrozek -Janos Farkas -Jay Soffian -Jesse Thilo -Joey Hess -John Adelsberger -Jonathan Hankins -Jon Lewis -Joshua Cowan -Judd Bourgeois -Juergen Heinzl -Juha Virtanen -Julian Pidancet -Julianne Frances Haugh -Leonard N. Zubkoff -Luca Berra -Lukáš Kuklínek -Lutz Schwalowsky -Marc Ewing -Martin Bene -Martin Mares -Michael Meskes -Michael Talbot-Wilson -Michael Vetter -Mike Frysinger -Mike Pakovic -Nicolas François -Nikos Mavroyanopoulos -Pavel Machek -Peter Vrabec -Phillip Street -Rafał Maszkowski -Rani Chouha -Sami Kerola -Scott Garman -Sebastian Rick Rijkers -Seraphim Mellos -Shane Watts -Steve M. Robbins -Thorsten Kukuk -Tim Hockin -Timo Karjalainen -Ulisses Alonso Camaro -Werner Fink - -Maintainers -=========== - -Tomasz Kłoczko (2000-2007) -Nicolas François (2007-2014) -Serge E. Hallyn (2014-now) -Christian Brauner (2019-now) +### Mailing archives +* [the general discussion mailing list archive]( + https://alioth-lists.debian.net/pipermail/pkg-shadow-devel/) +* [the commit mailing list archive]( + https://alioth-lists-archive.debian.net/pipermail/pkg-shadow-commits/), + only used for historical purposes +## Authors and maintainers +Authors and maintainers are listed in [AUTHORS.md]( +https://github.com/shadow-maint/shadow/blob/master/AUTHORS.md). diff --git a/TODO b/TODO index 5cfa252e..8783ccd1 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,4 @@ - * Create a common usage function that'd take the array of + * Create a common usage function that'd take the array of long options and an array of descriptions and output that so things would be standardized across the utils. Usage strings should be normalized and split first. diff --git a/aclocal.m4 b/aclocal.m4 index 659667d5..82a2222f 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -20,11512 +20,6 @@ You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# gettext.m4 serial 68 (gettext-0.19.8) -dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2006, 2008-2010. - -dnl Macro to add for using GNU gettext. - -dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -dnl default (if it is not specified or empty) is 'no-libtool'. -dnl INTLSYMBOL should be 'external' for packages with no intl directory, -dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -dnl If INTLSYMBOL is 'use-libtool', then a libtool library -dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -dnl depending on --{enable,disable}-{shared,static} and on the presence of -dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -dnl $(top_builddir)/intl/libintl.a will be created. -dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -dnl implementations (in libc or libintl) without the ngettext() function -dnl will be ignored. If NEEDSYMBOL is specified and is -dnl 'need-formatstring-macros', then GNU gettext implementations that don't -dnl support the ISO C 99 formatstring macros will be ignored. -dnl INTLDIR is used to find the intl libraries. If empty, -dnl the value '$(top_builddir)/intl/' is used. -dnl -dnl The result of the configuration is one of three cases: -dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -dnl and used. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 2) GNU gettext has been found in the system's C library. -dnl Catalog format: GNU --> install in $(datadir) -dnl Catalog extension: .mo after installation, .gmo in source tree -dnl 3) No internationalization, always use English msgid. -dnl Catalog format: none -dnl Catalog extension: none -dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -dnl The use of .gmo is historical (it was needed to avoid overwriting the -dnl GNU format catalogs when building on a platform with an X/Open gettext), -dnl but we keep it in order not to force irrelevant filename changes on the -dnl maintainers. -dnl -AC_DEFUN([AM_GNU_GETTEXT], -[ - dnl Argument checking. - ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , - [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -])])])])]) - ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old], - [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])]) - ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , - [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -])])])]) - define([gt_included_intl], - ifelse([$1], [external], - ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), - [yes])) - define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) - gt_NEEDS_INIT - AM_GNU_GETTEXT_NEED([$2]) - - AC_REQUIRE([AM_PO_SUBDIRS])dnl - ifelse(gt_included_intl, yes, [ - AC_REQUIRE([AM_INTL_SUBDIR])dnl - ]) - - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Sometimes libintl requires libiconv, so first search for libiconv. - dnl Ideally we would do this search only after the - dnl if test "$USE_NLS" = "yes"; then - dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then - dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT - dnl the configure script would need to contain the same shell code - dnl again, outside any 'if'. There are two solutions: - dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. - dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. - dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not - dnl documented, we avoid it. - ifelse(gt_included_intl, yes, , [ - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - ]) - - dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation. - gt_INTL_MACOSX - - dnl Set USE_NLS. - AC_REQUIRE([AM_NLS]) - - ifelse(gt_included_intl, yes, [ - BUILD_INCLUDED_LIBINTL=no - USE_INCLUDED_LIBINTL=no - ]) - LIBINTL= - LTLIBINTL= - POSUB= - - dnl Add a version number to the cache macros. - case " $gt_needs " in - *" need-formatstring-macros "*) gt_api_version=3 ;; - *" need-ngettext "*) gt_api_version=2 ;; - *) gt_api_version=1 ;; - esac - gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" - gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - gt_use_preinstalled_gnugettext=no - ifelse(gt_included_intl, yes, [ - AC_MSG_CHECKING([whether included gettext is requested]) - AC_ARG_WITH([included-gettext], - [ --with-included-gettext use the GNU gettext library included here], - nls_cv_force_use_gnu_gettext=$withval, - nls_cv_force_use_gnu_gettext=no) - AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext]) - - nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" - if test "$nls_cv_force_use_gnu_gettext" != "yes"; then - ]) - dnl User does not insist on using GNU NLS library. Figure out what - dnl to use. If GNU gettext is available we use this. Else we have - dnl to fall back to GNU NLS library. - - if test $gt_api_version -ge 3; then - gt_revision_test_code=' -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -#endif -changequote(,)dnl -typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -changequote([,])dnl -' - else - gt_revision_test_code= - fi - if test $gt_api_version -ge 2; then - gt_expression_test_code=' + * ngettext ("", "", 0)' - else - gt_expression_test_code= - fi - - AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], - [AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -extern int _nl_msg_cat_cntr; -extern int *_nl_domain_bindings; -#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) -#else -#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -#endif -$gt_revision_test_code - ]], - [[ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION - ]])], - [eval "$gt_func_gnugettext_libc=yes"], - [eval "$gt_func_gnugettext_libc=no"])]) - - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then - dnl Sometimes libintl requires libiconv, so first search for libiconv. - ifelse(gt_included_intl, yes, , [ - AM_ICONV_LINK - ]) - dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL - dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) - dnl because that would add "-liconv" to LIBINTL and LTLIBINTL - dnl even if libiconv doesn't exist. - AC_LIB_LINKFLAGS_BODY([intl]) - AC_CACHE_CHECK([for GNU gettext in libintl], - [$gt_func_gnugettext_libintl], - [gt_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $INCINTL" - gt_save_LIBS="$LIBS" - LIBS="$LIBS $LIBINTL" - dnl Now see whether libintl exists and does not depend on libiconv. - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) -#else -#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -#endif -$gt_revision_test_code - ]], - [[ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION - ]])], - [eval "$gt_func_gnugettext_libintl=yes"], - [eval "$gt_func_gnugettext_libintl=no"]) - dnl Now see whether libintl exists and depends on libiconv. - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then - LIBS="$LIBS $LIBICONV" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -extern int _nl_msg_cat_cntr; -extern -#ifdef __cplusplus -"C" -#endif -const char *_nl_expand_alias (const char *); -#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) -#else -#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -#endif -$gt_revision_test_code - ]], - [[ -bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION - ]])], - [LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - eval "$gt_func_gnugettext_libintl=yes" - ]) - fi - CPPFLAGS="$gt_save_CPPFLAGS" - LIBS="$gt_save_LIBS"]) - fi - - dnl If an already present or preinstalled GNU gettext() is found, - dnl use it. But if this macro is used in GNU gettext, and GNU - dnl gettext is already preinstalled in libintl, we update this - dnl libintl. (Cf. the install rule in intl/Makefile.in.) - if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ - || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ - && test "$PACKAGE" != gettext-runtime \ - && test "$PACKAGE" != gettext-tools; }; then - gt_use_preinstalled_gnugettext=yes - else - dnl Reset the values set by searching for libintl. - LIBINTL= - LTLIBINTL= - INCINTL= - fi - - ifelse(gt_included_intl, yes, [ - if test "$gt_use_preinstalled_gnugettext" != "yes"; then - dnl GNU gettext is not found in the C library. - dnl Fall back on included GNU gettext library. - nls_cv_use_gnu_gettext=yes - fi - fi - - if test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions used to generate GNU NLS library. - BUILD_INCLUDED_LIBINTL=yes - USE_INCLUDED_LIBINTL=yes - LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" - LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" - LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` - fi - - CATOBJEXT= - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Mark actions to use GNU gettext tools. - CATOBJEXT=.gmo - fi - ]) - - if test -n "$INTL_MACOSX_LIBS"; then - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - dnl Some extra flags are needed during linking. - LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" - LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" - fi - fi - - if test "$gt_use_preinstalled_gnugettext" = "yes" \ - || test "$nls_cv_use_gnu_gettext" = "yes"; then - AC_DEFINE([ENABLE_NLS], [1], - [Define to 1 if translation of program messages to the user's native language - is requested.]) - else - USE_NLS=no - fi - fi - - AC_MSG_CHECKING([whether to use NLS]) - AC_MSG_RESULT([$USE_NLS]) - if test "$USE_NLS" = "yes"; then - AC_MSG_CHECKING([where the gettext function comes from]) - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - gt_source="external libintl" - else - gt_source="libc" - fi - else - gt_source="included intl directory" - fi - AC_MSG_RESULT([$gt_source]) - fi - - if test "$USE_NLS" = "yes"; then - - if test "$gt_use_preinstalled_gnugettext" = "yes"; then - if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then - AC_MSG_CHECKING([how to link with libintl]) - AC_MSG_RESULT([$LIBINTL]) - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) - fi - - dnl For backward compatibility. Some packages may be using this. - AC_DEFINE([HAVE_GETTEXT], [1], - [Define if the GNU gettext() function is already present or preinstalled.]) - AC_DEFINE([HAVE_DCGETTEXT], [1], - [Define if the GNU dcgettext() function is already present or preinstalled.]) - fi - - dnl We need to process the po/ directory. - POSUB=po - fi - - ifelse(gt_included_intl, yes, [ - dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL - dnl to 'yes' because some of the testsuite requires it. - if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then - BUILD_INCLUDED_LIBINTL=yes - fi - - dnl Make all variables we use known to autoconf. - AC_SUBST([BUILD_INCLUDED_LIBINTL]) - AC_SUBST([USE_INCLUDED_LIBINTL]) - AC_SUBST([CATOBJEXT]) - - dnl For backward compatibility. Some configure.ins may be using this. - nls_cv_header_intl= - nls_cv_header_libgt= - - dnl For backward compatibility. Some Makefiles may be using this. - DATADIRNAME=share - AC_SUBST([DATADIRNAME]) - - dnl For backward compatibility. Some Makefiles may be using this. - INSTOBJEXT=.mo - AC_SUBST([INSTOBJEXT]) - - dnl For backward compatibility. Some Makefiles may be using this. - GENCAT=gencat - AC_SUBST([GENCAT]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLOBJS= - if test "$USE_INCLUDED_LIBINTL" = yes; then - INTLOBJS="\$(GETTOBJS)" - fi - AC_SUBST([INTLOBJS]) - - dnl Enable libtool support if the surrounding package wishes it. - INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix - AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX]) - ]) - - dnl For backward compatibility. Some Makefiles may be using this. - INTLLIBS="$LIBINTL" - AC_SUBST([INTLLIBS]) - - dnl Make all documented variables known to autoconf. - AC_SUBST([LIBINTL]) - AC_SUBST([LTLIBINTL]) - AC_SUBST([POSUB]) -]) - - -dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. -m4_define([gt_NEEDS_INIT], -[ - m4_divert_text([DEFAULTS], [gt_needs=]) - m4_define([gt_NEEDS_INIT], []) -]) - - -dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) -AC_DEFUN([AM_GNU_GETTEXT_NEED], -[ - m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) -]) - - -dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) - - -dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version]) -AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], []) - -# iconv.m4 serial 19 (gettext-0.18.2) -dnl Copyright (C) 2000-2002, 2007-2014, 2016 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -[ - dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - AC_REQUIRE([AC_LIB_RPATH]) - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_LIB_LINKFLAGS_BODY([iconv]) -]) - -AC_DEFUN([AM_ICONV_LINK], -[ - dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and - dnl those with the standalone portable GNU libiconv installed). - AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles - - dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV - dnl accordingly. - AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) - - dnl Add $INCICONV to CPPFLAGS before performing the following checks, - dnl because if the user has installed libiconv and not disabled its use - dnl via --without-libiconv-prefix, he wants to use it. The first - dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed. - am_save_CPPFLAGS="$CPPFLAGS" - AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) - - AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [ - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#include - ]], - [[iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);]])], - [am_cv_func_iconv=yes]) - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS $LIBICONV" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#include - ]], - [[iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd);]])], - [am_cv_lib_iconv=yes] - [am_cv_func_iconv=yes]) - LIBS="$am_save_LIBS" - fi - ]) - if test "$am_cv_func_iconv" = yes; then - AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [ - dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11, - dnl Solaris 10. - am_save_LIBS="$LIBS" - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi - am_cv_func_iconv_works=no - for ac_iconv_const in '' 'const'; do - AC_RUN_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#include - -#ifndef ICONV_CONST -# define ICONV_CONST $ac_iconv_const -#endif - ]], - [[int result = 0; - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ - { - iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); - if (cd_utf8_to_88591 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ - char buf[10]; - ICONV_CONST char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_utf8_to_88591, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - result |= 1; - iconv_close (cd_utf8_to_88591); - } - } - /* Test against Solaris 10 bug: Failures are not distinguishable from - successful returns. */ - { - iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); - if (cd_ascii_to_88591 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\263"; - char buf[10]; - ICONV_CONST char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_ascii_to_88591, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - result |= 2; - iconv_close (cd_ascii_to_88591); - } - } - /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\304"; - static char buf[2] = { (char)0xDE, (char)0xAD }; - ICONV_CONST char *inptr = input; - size_t inbytesleft = 1; - char *outptr = buf; - size_t outbytesleft = 1; - size_t res = iconv (cd_88591_to_utf8, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) - result |= 4; - iconv_close (cd_88591_to_utf8); - } - } -#if 0 /* This bug could be worked around by the caller. */ - /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; - char buf[50]; - ICONV_CONST char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_88591_to_utf8, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if ((int)res > 0) - result |= 8; - iconv_close (cd_88591_to_utf8); - } - } -#endif - /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is - provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - result |= 16; - return result; -]])], - [am_cv_func_iconv_works=yes], , - [case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac]) - test "$am_cv_func_iconv_works" = no || break - done - LIBS="$am_save_LIBS" - ]) - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; - *) am_func_iconv=yes ;; - esac - else - am_func_iconv=no am_cv_lib_iconv=no - fi - if test "$am_func_iconv" = yes; then - AC_DEFINE([HAVE_ICONV], [1], - [Define if you have the iconv() function and it works.]) - fi - if test "$am_cv_lib_iconv" = yes; then - AC_MSG_CHECKING([how to link with libiconv]) - AC_MSG_RESULT([$LIBICONV]) - else - dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV - dnl either. - CPPFLAGS="$am_save_CPPFLAGS" - LIBICONV= - LTLIBICONV= - fi - AC_SUBST([LIBICONV]) - AC_SUBST([LTLIBICONV]) -]) - -dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to -dnl avoid warnings like -dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required". -dnl This is tricky because of the way 'aclocal' is implemented: -dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN. -dnl Otherwise aclocal's initial scan pass would miss the macro definition. -dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions. -dnl Otherwise aclocal would emit many "Use of uninitialized value $1" -dnl warnings. -m4_define([gl_iconv_AC_DEFUN], - m4_version_prereq([2.64], - [[AC_DEFUN_ONCE( - [$1], [$2])]], - [m4_ifdef([gl_00GNULIB], - [[AC_DEFUN_ONCE( - [$1], [$2])]], - [[AC_DEFUN( - [$1], [$2])]])])) -gl_iconv_AC_DEFUN([AM_ICONV], -[ - AM_ICONV_LINK - if test "$am_cv_func_iconv" = yes; then - AC_MSG_CHECKING([for iconv declaration]) - AC_CACHE_VAL([am_cv_proto_iconv], [ - AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif - ]], - [[]])], - [am_cv_proto_iconv_arg1=""], - [am_cv_proto_iconv_arg1="const"]) - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) - am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - AC_MSG_RESULT([ - $am_cv_proto_iconv]) - AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1], - [Define as const if the declaration of iconv() needs const.]) - dnl Also substitute ICONV_CONST in the gnulib generated . - m4_ifdef([gl_ICONV_H_DEFAULTS], - [AC_REQUIRE([gl_ICONV_H_DEFAULTS]) - if test -n "$am_cv_proto_iconv_arg1"; then - ICONV_CONST="const" - fi - ]) - fi -]) - -# intlmacosx.m4 serial 5 (gettext-0.18.2) -dnl Copyright (C) 2004-2014, 2016 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Checks for special options needed on Mac OS X. -dnl Defines INTL_MACOSX_LIBS. -AC_DEFUN([gt_INTL_MACOSX], -[ - dnl Check for API introduced in Mac OS X 10.2. - AC_CACHE_CHECK([for CFPreferencesCopyAppValue], - [gt_cv_func_CFPreferencesCopyAppValue], - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[CFPreferencesCopyAppValue(NULL, NULL)]])], - [gt_cv_func_CFPreferencesCopyAppValue=yes], - [gt_cv_func_CFPreferencesCopyAppValue=no]) - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then - AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1], - [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) - fi - dnl Check for API introduced in Mac OS X 10.3. - AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent], - [gt_save_LIBS="$LIBS" - LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[#include ]], - [[CFLocaleCopyCurrent();]])], - [gt_cv_func_CFLocaleCopyCurrent=yes], - [gt_cv_func_CFLocaleCopyCurrent=no]) - LIBS="$gt_save_LIBS"]) - if test $gt_cv_func_CFLocaleCopyCurrent = yes; then - AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1], - [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) - fi - INTL_MACOSX_LIBS= - if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then - INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" - fi - AC_SUBST([INTL_MACOSX_LIBS]) -]) - -# lib-ld.m4 serial 6 -dnl Copyright (C) 1996-2003, 2009-2016 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl Subroutines of libtool.m4, -dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid -dnl collision with libtool.m4. - -dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no. -AC_DEFUN([AC_LIB_PROG_LD_GNU], -[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld], -[# I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 /dev/null 2>&1 \ - && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - || PATH_SEPARATOR=';' - } -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` - while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL([acl_cv_path_LD], -[if test -z "$LD"; then - acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$acl_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - acl_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 = 1.10 to complain if config.rpath is missing. - m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) - AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS - AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld - AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host - AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir - AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [ - CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ - ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh - . ./conftest.sh - rm -f ./conftest.sh - acl_cv_rpath=done - ]) - wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" - acl_shlibext="$acl_cv_shlibext" - acl_libname_spec="$acl_cv_libname_spec" - acl_library_names_spec="$acl_cv_library_names_spec" - acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" - dnl Determine whether the user wants rpath handling at all. - AC_ARG_ENABLE([rpath], - [ --disable-rpath do not hardcode runtime library paths], - :, enable_rpath=yes) -]) - -dnl AC_LIB_FROMPACKAGE(name, package) -dnl declares that libname comes from the given package. The configure file -dnl will then not have a --with-libname-prefix option but a -dnl --with-package-prefix option. Several libraries can come from the same -dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar -dnl macro call that searches for libname. -AC_DEFUN([AC_LIB_FROMPACKAGE], -[ - pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) - define([acl_frompackage_]NAME, [$2]) - popdef([NAME]) - pushdef([PACK],[$2]) - pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) - define([acl_libsinpackage_]PACKUP, - m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1]) - popdef([PACKUP]) - popdef([PACK]) -]) - -dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -dnl the libraries corresponding to explicit and implicit dependencies. -dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found -dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem. -AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -[ - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) - pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])]) - pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-], - [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])]) - pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])]) - dnl Autoconf >= 2.61 supports dots in --with options. - pushdef([P_A_C_K],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[m4_translit(PACK,[.],[_])],PACK)]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_ARG_WITH(P_A_C_K[-prefix], -[[ --with-]]P_A_C_K[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib - --without-]]P_A_C_K[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi - fi - fi -]) - dnl Search the library and its dependencies in $additional_libdir and - dnl $LDFLAGS. Using breadth-first-seach. - LIB[]NAME= - LTLIB[]NAME= - INC[]NAME= - LIB[]NAME[]_PREFIX= - dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been - dnl computed. So it has to be reset here. - HAVE_LIB[]NAME= - rpathdirs= - ltrpathdirs= - names_already_handled= - names_next_round='$1 $2' - while test -n "$names_next_round"; do - names_this_round="$names_next_round" - names_next_round= - for name in $names_this_round; do - already_handled= - for n in $names_already_handled; do - if test "$n" = "$name"; then - already_handled=yes - break - fi - done - if test -z "$already_handled"; then - names_already_handled="$names_already_handled $name" - dnl See if it was already located by an earlier AC_LIB_LINKFLAGS - dnl or AC_LIB_HAVE_LINKFLAGS call. - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` - eval value=\"\$HAVE_LIB$uppername\" - if test -n "$value"; then - if test "$value" = yes; then - eval value=\"\$LIB$uppername\" - test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" - eval value=\"\$LTLIB$uppername\" - test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" - else - dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined - dnl that this library doesn't exist. So just drop it. - : - fi - else - dnl Search the library lib$name in $additional_libdir and $LDFLAGS - dnl and the already constructed $LIBNAME/$LTLIBNAME. - found_dir= - found_la= - found_so= - found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi - if test $use_additional = yes; then - dir="$additional_libdir" - dnl The same code as in the loop below: - dnl First look for a shared library. - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - dnl Then look for a static library. - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - fi - if test "X$found_dir" = "X"; then - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - case "$x" in - -L*) - dir=`echo "X$x" | sed -e 's/^X-L//'` - dnl First look for a shared library. - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" - else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi - fi - fi - dnl Then look for a static library. - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi - fi - ;; - esac - if test "X$found_dir" != "X"; then - break - fi - done - fi - if test "X$found_dir" != "X"; then - dnl Found the library. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" - if test "X$found_so" != "X"; then - dnl Linking with a shared library. We attempt to hardcode its - dnl directory into the executable's runpath, unless it's the - dnl standard /usr/lib. - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then - dnl No hardcoding is needed. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $found_dir" - fi - dnl The hardcoding into $LIBNAME is system dependent. - if test "$acl_hardcode_direct" = yes; then - dnl Using DIR/libNAME.so during linking hardcodes DIR into the - dnl resulting binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode DIR into the resulting - dnl binary. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $found_dir" - fi - else - dnl Rely on "-L$found_dir". - dnl But don't add it if it's already contained in the LDFLAGS - dnl or the already constructed $LIBNAME - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$found_dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" - fi - if test "$acl_hardcode_minus_L" != no; then - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" - else - dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH - dnl here, because this doesn't fit in flags passed to the - dnl compiler. So give up. No hardcoding. This affects only - dnl very old systems. - dnl FIXME: Not sure whether we should use - dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" - dnl here. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - fi - fi - fi - fi - else - if test "X$found_a" != "X"; then - dnl Linking with a static library. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" - else - dnl We shouldn't come here, but anyway it's good to have a - dnl fallback. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" - fi - fi - dnl Assume the include files are nearby. - additional_includedir= - case "$found_dir" in - */$acl_libdirstem | */$acl_libdirstem/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = '$1'; then - LIB[]NAME[]_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = '$1'; then - LIB[]NAME[]_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - esac - if test "X$additional_includedir" != "X"; then - dnl Potentially add $additional_includedir to $INCNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's /usr/local/include and we are using GCC on Linux, - dnl 3. if it's already present in $CPPFLAGS or the already - dnl constructed $INCNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - for x in $CPPFLAGS $INC[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $INCNAME. - INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" - fi - fi - fi - fi - fi - dnl Look for dependencies. - if test -n "$found_la"; then - dnl Read the .la file. It defines the variables - dnl dlname, library_names, old_library, dependency_libs, current, - dnl age, revision, installed, dlopen, dlpreopen, libdir. - save_libdir="$libdir" - case "$found_la" in - */* | *\\*) . "$found_la" ;; - *) . "./$found_la" ;; - esac - libdir="$save_libdir" - dnl We use only dependency_libs. - for dep in $dependency_libs; do - case "$dep" in - -L*) - additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's /usr/local/lib and we are using GCC on Linux, - dnl 3. if it's already present in $LDFLAGS or the already - dnl constructed $LIBNAME, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then - haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - haveit= - for x in $LDFLAGS $LIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LIBNAME. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" - fi - fi - haveit= - for x in $LDFLAGS $LTLIB[]NAME; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LTLIBNAME. - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" - fi - fi - fi - fi - ;; - -R*) - dir=`echo "X$dep" | sed -e 's/^X-R//'` - if test "$enable_rpath" != no; then - dnl Potentially add DIR to rpathdirs. - dnl The rpathdirs will be appended to $LIBNAME at the end. - haveit= - for x in $rpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - rpathdirs="$rpathdirs $dir" - fi - dnl Potentially add DIR to ltrpathdirs. - dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. - haveit= - for x in $ltrpathdirs; do - if test "X$x" = "X$dir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - ltrpathdirs="$ltrpathdirs $dir" - fi - fi - ;; - -l*) - dnl Handle this in the next round. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` - ;; - *.la) - dnl Handle this in the next round. Throw away the .la's - dnl directory; it is already contained in a preceding -L - dnl option. - names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` - ;; - *) - dnl Most likely an immediate library name. - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" - ;; - esac - done - fi - else - dnl Didn't find the library; assume it is in the system directories - dnl known to the linker and runtime loader. (All the system - dnl directories known to the linker should also be known to the - dnl runtime loader, otherwise the system is severely misconfigured.) - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" - fi - fi - fi - done - done - if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user must - dnl pass all path elements in one option. We can arrange that for a - dnl single library, but not when more than one $LIBNAMEs are used. - alldirs= - for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" - done - dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl. - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - else - dnl The -rpath options are cumulative. - for found_dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" - done - fi - fi - if test "X$ltrpathdirs" != "X"; then - dnl When using libtool, the option that works for both libraries and - dnl executables is -R. The -R options are cumulative. - for found_dir in $ltrpathdirs; do - LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" - done - fi - popdef([P_A_C_K]) - popdef([PACKLIBS]) - popdef([PACKUP]) - popdef([PACK]) - popdef([NAME]) -]) - -dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -dnl unless already present in VAR. -dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -dnl contains two or three consecutive elements that belong together. -AC_DEFUN([AC_LIB_APPENDTOVAR], -[ - for element in [$2]; do - haveit= - for x in $[$1]; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X$element"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - [$1]="${[$1]}${[$1]:+ }$element" - fi - done -]) - -dnl For those cases where a variable contains several -L and -l options -dnl referring to unknown libraries and directories, this macro determines the -dnl necessary additional linker options for the runtime path. -dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) -dnl sets LDADDVAR to linker options needed together with LIBSVALUE. -dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, -dnl otherwise linking without libtool is assumed. -AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], -[ - AC_REQUIRE([AC_LIB_RPATH]) - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - $1= - if test "$enable_rpath" != no; then - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then - dnl Use an explicit option to hardcode directories into the resulting - dnl binary. - rpathdirs= - next= - for opt in $2; do - if test -n "$next"; then - dir="$next" - dnl No need to hardcode the standard /usr/lib. - if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then - rpathdirs="$rpathdirs $dir" - fi - next= - else - case $opt in - -L) next=yes ;; - -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` - dnl No need to hardcode the standard /usr/lib. - if test "X$dir" != "X/usr/$acl_libdirstem" \ - && test "X$dir" != "X/usr/$acl_libdirstem2"; then - rpathdirs="$rpathdirs $dir" - fi - next= ;; - *) next= ;; - esac - fi - done - if test "X$rpathdirs" != "X"; then - if test -n ""$3""; then - dnl libtool is used for linking. Use -R options. - for dir in $rpathdirs; do - $1="${$1}${$1:+ }-R$dir" - done - else - dnl The linker is used for linking directly. - if test -n "$acl_hardcode_libdir_separator"; then - dnl Weird platform: only the last -rpath option counts, the user - dnl must pass all path elements in one option. - alldirs= - for dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir" - done - acl_save_libdir="$libdir" - libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - $1="$flag" - else - dnl The -rpath options are cumulative. - for dir in $rpathdirs; do - acl_save_libdir="$libdir" - libdir="$dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" - libdir="$acl_save_libdir" - $1="${$1}${$1:+ }$flag" - done - fi - fi - fi - fi - fi - AC_SUBST([$1]) -]) - -# lib-prefix.m4 serial 7 (gettext-0.18) -dnl Copyright (C) 2001-2005, 2008-2016 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. - -dnl From Bruno Haible. - -dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -dnl require excessive bracketing. -ifdef([AC_HELP_STRING], -[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) - -dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -dnl to access previously installed libraries. The basic assumption is that -dnl a user will want packages to use other packages he previously installed -dnl with the same --prefix option. -dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -dnl libraries, but is otherwise very convenient. -AC_DEFUN([AC_LIB_PREFIX], -[ - AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) - AC_REQUIRE([AC_PROG_CC]) - AC_REQUIRE([AC_CANONICAL_HOST]) - AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) - AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) - dnl By default, look in $includedir and $libdir. - use_additional=yes - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - AC_LIB_ARG_WITH([lib-prefix], -[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib - --without-lib-prefix don't search for libraries in includedir and libdir], -[ - if test "X$withval" = "Xno"; then - use_additional=no - else - if test "X$withval" = "X"; then - AC_LIB_WITH_FINAL_PREFIX([ - eval additional_includedir=\"$includedir\" - eval additional_libdir=\"$libdir\" - ]) - else - additional_includedir="$withval/include" - additional_libdir="$withval/$acl_libdirstem" - fi - fi -]) - if test $use_additional = yes; then - dnl Potentially add $additional_includedir to $CPPFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/include, - dnl 2. if it's already present in $CPPFLAGS, - dnl 3. if it's /usr/local/include and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_includedir" != "X/usr/include"; then - haveit= - for x in $CPPFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-I$additional_includedir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_includedir" = "X/usr/local/include"; then - if test -n "$GCC"; then - case $host_os in - linux* | gnu* | k*bsd*-gnu) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_includedir"; then - dnl Really add $additional_includedir to $CPPFLAGS. - CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" - fi - fi - fi - fi - dnl Potentially add $additional_libdir to $LDFLAGS. - dnl But don't add it - dnl 1. if it's the standard /usr/lib, - dnl 2. if it's already present in $LDFLAGS, - dnl 3. if it's /usr/local/lib and we are using GCC on Linux, - dnl 4. if it doesn't exist as a directory. - if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then - haveit= - for x in $LDFLAGS; do - AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) - if test "X$x" = "X-L$additional_libdir"; then - haveit=yes - break - fi - done - if test -z "$haveit"; then - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then - if test -n "$GCC"; then - case $host_os in - linux*) haveit=yes;; - esac - fi - fi - if test -z "$haveit"; then - if test -d "$additional_libdir"; then - dnl Really add $additional_libdir to $LDFLAGS. - LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" - fi - fi - fi - fi - fi -]) - -dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -dnl acl_final_exec_prefix, containing the values to which $prefix and -dnl $exec_prefix will expand at the end of the configure script. -AC_DEFUN([AC_LIB_PREPARE_PREFIX], -[ - dnl Unfortunately, prefix and exec_prefix get only finally determined - dnl at the end of configure. - if test "X$prefix" = "XNONE"; then - acl_final_prefix="$ac_default_prefix" - else - acl_final_prefix="$prefix" - fi - if test "X$exec_prefix" = "XNONE"; then - acl_final_exec_prefix='${prefix}' - else - acl_final_exec_prefix="$exec_prefix" - fi - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -dnl variables prefix and exec_prefix bound to the values they will have -dnl at the end of the configure script. -AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -[ - acl_save_prefix="$prefix" - prefix="$acl_final_prefix" - acl_save_exec_prefix="$exec_prefix" - exec_prefix="$acl_final_exec_prefix" - $1 - exec_prefix="$acl_save_exec_prefix" - prefix="$acl_save_prefix" -]) - -dnl AC_LIB_PREPARE_MULTILIB creates -dnl - a variable acl_libdirstem, containing the basename of the libdir, either -dnl "lib" or "lib64" or "lib/64", -dnl - a variable acl_libdirstem2, as a secondary possible value for -dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or -dnl "lib/amd64". -AC_DEFUN([AC_LIB_PREPARE_MULTILIB], -[ - dnl There is no formal standard regarding lib and lib64. - dnl On glibc systems, the current practice is that on a system supporting - dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under - dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine - dnl the compiler's default mode by looking at the compiler's library search - dnl path. If at least one of its elements ends in /lib64 or points to a - dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI. - dnl Otherwise we use the default, namely "lib". - dnl On Solaris systems, the current practice is that on a system supporting - dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under - dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or - dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib. - AC_REQUIRE([AC_CANONICAL_HOST]) - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment - dnl . - dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link." - dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the - dnl symlink is missing, so we set acl_libdirstem2 too. - AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit], - [AC_EGREP_CPP([sixtyfour bits], [ -#ifdef _LP64 -sixtyfour bits -#endif - ], [gl_cv_solaris_64bit=yes], [gl_cv_solaris_64bit=no]) - ]) - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; - esac - fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" -]) - -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . -]) - -# serial 58 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_PREPARE_CC_BASENAME -# ----------------------- -m4_defun([_LT_PREPARE_CC_BASENAME], [ -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in @S|@*""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} -])# _LT_PREPARE_CC_BASENAME - - -# _LT_CC_BASENAME(CC) -# ------------------- -# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, -# but that macro is also expanded into generated libtool script, which -# arranges for $SED and $ECHO to be set by different means. -m4_defun([_LT_CC_BASENAME], -[m4_require([_LT_PREPARE_CC_BASENAME])dnl -AC_REQUIRE([_LT_DECL_SED])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -func_cc_basename $1 -cc_basename=$func_cc_basename_result -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -dnl -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl -m4_require([_LT_CMD_TRUNCATE])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from 'configure', and 'config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# 'config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain=$ac_aux_dir/ltmain.sh -])# _LT_PROG_LTMAIN - - - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the 'libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to 'config.status' so that its -# declaration there will have the same value as in 'configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags='_LT_TAGS'dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into 'config.status', and then the shell code to quote escape them in -# for loops in 'config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# '#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test 0 = "$lt_write_fail" && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -'$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2011 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test 0 != $[#] -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try '$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try '$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test yes = "$silent" && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -_LT_COPYING -_LT_LIBTOOL_TAGS - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -_LT_PREPARE_MUNGE_PATH_LIST -_LT_PREPARE_CC_BASENAME - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Go], [_LT_LANG(GO)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -m4_ifndef([AC_PROG_GO], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_GO. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -m4_defun([AC_PROG_GO], -[AC_LANG_PUSH(Go)dnl -AC_ARG_VAR([GOC], [Go compiler command])dnl -AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -_AC_ARG_VAR_LDFLAGS()dnl -AC_CHECK_TOOL(GOC, gccgo) -if test -z "$GOC"; then - if test -n "$ac_tool_prefix"; then - AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) - fi -fi -if test -z "$GOC"; then - AC_CHECK_PROG(GOC, gccgo, gccgo, false) -fi -])#m4_defun -])#m4_ifndef - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([AC_PROG_GO], - [LT_LANG(GO)], - [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS=$save_LDFLAGS - ]) - - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&AS_MESSAGE_LOG_FD - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[[012]][[,.]]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES([TAG]) -# --------------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test yes = "$lt_cv_ld_force_load"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], - [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - m4_if([$1], [CXX], -[ if test yes != "$lt_cv_apple_cc_single_mod"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script that will find a shell with a builtin -# printf (that we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case $ECHO in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], - [Search for dependent libraries within DIR (or the compiler's sysroot - if not specified).])], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([$with_sysroot]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and where our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test yes = "[$]$2"; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS -]) - -if test yes = "[$]$2"; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n "$lt_cv_sys_max_cmd_len"; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes = "$cross_compiling"; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen=shl_load], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen=dlopen], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links=nottested -if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test no = "$hard_links"; then - AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", - [Define to the sub-directory where libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then - - # We can hardcode non-existent directories. - if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && - test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || - test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_PREPARE_MUNGE_PATH_LIST -# --------------------------- -# Make sure func_munge_path_list() is defined correctly. -m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], -[[# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x@S|@2 in - x) - ;; - *:) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" - ;; - x:*) - eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" - ;; - *) - eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" - ;; - esac -} -]])# _LT_PREPARE_PATH_LIST - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -AC_ARG_VAR([LT_SYS_LIBRARY_PATH], -[User-defined run-time library search path.]) - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[[4-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a[(]lib.so.V[)]' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[23]].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsdelf*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='NetBSD ld.elf_so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], - [Detected run-time system search path for libraries]) -_LT_DECL([], [configure_time_lt_sys_library_path], [2], - [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program that can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$1"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac]) -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program that can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test no = "$withval" || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], -[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi]) -rm -f conftest.i conftest2.i conftest.out]) -])# _LT_PATH_DD - - -# _LT_CMD_TRUNCATE -# ---------------- -# find command to truncate a binary pipe -m4_defun([_LT_CMD_TRUNCATE], -[m4_require([_LT_PATH_DD]) -AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], -[printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) -_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], - [Command to truncate a binary pipe]) -])# _LT_CMD_TRUNCATE - - -# _LT_CHECK_MAGIC_METHOD -# ---------------------- -# how to check for library dependencies -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_MAGIC_METHOD], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -AC_CACHE_CHECK([how to recognize dependent libraries], -lt_cv_deplibs_check_method, -[lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[[4-9]]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[[45]]*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi]) -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# _LT_DLL_DEF_P([FILE]) -# --------------------- -# True iff FILE is a Windows DLL '.def' file. -# Keep in sync with func_dll_def_p in the libtool script -AC_DEFUN([_LT_DLL_DEF_P], -[dnl - test DEF = "`$SED -n dnl - -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace - -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments - -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl - -e q dnl Only consider the first "real" line - $1`" dnl -])# _LT_DLL_DEF_P - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM=-lm) - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD - if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], - [Transform the output of nm into a list of symbols to manually relocate]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], - [The name lister interface]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64, which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd* | netbsdelf*-gnu) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test yes = "$GCC"; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - case $host_os in - os2*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # flang / f18. f95 an alias for gfortran or flang on Debian - flang* | f18* | f95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ F* | *Sun*Fortran*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - *Intel*\ [[CF]]*Compiler*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - *Portland\ Group*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - linux* | k*bsd*-gnu | gnu*) - _LT_TAGVAR(link_all_deplibs, $1)=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS=$save_LDFLAGS]) - if test yes = "$lt_cv_irix_exported_symbol"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - _LT_TAGVAR(link_all_deplibs, $1)=no - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - _LT_TAGVAR(ld_shlibs, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd* | netbsdelf*-gnu) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - osf3*) - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting $shlibpath_var if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC=$CC -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report what library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC=$lt_save_CC -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test no != "$CXX" && - ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || - (test g++ != "$CXX"))); then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_caught_CXX_error"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test yes = "$GXX"; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test yes = "$GXX"; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test yes = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='$wl' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - ;; - esac - - if test yes = "$GXX"; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag=$shared_flag' $wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - # The "-G" linker flag allows undefined symbols. - _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared - # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - shrext_cmds=.dll - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd2.*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test yes = "$GXX"; then - if test no = "$with_gnu_ld"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - if test yes = "$supports_anon_versioning"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test yes,no = "$GXX,$with_gnu_ld"; then - _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' - else - # g++ 2.7 appears to require '-G' NOT '-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no - - _LT_TAGVAR(GCC, $1)=$GXX - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test yes != "$_lt_caught_CXX_error" - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case @S|@2 in - .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; - *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -package foo -func foo() { -} -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case $prev$p in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test x-L = "$p" || - test x-R = "$p"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test no = "$pre_test_object_deps_done"; then - case $prev in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)=$prev$p - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test no = "$pre_test_object_deps_done"; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)=$p - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)=$p - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test no = "$F77"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_F77"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$G77 - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_F77" - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test no = "$FC"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test yes != "$_lt_disable_FC"; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu - _LT_TAGVAR(LD, $1)=$LD - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test yes != "$_lt_disable_FC" - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_GO_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Go compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_GO_CONFIG], -[AC_REQUIRE([LT_PROG_GO])dnl -AC_LANG_SAVE - -# Source file extension for Go test sources. -ac_ext=go - -# Object file extension for compiled Go test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="package main; func main() { }" - -# Code to be used in simple link tests -lt_simple_link_test_code='package main; func main() { }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GOC-"gccgo"} -CFLAGS=$GOFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)=$LD -_LT_CC_BASENAME([$compiler]) - -# Go did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GO_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to 'libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code=$lt_simple_compile_test_code - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_GO -# ---------- -AC_DEFUN([LT_PROG_GO], -[AC_CHECK_TOOL(GOC, gccgo,) -]) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f "$lt_ac_sed" && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test 10 -lt "$lt_ac_count" && break - lt_ac_count=`expr $lt_ac_count + 1` - if test "$lt_ac_count" -gt "$lt_ac_max"; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine what file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS - -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 8 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option '$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl 'shared' nor 'disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], - [_LT_WITH_AIX_SONAME([aix])]) - ]) -])# _LT_SET_OPTIONS - - - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the 'shared' and -# 'disable-shared' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the 'static' and -# 'disable-static' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the 'fast-install' -# and 'disable-fast-install' LT_INIT options. -# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the 'disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_AIX_SONAME([DEFAULT]) -# ---------------------------------- -# implement the --with-aix-soname flag, and support the `aix-soname=aix' -# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT -# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. -m4_define([_LT_WITH_AIX_SONAME], -[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl -shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[[5-9]]*,yes) - AC_MSG_CHECKING([which variant of shared library versioning to provide]) - AC_ARG_WITH([aix-soname], - [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], - [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], - [case $withval in - aix|svr4|both) - ;; - *) - AC_MSG_ERROR([Unknown argument to --with-aix-soname]) - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname], - [AC_CACHE_VAL([lt_cv_with_aix_soname], - [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) - with_aix_soname=$lt_cv_with_aix_soname]) - AC_MSG_RESULT([$with_aix_soname]) - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - -_LT_DECL([], [shared_archive_member_spec], [0], - [Shared archive member basename, for filename based shared library versioning on AIX])dnl -])# _LT_WITH_AIX_SONAME - -LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) -LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' -# LT_INIT options. -# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac], - [pic_mode=m4_default([$1], [default])]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the 'pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) - -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software -# Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59, which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) - -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 4179 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4.6]) -m4_define([LT_PACKAGE_REVISION], [2.4.6]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4.6' -macro_revision='2.4.6' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) - -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software -# Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) - -# nls.m4 serial 5 (gettext-0.18) -dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016 Free Software -dnl Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_PREREQ([2.50]) - -AC_DEFUN([AM_NLS], -[ - AC_MSG_CHECKING([whether NLS is requested]) - dnl Default is enabled NLS - AC_ARG_ENABLE([nls], - [ --disable-nls do not use Native Language Support], - USE_NLS=$enableval, USE_NLS=yes) - AC_MSG_RESULT([$USE_NLS]) - AC_SUBST([USE_NLS]) -]) - -# po.m4 serial 24 (gettext-0.19) -dnl Copyright (C) 1995-2014, 2016 Free Software Foundation, Inc. -dnl This file is free software; the Free Software Foundation -dnl gives unlimited permission to copy and/or distribute it, -dnl with or without modifications, as long as this notice is preserved. -dnl -dnl This file can be used in projects which are not available under -dnl the GNU General Public License or the GNU Library General Public -dnl License but which still want to provide support for the GNU gettext -dnl functionality. -dnl Please note that the actual code of the GNU gettext library is covered -dnl by the GNU Library General Public License, and the rest of the GNU -dnl gettext package is covered by the GNU General Public License. -dnl They are *not* in the public domain. - -dnl Authors: -dnl Ulrich Drepper , 1995-2000. -dnl Bruno Haible , 2000-2003. - -AC_PREREQ([2.60]) - -dnl Checks for all prerequisites of the po subdirectory. -AC_DEFUN([AM_PO_SUBDIRS], -[ - AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_INSTALL])dnl - AC_REQUIRE([AC_PROG_MKDIR_P])dnl - AC_REQUIRE([AC_PROG_SED])dnl - AC_REQUIRE([AM_NLS])dnl - - dnl Release version of the gettext macros. This is used to ensure that - dnl the gettext macros and po/Makefile.in.in are in sync. - AC_SUBST([GETTEXT_MACRO_VERSION], [0.19]) - - dnl Perform the following tests also if --disable-nls has been given, - dnl because they are needed for "make dist" to work. - - dnl Search for GNU msgfmt in the PATH. - dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. - dnl The second test excludes FreeBSD msgfmt. - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT]) - - dnl Test whether it is GNU msgfmt >= 0.15. -changequote(,)dnl - case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; - *) MSGFMT_015=$MSGFMT ;; - esac -changequote([,])dnl - AC_SUBST([MSGFMT_015]) -changequote(,)dnl - case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; - *) GMSGFMT_015=$GMSGFMT ;; - esac -changequote([,])dnl - AC_SUBST([GMSGFMT_015]) - - dnl Search for GNU xgettext 0.12 or newer in the PATH. - dnl The first test excludes Solaris xgettext and early GNU xgettext versions. - dnl The second test excludes FreeBSD xgettext. - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], - :) - dnl Remove leftover from FreeBSD xgettext call. - rm -f messages.po - - dnl Test whether it is GNU xgettext >= 0.15. -changequote(,)dnl - case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in - '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; - *) XGETTEXT_015=$XGETTEXT ;; - esac -changequote([,])dnl - AC_SUBST([XGETTEXT_015]) - - dnl Search for GNU msgmerge 0.11 or newer in the PATH. - AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, - [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) - - dnl Installation directories. - dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we - dnl have to define it here, so that it can be used in po/Makefile. - test -n "$localedir" || localedir='${datadir}/locale' - AC_SUBST([localedir]) - - dnl Support for AM_XGETTEXT_OPTION. - test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= - AC_SUBST([XGETTEXT_EXTRA_OPTIONS]) - - AC_CONFIG_COMMANDS([po-directories], [[ - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - # Treat a directory as a PO directory if and only if it has a - # POTFILES.in file. This allows packages to have multiple PO - # directories under different names or in different locations. - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - gt_tab=`printf '\t'` - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assignment from automake < 1.5. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - # Compute POFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) - # Compute UPDATEPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) - # Compute DUMMYPOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) - # Compute GMOFILES - # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - UPDATEPOFILES= - DUMMYPOFILES= - GMOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done]], - [# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it - # from automake < 1.5. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - ]) -]) - -dnl Postprocesses a Makefile in a directory containing PO files. -AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -[ - # When this code is run, in config.status, two variables have already been - # set: - # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, - # - LINGUAS is the value of the environment variable LINGUAS at configure - # time. - -changequote(,)dnl - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - # Find a way to echo strings without interpreting backslash. - if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='echo' - else - if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then - gt_echo='printf %s\n' - else - echo_func () { - cat < "$ac_file.tmp" - tab=`printf '\t'` - if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` - cat >> "$ac_file.tmp" < /dev/null; then - # Add dependencies that cannot be formulated as a simple suffix rule. - for lang in $ALL_LINGUAS; do - frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` - cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. - -AC_PREREQ([2.50]) - -# Search path for a program which passes the given test. - -dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -AC_DEFUN([AM_PATH_PROG_WITH_TEST], -[ -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which - # contains only /bin. Note that ksh looks also at the FPATH variable, - # so we have to set that as well for the test. - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - || PATH_SEPARATOR=';' - } -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "$2", so it can be a program name with args. -set dummy $2; ac_word=[$]2 -AC_MSG_CHECKING([for $ac_word]) -AC_CACHE_VAL([ac_cv_path_$1], -[case "[$]$1" in - [[\\/]]* | ?:[[\\/]]*) - ac_cv_path_$1="[$]$1" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in ifelse([$5], , $PATH, [$5]); do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD - if [$3]; then - ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" -dnl If no 4th arg is given, leave the cache variable unset, -dnl so AC_PATH_PROGS will keep looking. -ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -])dnl - ;; -esac])dnl -$1="$ac_cv_path_$1" -if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then - AC_MSG_RESULT([$][$1]) -else - AC_MSG_RESULT([no]) -fi -AC_SUBST([$1])dnl -]) - # Copyright (C) 2002-2018 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation @@ -12259,6 +753,38 @@ else fi ]) +# Copyright (C) 2003-2018 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for 'mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl FIXME we are no longer going to remove this! adjust warning +dnl FIXME message accordingly. +AC_DIAGNOSE([obsolete], +[$0: this macro is deprecated, and will soon be removed. +You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead, +and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.]) +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2018 Free Software Foundation, Inc. @@ -12675,4 +1201,17 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +m4_include([m4/gettext.m4]) +m4_include([m4/iconv.m4]) +m4_include([m4/lib-ld.m4]) +m4_include([m4/lib-link.m4]) +m4_include([m4/lib-prefix.m4]) +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) +m4_include([m4/nls.m4]) +m4_include([m4/po.m4]) +m4_include([m4/progtest.m4]) m4_include([acinclude.m4]) diff --git a/config.h.in b/config.h.in index 2b7268ec..68b45de1 100644 --- a/config.h.in +++ b/config.h.in @@ -30,20 +30,26 @@ /* Define to 1 if you have the header file. */ #undef HAVE_ACL_LIBACL_H +/* Define to 1 if you have the `arc4random_buf' function. */ +#undef HAVE_ARC4RANDOM_BUF + /* Define to 1 if you have the header file. */ #undef HAVE_ATTR_ERROR_CONTEXT_H /* Define to 1 if you have the header file. */ #undef HAVE_ATTR_LIBATTR_H -/* Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the +/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework. */ #undef HAVE_CFLOCALECOPYCURRENT -/* Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in +/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework. */ #undef HAVE_CFPREFERENCESCOPYAPPVALUE +/* Define to 1 if you have the header file. */ +#undef HAVE_CRYPT_H + /* Define if the GNU dcgettext() function is already present or preinstalled. */ #undef HAVE_DCGETTEXT @@ -71,6 +77,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H +/* Define to 1 if you have the `dlopen' function. */ +#undef HAVE_DLOPEN + /* Define to 1 if you have the header file. */ #undef HAVE_ERRNO_H @@ -92,15 +101,15 @@ /* Define to 1 if you have the `getaddrinfo' function. */ #undef HAVE_GETADDRINFO +/* Define to 1 if you have the `getentropy' function. */ +#undef HAVE_GETENTROPY + /* Define to 1 if you have the `getgrgid_r' function. */ #undef HAVE_GETGRGID_R /* Define to 1 if you have the `getgrnam_r' function. */ #undef HAVE_GETGRNAM_R -/* Define to 1 if you have the `getgroups' function. */ -#undef HAVE_GETGROUPS - /* Define to 1 if you have the `gethostname' function. */ #undef HAVE_GETHOSTNAME @@ -110,6 +119,9 @@ /* Define to 1 if you have the `getpwuid_r' function. */ #undef HAVE_GETPWUID_R +/* Define to 1 if you have the `getrandom' function. */ +#undef HAVE_GETRANDOM + /* Define to 1 if you have the `getspnam' function. */ #undef HAVE_GETSPNAM @@ -131,7 +143,7 @@ /* Define to 1 if you have the header file. */ #undef HAVE_GSHADOW_H -/* Define if you have the iconv() function and it works. */ +/* Define if you have the iconv() function. */ #undef HAVE_ICONV /* Define to 1 if you have the `initgroups' function. */ @@ -185,15 +197,9 @@ /* Define to 1 if you have the `lutimes' function. */ #undef HAVE_LUTIMES -/* Define to 1 if you have the `memcpy' function. */ -#undef HAVE_MEMCPY - /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H -/* Define to 1 if you have the `memset' function. */ -#undef HAVE_MEMSET - /* Define to 1 if you have the `mkdir' function. */ #undef HAVE_MKDIR @@ -284,9 +290,6 @@ /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR -/* Define to 1 if you have the `strftime' function. */ -#undef HAVE_STRFTIME - /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H @@ -382,6 +385,9 @@ */ #undef HAVE_SYS_NDIR_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_RANDOM_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H @@ -560,6 +566,9 @@ /* Define if utmpx should be used */ #undef USE_UTMPX +/* Define to allow the yescrypt password encryption algorithm */ +#undef USE_YESCRYPT + /* Version number of package */ #undef VERSION diff --git a/configure b/configure index 6a6abc01..06817832 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for shadow 4.8.1. +# Generated by GNU Autoconf 2.69 for shadow 4.11.1. # # Report bugs to . # @@ -590,8 +590,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='shadow' PACKAGE_TARNAME='shadow' -PACKAGE_VERSION='4.8.1' -PACKAGE_STRING='shadow 4.8.1' +PACKAGE_VERSION='4.11.1' +PACKAGE_STRING='shadow 4.11.1' PACKAGE_BUGREPORT='pkg-shadow-devel@lists.alioth.debian.org' PACKAGE_URL='https://github.com/shadow-maint/shadow' @@ -645,7 +645,6 @@ INTLLIBS LTLIBICONV LIBICONV INTL_MACOSX_LIBS -XGETTEXT_EXTRA_OPTIONS MSGMERGE XGETTEXT_015 XGETTEXT @@ -653,7 +652,6 @@ GMSGFMT_015 MSGFMT_015 GMSGFMT MSGFMT -GETTEXT_MACRO_VERSION USE_NLS LIBMD LIBSKEY @@ -676,6 +674,7 @@ LIBCRACK LIBAUDIT LIBATTR LIBACL +LIYESCRYPT LIBCRYPT ENABLE_SUBIDS_FALSE ENABLE_SUBIDS_TRUE @@ -693,6 +692,8 @@ LIBECONF ECONF_CPPFLAGS WITH_SU_FALSE WITH_SU_TRUE +USE_YESCRYPT_FALSE +USE_YESCRYPT_TRUE USE_BCRYPT_FALSE USE_BCRYPT_TRUE USE_SHA_CRYPT_FALSE @@ -751,6 +752,10 @@ CPPFLAGS LDFLAGS CFLAGS CC +LIBSUBID_ABI +LIBSUBID_ABI_MICRO +LIBSUBID_ABI_MINOR +LIBSUBID_ABI_MAJOR AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V @@ -823,8 +828,8 @@ ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking -enable_shared enable_static +enable_shared enable_maintainer_mode with_pic enable_fast_install @@ -849,6 +854,7 @@ with_tcb with_libcrack with_sha_crypt with_bcrypt +with_yescrypt with_nscd with_sssd with_group_name_max_length @@ -1423,7 +1429,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 shadow 4.8.1 to adapt to many kinds of systems. +\`configure' configures shadow 4.11.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1494,7 +1500,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of shadow 4.8.1:";; + short | recursive ) echo "Configuration of shadow 4.11.1:";; esac cat <<\_ACEOF @@ -1508,8 +1514,8 @@ Optional Features: do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build - --enable-shared[=PKGS] build shared libraries [default=no] --enable-static[=PKGS] build static libraries [default=yes] + --enable-shared[=PKGS] build shared libraries [default=yes] --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer @@ -1556,6 +1562,8 @@ Optional Packages: algorithms [default=yes] --with-bcrypt allow the bcrypt password encryption algorithm [default=no] + --with-yescrypt allow the yescrypt password encryption algorithm + [default=no] --with-nscd enable support for nscd [default=yes] --with-sssd enable support for flushing sssd caches [default=yes] @@ -1567,7 +1575,7 @@ Optional Packages: path to xml catalog to use --with-fcaps use file capabilities instead of suid binaries for newuidmap/newgidmap [default=no] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-gnu-ld assume the C compiler uses GNU ld default=no --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib --without-libiconv-prefix don't search for libiconv in includedir and libdir --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib @@ -1658,7 +1666,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -shadow configure 4.8.1 +shadow configure 4.11.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2367,7 +2375,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by shadow $as_me 4.8.1, which was +It was created by shadow $as_me 4.11.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3232,7 +3240,7 @@ fi # Define the identity of the package. PACKAGE='shadow' - VERSION='4.8.1' + VERSION='4.11.1' cat >>confdefs.h <<_ACEOF @@ -3325,6 +3333,7 @@ END fi fi + # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; @@ -3367,6 +3376,15 @@ AM_BACKSLASH='\' ac_config_headers="$ac_config_headers config.h" +LIBSUBID_ABI_MAJOR=4 + +LIBSUBID_ABI_MINOR=0 + +LIBSUBID_ABI_MICRO=0 + +LIBSUBID_ABI=4.0.0 + + test "$prefix" = "NONE" && prefix="/usr" test "$prefix" = "/usr" && exec_prefix="" @@ -4870,37 +4888,6 @@ $as_echo "$ac_cv_safe_to_define___extensions__" >&6; } -# Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=no -fi - - - - - - - - - # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} @@ -4932,6 +4919,37 @@ fi +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 @@ -7323,7 +7341,7 @@ esac fi : ${AR=ar} -: ${AR_FLAGS=cru} +: ${AR_FLAGS=cr} @@ -9044,8 +9062,8 @@ int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 + echo "$AR cr libconftest.a conftest.o" >&5 + $AR cr libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF @@ -9598,6 +9616,10 @@ _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= @@ -13815,11 +13837,11 @@ $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h fi -for ac_header in errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \ +for ac_header in crypt.h errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \ utmpx.h termios.h termio.h sgtty.h sys/ioctl.h syslog.h paths.h \ - utime.h ulimit.h sys/capability.h sys/resource.h gshadow.h lastlog.h \ - locale.h rpc/key_prot.h netdb.h acl/libacl.h attr/libattr.h \ - attr/error_context.h + utime.h ulimit.h sys/capability.h sys/random.h sys/resource.h \ + gshadow.h lastlog.h locale.h rpc/key_prot.h netdb.h acl/libacl.h \ + attr/libattr.h attr/error_context.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" @@ -13842,11 +13864,12 @@ fi -for ac_func in l64a fchmod fchown fsync futimes getgroups gethostname getspnam \ - gettimeofday getusershell getutent initgroups lchown lckpwdf lstat \ - lutimes memcpy memset setgroups sigaction strchr updwtmp updwtmpx innetgr \ - getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r getaddrinfo \ - ruserok +for ac_func in arc4random_buf l64a fchmod fchown fsync futimes \ + gethostname getentropy getrandom getspnam gettimeofday getusershell \ + getutent initgroups lchown lckpwdf lstat lutimes \ + setgroups sigaction strchr updwtmp updwtmpx innetgr getpwnam_r \ + getpwuid_r getgrnam_r getgrgid_r getspnam_r getaddrinfo ruserok \ + dlopen 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" @@ -14756,61 +14779,6 @@ $as_echo "#define HAVE_UTIME_NULL 1" >>confdefs.h fi rm -f conftest.data -for ac_func in strftime -do : - ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" -if test "x$ac_cv_func_strftime" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRFTIME 1 -_ACEOF - -else - # strftime is in -lintl on SCO UNIX. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 -$as_echo_n "checking for strftime in -lintl... " >&6; } -if ${ac_cv_lib_intl_strftime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strftime (); -int -main () -{ -return strftime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_strftime=yes -else - ac_cv_lib_intl_strftime=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 -$as_echo "$ac_cv_lib_intl_strftime" >&6; } -if test "x$ac_cv_lib_intl_strftime" = xyes; then : - $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h - -LIBS="-lintl $LIBS" -fi - -fi -done - ac_fn_c_check_func "$LINENO" "mkdir" "ac_cv_func_mkdir" if test "x$ac_cv_func_mkdir" = xyes; then : $as_echo "#define HAVE_MKDIR 1" >>confdefs.h @@ -15325,6 +15293,14 @@ else fi +# Check whether --with-yescrypt was given. +if test "${with_yescrypt+set}" = set; then : + withval=$with_yescrypt; with_yescrypt=$withval +else + with_yescrypt=no +fi + + # Check whether --with-nscd was given. if test "${with_nscd+set}" = set; then : withval=$with_nscd; with_nscd=$withval @@ -15396,6 +15372,20 @@ if test "$with_bcrypt" = "yes"; then $as_echo "#define USE_BCRYPT 1" >>confdefs.h +fi + + if test "x$with_yescrypt" = "xyes"; then + USE_YESCRYPT_TRUE= + USE_YESCRYPT_FALSE='#' +else + USE_YESCRYPT_TRUE='#' + USE_YESCRYPT_FALSE= +fi + +if test "$with_yescrypt" = "yes"; then + +$as_echo "#define USE_YESCRYPT 1" >>confdefs.h + fi if test "$with_nscd" = "yes"; then @@ -15425,7 +15415,7 @@ fi if test "$with_su" != "no"; then : $as_echo "#define WITH_SU 1" >>confdefs.h -] + fi if test "x$with_su" != "xno"; then WITH_SU_TRUE= @@ -15985,6 +15975,50 @@ fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 +$as_echo_n "checking for crypt in -lcrypt... " >&6; } +if ${ac_cv_lib_crypt_crypt+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcrypt $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char crypt (); +int +main () +{ +return crypt (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_crypt_crypt=yes +else + ac_cv_lib_crypt_crypt=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 +$as_echo "$ac_cv_lib_crypt_crypt" >&6; } +if test "x$ac_cv_lib_crypt_crypt" = xyes; then : + LIYESCRYPT=-lcrypt +else + as_fn_error $? "crypt() not found" "$LINENO" 5 +fi + + + if test "$with_acl" != "no"; then for ac_header in acl/libacl.h attr/error_context.h do : @@ -17215,6 +17249,13 @@ _ACEOF +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5 $as_echo_n "checking whether NLS is requested... " >&6; } # Check whether --enable-nls was given. @@ -17230,22 +17271,20 @@ $as_echo "$USE_NLS" >&6; } - GETTEXT_MACRO_VERSION=0.19 - - # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which - # contains only /bin. Note that ksh looks also at the FPATH variable, - # so we have to set that as well for the test. - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - || PATH_SEPARATOR=';' - } + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, @@ -17360,14 +17399,15 @@ fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which - # contains only /bin. Note that ksh looks also at the FPATH variable, - # so we have to set that as well for the test. - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - || PATH_SEPARATOR=';' - } + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, @@ -17437,14 +17477,15 @@ fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which - # contains only /bin. Note that ksh looks also at the FPATH variable, - # so we have to set that as well for the test. - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - || PATH_SEPARATOR=';' - } + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi # Find out how to test for executable files. Don't use a zero-byte file, @@ -17505,9 +17546,6 @@ fi test -n "$localedir" || localedir='${datadir}/locale' - test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS= - - ac_config_commands="$ac_config_commands po-directories" @@ -17528,7 +17566,6 @@ fi prefix="$acl_save_prefix" - # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes @@ -17539,21 +17576,21 @@ fi # Prepare PATH_SEPARATOR. # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then - # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which - # contains only /bin. Note that ksh looks also at the FPATH variable, - # so we have to set that as well for the test. - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \ - || PATH_SEPARATOR=';' - } + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh fi - ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5 +$as_echo_n "checking for ld used by GCC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw @@ -17563,12 +17600,12 @@ $as_echo_n "checking for ld used by $CC... " >&6; } esac case $ac_prog in # Accept absolute paths. - [\\/]* | ?:[\\/]*) + [\\/]* | [A-Za-z]:[\\/]*) re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'` - while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do - ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; @@ -17592,26 +17629,23 @@ if ${acl_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then - acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" for ac_dir in $PATH; do - IFS="$acl_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then acl_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. + # but apparently some GNU ld's only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$acl_cv_path_LD" -v 2>&1 &1 < /dev/null` in *GNU* | *'with BFD'*) - test "$with_gnu_ld" != no && break - ;; + test "$with_gnu_ld" != no && break ;; *) - test "$with_gnu_ld" != yes && break - ;; + test "$with_gnu_ld" != yes && break ;; esac fi done - IFS="$acl_save_ifs" + IFS="$ac_save_ifs" else acl_cv_path_LD="$LD" # Let the user override the test with a path. fi @@ -17631,14 +17665,12 @@ $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${acl_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else - # I'd rather use --version here, but apparently some GNU lds only accept -v. + # I'd rather use --version here, but apparently some GNU ld's only accept -v. case `$LD -v 2>&1 &5 @@ -17664,14 +17696,12 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5 $as_echo "$acl_cv_rpath" >&6; } wl="$acl_cv_wl" - acl_libext="$acl_cv_libext" - acl_shlibext="$acl_cv_shlibext" - acl_libname_spec="$acl_cv_libname_spec" - acl_library_names_spec="$acl_cv_library_names_spec" - acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" - acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" - acl_hardcode_direct="$acl_cv_hardcode_direct" - acl_hardcode_minus_L="$acl_cv_hardcode_minus_L" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" # Check whether --enable-rpath was given. if test "${enable_rpath+set}" = set; then : enableval=$enable_rpath; : @@ -17681,71 +17711,23 @@ fi - - acl_libdirstem=lib - acl_libdirstem2= - case "$host_os" in - solaris*) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5 -$as_echo_n "checking for 64-bit host... " >&6; } -if ${gl_cv_solaris_64bit+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#ifdef _LP64 -sixtyfour bits -#endif - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "sixtyfour bits" >/dev/null 2>&1; then : - gl_cv_solaris_64bit=yes -else - gl_cv_solaris_64bit=no -fi -rm -f conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5 -$as_echo "$gl_cv_solaris_64bit" >&6; } - if test $gl_cv_solaris_64bit = yes; then - acl_libdirstem=lib/64 - case "$host_cpu" in - sparc*) acl_libdirstem2=lib/sparcv9 ;; - i*86 | x86_64) acl_libdirstem2=lib/amd64 ;; + acl_libdirstem=lib + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; esac fi - ;; - *) - searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` - if test -n "$searchpath"; then - acl_save_IFS="${IFS= }"; IFS=":" - for searchdir in $searchpath; do - if test -d "$searchdir"; then - case "$searchdir" in - */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; - */../ | */.. ) - # Better ignore directories of this form. They are misleading. - ;; - *) searchdir=`cd "$searchdir" && pwd` - case "$searchdir" in - */lib64 ) acl_libdirstem=lib64 ;; - esac ;; - esac - fi - done - IFS="$acl_save_IFS" - fi - ;; - esac - test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem" - - - - + done + IFS="$acl_save_IFS" + fi @@ -17790,10 +17772,6 @@ if test "${with_libiconv_prefix+set}" = set; then : else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi fi fi @@ -17802,8 +17780,6 @@ fi LIBICONV= LTLIBICONV= INCICONV= - LIBICONV_PREFIX= - HAVE_LIBICONV= rpathdirs= ltrpathdirs= names_already_handled= @@ -17821,7 +17797,7 @@ fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then @@ -17837,51 +17813,28 @@ fi found_la= found_so= found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" + if test -n "$shlibext" \ + && { test -f "$additional_libdir/lib$name.$shlibext" \ + || { test "$shlibext" = dll \ + && test -f "$additional_libdir/lib$name.dll.a"; }; }; then + found_dir="$additional_libdir" + if test -f "$additional_libdir/lib$name.$shlibext"; then + found_so="$additional_libdir/lib$name.$shlibext" else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done + found_so="$additional_libdir/lib$name.dll.a" + fi + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" fi fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi fi fi if test "X$found_dir" = "X"; then @@ -17898,42 +17851,26 @@ fi case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" + if test -n "$shlibext" \ + && { test -f "$dir/lib$name.$shlibext" \ + || { test "$shlibext" = dll \ + && test -f "$dir/lib$name.dll.a"; }; }; then + found_dir="$dir" + if test -f "$dir/lib$name.$shlibext"; then + found_so="$dir/lib$name.$shlibext" else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi + found_so="$dir/lib$name.dll.a" fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi fi fi ;; @@ -17946,9 +17883,7 @@ fi if test "X$found_dir" != "X"; then LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else haveit= @@ -17961,10 +17896,10 @@ fi if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi - if test "$acl_hardcode_direct" = yes; then + if test "$hardcode_direct" = yes; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" haveit= for x in $rpathdirs; do @@ -17996,7 +17931,7 @@ fi if test -z "$haveit"; then LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir" fi - if test "$acl_hardcode_minus_L" != no; then + if test "$hardcode_minus_L" != no; then LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so" else LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name" @@ -18015,16 +17950,6 @@ fi case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'iconv'; then - LIBICONV_PREFIX="$basedir" - fi additional_includedir="$basedir/include" ;; esac @@ -18073,11 +17998,9 @@ fi case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -18177,21 +18100,21 @@ fi done done if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then + if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" + eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" + eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBICONV="${LIBICONV}${LIBICONV:+ }$flag" done @@ -18220,12 +18143,6 @@ fi - - - - - - @@ -18328,12 +18245,12 @@ $as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h if test $gt_api_version -ge 3; then - gt_revision_test_code=' + gt_revision_test_code='[ #ifndef __GNU_GETTEXT_SUPPORTED_REVISION #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) #endif typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -' +]' else gt_revision_test_code= fi @@ -18350,24 +18267,15 @@ if eval \${$gt_func_gnugettext_libc+:} false; then : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +$gt_revision_test_code extern int _nl_msg_cat_cntr; extern int *_nl_domain_bindings; -#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings) -#else -#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -#endif -$gt_revision_test_code - int main () { - bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION - +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings ; return 0; } @@ -18425,16 +18333,14 @@ else am_cv_lib_iconv=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include #include - int main () { iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); ; return 0; } @@ -18449,16 +18355,14 @@ rm -f core conftest.err conftest.$ac_objext \ LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include #include - int main () { iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); ; return 0; } @@ -18476,157 +18380,6 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 $as_echo "$am_cv_func_iconv" >&6; } if test "$am_cv_func_iconv" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5 -$as_echo_n "checking for working iconv... " >&6; } -if ${am_cv_func_iconv_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - - am_save_LIBS="$LIBS" - if test $am_cv_lib_iconv = yes; then - LIBS="$LIBS $LIBICONV" - fi - am_cv_func_iconv_works=no - for ac_iconv_const in '' 'const'; do - if test "$cross_compiling" = yes; then : - case "$host_os" in - aix* | hpux*) am_cv_func_iconv_works="guessing no" ;; - *) am_cv_func_iconv_works="guessing yes" ;; - esac -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include - -#ifndef ICONV_CONST -# define ICONV_CONST $ac_iconv_const -#endif - -int -main () -{ -int result = 0; - /* Test against AIX 5.1 bug: Failures are not distinguishable from successful - returns. */ - { - iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8"); - if (cd_utf8_to_88591 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */ - char buf[10]; - ICONV_CONST char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_utf8_to_88591, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - result |= 1; - iconv_close (cd_utf8_to_88591); - } - } - /* Test against Solaris 10 bug: Failures are not distinguishable from - successful returns. */ - { - iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646"); - if (cd_ascii_to_88591 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\263"; - char buf[10]; - ICONV_CONST char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_ascii_to_88591, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res == 0) - result |= 2; - iconv_close (cd_ascii_to_88591); - } - } - /* Test against AIX 6.1..7.1 bug: Buffer overrun. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\304"; - static char buf[2] = { (char)0xDE, (char)0xAD }; - ICONV_CONST char *inptr = input; - size_t inbytesleft = 1; - char *outptr = buf; - size_t outbytesleft = 1; - size_t res = iconv (cd_88591_to_utf8, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD) - result |= 4; - iconv_close (cd_88591_to_utf8); - } - } -#if 0 /* This bug could be worked around by the caller. */ - /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */ - { - iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591"); - if (cd_88591_to_utf8 != (iconv_t)(-1)) - { - static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337"; - char buf[50]; - ICONV_CONST char *inptr = input; - size_t inbytesleft = strlen (input); - char *outptr = buf; - size_t outbytesleft = sizeof (buf); - size_t res = iconv (cd_88591_to_utf8, - &inptr, &inbytesleft, - &outptr, &outbytesleft); - if ((int)res > 0) - result |= 8; - iconv_close (cd_88591_to_utf8); - } - } -#endif - /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is - provided. */ - if (/* Try standardized names. */ - iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1) - /* Try IRIX, OSF/1 names. */ - && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1) - /* Try AIX names. */ - && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1) - /* Try HP-UX names. */ - && iconv_open ("utf8", "eucJP") == (iconv_t)(-1)) - result |= 16; - return result; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - am_cv_func_iconv_works=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - test "$am_cv_func_iconv_works" = no || break - done - LIBS="$am_save_LIBS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5 -$as_echo "$am_cv_func_iconv_works" >&6; } - case "$am_cv_func_iconv_works" in - *no) am_func_iconv=no am_cv_lib_iconv=no ;; - *) am_func_iconv=yes ;; - esac - else - am_func_iconv=no am_cv_lib_iconv=no - fi - if test "$am_func_iconv" = yes; then $as_echo "#define HAVE_ICONV 1" >>confdefs.h @@ -18648,10 +18401,6 @@ $as_echo "$LIBICONV" >&6; } - - - - use_additional=yes acl_save_prefix="$prefix" @@ -18688,10 +18437,6 @@ if test "${with_libintl_prefix+set}" = set; then : else additional_includedir="$withval/include" additional_libdir="$withval/$acl_libdirstem" - if test "$acl_libdirstem2" != "$acl_libdirstem" \ - && ! test -d "$withval/$acl_libdirstem"; then - additional_libdir="$withval/$acl_libdirstem2" - fi fi fi @@ -18700,8 +18445,6 @@ fi LIBINTL= LTLIBINTL= INCINTL= - LIBINTL_PREFIX= - HAVE_LIBINTL= rpathdirs= ltrpathdirs= names_already_handled= @@ -18719,7 +18462,7 @@ fi done if test -z "$already_handled"; then names_already_handled="$names_already_handled $name" - uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'` + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` eval value=\"\$HAVE_LIB$uppername\" if test -n "$value"; then if test "$value" = yes; then @@ -18735,51 +18478,28 @@ fi found_la= found_so= found_a= - eval libname=\"$acl_libname_spec\" # typically: libname=lib$name - if test -n "$acl_shlibext"; then - shrext=".$acl_shlibext" # typically: shrext=.so - else - shrext= - fi if test $use_additional = yes; then - dir="$additional_libdir" - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" + if test -n "$shlibext" \ + && { test -f "$additional_libdir/lib$name.$shlibext" \ + || { test "$shlibext" = dll \ + && test -f "$additional_libdir/lib$name.dll.a"; }; }; then + found_dir="$additional_libdir" + if test -f "$additional_libdir/lib$name.$shlibext"; then + found_so="$additional_libdir/lib$name.$shlibext" else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done + found_so="$additional_libdir/lib$name.dll.a" + fi + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" fi fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then - found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" - fi fi fi if test "X$found_dir" = "X"; then @@ -18796,42 +18516,26 @@ fi case "$x" in -L*) dir=`echo "X$x" | sed -e 's/^X-L//'` - if test -n "$acl_shlibext"; then - if test -f "$dir/$libname$shrext"; then - found_dir="$dir" - found_so="$dir/$libname$shrext" + if test -n "$shlibext" \ + && { test -f "$dir/lib$name.$shlibext" \ + || { test "$shlibext" = dll \ + && test -f "$dir/lib$name.dll.a"; }; }; then + found_dir="$dir" + if test -f "$dir/lib$name.$shlibext"; then + found_so="$dir/lib$name.$shlibext" else - if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then - ver=`(cd "$dir" && \ - for f in "$libname$shrext".*; do echo "$f"; done \ - | sed -e "s,^$libname$shrext\\\\.,," \ - | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \ - | sed 1q ) 2>/dev/null` - if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then - found_dir="$dir" - found_so="$dir/$libname$shrext.$ver" - fi - else - eval library_names=\"$acl_library_names_spec\" - for f in $library_names; do - if test -f "$dir/$f"; then - found_dir="$dir" - found_so="$dir/$f" - break - fi - done - fi + found_so="$dir/lib$name.dll.a" fi - fi - if test "X$found_dir" = "X"; then - if test -f "$dir/$libname.$acl_libext"; then + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then found_dir="$dir" - found_a="$dir/$libname.$acl_libext" - fi - fi - if test "X$found_dir" != "X"; then - if test -f "$dir/$libname.la"; then - found_la="$dir/$libname.la" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi fi fi ;; @@ -18844,9 +18548,7 @@ fi if test "X$found_dir" != "X"; then LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name" if test "X$found_so" != "X"; then - if test "$enable_rpath" = no \ - || test "X$found_dir" = "X/usr/$acl_libdirstem" \ - || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else haveit= @@ -18859,10 +18561,10 @@ fi if test -z "$haveit"; then ltrpathdirs="$ltrpathdirs $found_dir" fi - if test "$acl_hardcode_direct" = yes; then + if test "$hardcode_direct" = yes; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else - if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" haveit= for x in $rpathdirs; do @@ -18894,7 +18596,7 @@ fi if test -z "$haveit"; then LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir" fi - if test "$acl_hardcode_minus_L" != no; then + if test "$hardcode_minus_L" != no; then LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so" else LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name" @@ -18913,16 +18615,6 @@ fi case "$found_dir" in */$acl_libdirstem | */$acl_libdirstem/) basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` - if test "$name" = 'intl'; then - LIBINTL_PREFIX="$basedir" - fi - additional_includedir="$basedir/include" - ;; - */$acl_libdirstem2 | */$acl_libdirstem2/) - basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'` - if test "$name" = 'intl'; then - LIBINTL_PREFIX="$basedir" - fi additional_includedir="$basedir/include" ;; esac @@ -18971,11 +18663,9 @@ fi case "$dep" in -L*) additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` - if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \ - && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then haveit= - if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \ - || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then if test -n "$GCC"; then case $host_os in linux* | gnu* | k*bsd*-gnu) haveit=yes;; @@ -19075,21 +18765,21 @@ fi done done if test "X$rpathdirs" != "X"; then - if test -n "$acl_hardcode_libdir_separator"; then + if test -n "$hardcode_libdir_separator"; then alldirs= for found_dir in $rpathdirs; do - alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir" + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" done acl_save_libdir="$libdir" libdir="$alldirs" - eval flag=\"$acl_hardcode_libdir_flag_spec\" + eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" else for found_dir in $rpathdirs; do acl_save_libdir="$libdir" libdir="$found_dir" - eval flag=\"$acl_hardcode_libdir_flag_spec\" + eval flag=\"$hardcode_libdir_flag_spec\" libdir="$acl_save_libdir" LIBINTL="${LIBINTL}${LIBINTL:+ }$flag" done @@ -19101,11 +18791,6 @@ fi done fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5 $as_echo_n "checking for GNU gettext in libintl... " >&6; } if eval \${$gt_func_gnugettext_libintl+:} false; then : @@ -19117,28 +18802,19 @@ else LIBS="$LIBS $LIBINTL" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +$gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); -#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) -#else -#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -#endif -$gt_revision_test_code - int main () { - bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION - +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } @@ -19154,36 +18830,27 @@ rm -f core conftest.err conftest.$ac_objext \ LIBS="$LIBS $LIBICONV" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ - #include -#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +$gt_revision_test_code extern int _nl_msg_cat_cntr; extern #ifdef __cplusplus "C" #endif const char *_nl_expand_alias (const char *); -#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias ("")) -#else -#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0 -#endif -$gt_revision_test_code - int main () { - bindtextdomain ("", ""); -return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION - +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("") ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : LIBINTL="$LIBINTL $LIBICONV" - LTLIBINTL="$LTLIBINTL $LTLIBICONV" - eval "$gt_func_gnugettext_libintl=yes" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" fi rm -f core conftest.err conftest.$ac_objext \ @@ -19310,7 +18977,7 @@ else fi -ac_config_files="$ac_config_files Makefile po/Makefile.in doc/Makefile man/Makefile man/config.xml man/po/Makefile man/cs/Makefile man/da/Makefile man/de/Makefile man/es/Makefile man/fi/Makefile man/fr/Makefile man/hu/Makefile man/id/Makefile man/it/Makefile man/ja/Makefile man/ko/Makefile man/pl/Makefile man/pt_BR/Makefile man/ru/Makefile man/sv/Makefile man/tr/Makefile man/zh_CN/Makefile man/zh_TW/Makefile libmisc/Makefile lib/Makefile src/Makefile contrib/Makefile etc/Makefile etc/pam.d/Makefile shadow.spec" +ac_config_files="$ac_config_files Makefile po/Makefile.in doc/Makefile man/Makefile man/config.xml man/po/Makefile man/cs/Makefile man/da/Makefile man/de/Makefile man/es/Makefile man/fi/Makefile man/fr/Makefile man/hu/Makefile man/id/Makefile man/it/Makefile man/ja/Makefile man/ko/Makefile man/pl/Makefile man/pt_BR/Makefile man/ru/Makefile man/sv/Makefile man/tr/Makefile man/zh_CN/Makefile man/zh_TW/Makefile libmisc/Makefile lib/Makefile libsubid/Makefile libsubid/subid.h src/Makefile contrib/Makefile etc/Makefile etc/pam.d/Makefile shadow.spec" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure @@ -19461,6 +19128,10 @@ if test -z "${USE_BCRYPT_TRUE}" && test -z "${USE_BCRYPT_FALSE}"; then as_fn_error $? "conditional \"USE_BCRYPT\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${USE_YESCRYPT_TRUE}" && test -z "${USE_YESCRYPT_FALSE}"; then + as_fn_error $? "conditional \"USE_YESCRYPT\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${WITH_SU_TRUE}" && test -z "${WITH_SU_FALSE}"; then as_fn_error $? "conditional \"WITH_SU\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -19906,7 +19577,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by shadow $as_me 4.8.1, which was +This file was extended by shadow $as_me 4.11.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19973,7 +19644,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -shadow config.status 4.8.1 +shadow config.status 4.11.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -20102,8 +19773,8 @@ AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' @@ -20422,6 +20093,8 @@ do "man/zh_TW/Makefile") CONFIG_FILES="$CONFIG_FILES man/zh_TW/Makefile" ;; "libmisc/Makefile") CONFIG_FILES="$CONFIG_FILES libmisc/Makefile" ;; "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "libsubid/Makefile") CONFIG_FILES="$CONFIG_FILES libsubid/Makefile" ;; + "libsubid/subid.h") CONFIG_FILES="$CONFIG_FILES libsubid/subid.h" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "contrib/Makefile") CONFIG_FILES="$CONFIG_FILES contrib/Makefile" ;; "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; @@ -21167,12 +20840,12 @@ available_tags='' # ### BEGIN LIBTOOL CONFIG -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - # Whether or not to build static libraries. build_old_libs=$enable_static +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision @@ -21668,7 +21341,7 @@ ltmain=$ac_aux_dir/ltmain.sh case "$ac_file" in */Makefile.in) # Adjust a relative srcdir. ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` # In autoconf-2.13 it is called $ac_given_srcdir. # In autoconf-2.50 it is called $srcdir. @@ -21684,8 +21357,7 @@ ltmain=$ac_aux_dir/ltmain.sh if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then rm -f "$ac_dir/POTFILES" test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - gt_tab=`printf '\t'` - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" POMAKEFILEDEPS="POTFILES.in" # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend # on $ac_dir but don't depend on user-specified configuration @@ -21696,12 +21368,12 @@ ltmain=$ac_aux_dir/ltmain.sh test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" fi ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assignment from automake < 1.5. + # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$ALL_LINGUAS_' POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" else # The set of available languages was given in configure.in. - # Hide the ALL_LINGUAS assignment from automake < 1.5. + # Hide the ALL_LINGUAS assigment from automake < 1.5. eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' fi # Compute POFILES @@ -21829,6 +21501,7 @@ echo " shadow group support: $enable_shadowgrp" echo " S/Key support: $with_skey" echo " SHA passwords encryption: $with_sha_crypt" echo " bcrypt passwords encryption: $with_bcrypt" +echo " yescrypt passwords encryption: $with_yescrypt" echo " nscd support: $with_nscd" echo " sssd support: $with_sssd" echo " subordinate IDs support: $enable_subids" diff --git a/configure.ac b/configure.ac index e4c6aaec..5dcae191 100644 --- a/configure.ac +++ b/configure.ac @@ -1,19 +1,29 @@ dnl Process this file with autoconf to produce a configure script. -AC_PREREQ([2.64]) -AC_INIT([shadow], [4.8.1], [pkg-shadow-devel@lists.alioth.debian.org], [], +AC_PREREQ([2.69]) +m4_define([libsubid_abi_major], 4) +m4_define([libsubid_abi_minor], 0) +m4_define([libsubid_abi_micro], 0) +m4_define([libsubid_abi], [libsubid_abi_major.libsubid_abi_minor.libsubid_abi_micro]) +AC_INIT([shadow], [4.11.1], [pkg-shadow-devel@lists.alioth.debian.org], [], [https://github.com/shadow-maint/shadow]) AM_INIT_AUTOMAKE([1.11 foreign dist-xz]) +AC_CONFIG_MACRO_DIRS([m4]) AM_SILENT_RULES([yes]) AC_CONFIG_HEADERS([config.h]) +AC_SUBST([LIBSUBID_ABI_MAJOR], [libsubid_abi_major]) +AC_SUBST([LIBSUBID_ABI_MINOR], [libsubid_abi_minor]) +AC_SUBST([LIBSUBID_ABI_MICRO], [libsubid_abi_micro]) +AC_SUBST([LIBSUBID_ABI], [libsubid_abi]) + dnl Some hacks... test "$prefix" = "NONE" && prefix="/usr" test "$prefix" = "/usr" && exec_prefix="" AC_GNU_SOURCE -AM_DISABLE_SHARED AM_ENABLE_STATIC +AM_ENABLE_SHARED AM_MAINTAINER_MODE @@ -32,20 +42,21 @@ AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_HEADER_STDBOOL -AC_CHECK_HEADERS(errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \ +AC_CHECK_HEADERS(crypt.h errno.h fcntl.h limits.h unistd.h sys/time.h utmp.h \ utmpx.h termios.h termio.h sgtty.h sys/ioctl.h syslog.h paths.h \ - utime.h ulimit.h sys/capability.h sys/resource.h gshadow.h lastlog.h \ - locale.h rpc/key_prot.h netdb.h acl/libacl.h attr/libattr.h \ - attr/error_context.h) + utime.h ulimit.h sys/capability.h sys/random.h sys/resource.h \ + gshadow.h lastlog.h locale.h rpc/key_prot.h netdb.h acl/libacl.h \ + attr/libattr.h attr/error_context.h) dnl shadow now uses the libc's shadow implementation AC_CHECK_HEADER([shadow.h],,[AC_MSG_ERROR([You need a libc with shadow.h])]) -AC_CHECK_FUNCS(l64a fchmod fchown fsync futimes getgroups gethostname getspnam \ - gettimeofday getusershell getutent initgroups lchown lckpwdf lstat \ - lutimes memcpy memset setgroups sigaction strchr updwtmp updwtmpx innetgr \ - getpwnam_r getpwuid_r getgrnam_r getgrgid_r getspnam_r getaddrinfo \ - ruserok) +AC_CHECK_FUNCS(arc4random_buf l64a fchmod fchown fsync futimes \ + gethostname getentropy getrandom getspnam gettimeofday getusershell \ + getutent initgroups lchown lckpwdf lstat lutimes \ + setgroups sigaction strchr updwtmp updwtmpx innetgr getpwnam_r \ + getpwuid_r getgrnam_r getgrgid_r getspnam_r getaddrinfo ruserok \ + dlopen) AC_SYS_LARGEFILE dnl Checks for typedefs, structures, and compiler characteristics. @@ -104,7 +115,6 @@ dnl Checks for library functions. AC_TYPE_GETGROUPS AC_TYPE_SIGNAL AC_FUNC_UTIME_NULL -AC_FUNC_STRFTIME AC_REPLACE_FUNCS(mkdir putgrent putpwent putspent rename rmdir) AC_REPLACE_FUNCS(sgetgrent sgetpwent sgetspent) AC_REPLACE_FUNCS(snprintf strcasecmp strdup strerror strstr) @@ -280,6 +290,9 @@ AC_ARG_WITH(sha-crypt, AC_ARG_WITH(bcrypt, [AC_HELP_STRING([--with-bcrypt], [allow the bcrypt password encryption algorithm @<:@default=no@:>@])], [with_bcrypt=$withval], [with_bcrypt=no]) +AC_ARG_WITH(yescrypt, + [AC_HELP_STRING([--with-yescrypt], [allow the yescrypt password encryption algorithm @<:@default=no@:>@])], + [with_yescrypt=$withval], [with_yescrypt=no]) AC_ARG_WITH(nscd, [AC_HELP_STRING([--with-nscd], [enable support for nscd @<:@default=yes@:>@])], [with_nscd=$withval], [with_nscd=yes]) @@ -312,6 +325,11 @@ if test "$with_bcrypt" = "yes"; then AC_DEFINE(USE_BCRYPT, 1, [Define to allow the bcrypt password encryption algorithm]) fi +AM_CONDITIONAL(USE_YESCRYPT, test "x$with_yescrypt" = "xyes") +if test "$with_yescrypt" = "yes"; then + AC_DEFINE(USE_YESCRYPT, 1, [Define to allow the yescrypt password encryption algorithm]) +fi + if test "$with_nscd" = "yes"; then AC_CHECK_FUNC(posix_spawn, [AC_DEFINE(USE_NSCD, 1, [Define to support flushing of nscd caches])], @@ -324,7 +342,7 @@ if test "$with_sssd" = "yes"; then [AC_MSG_ERROR([posix_spawn is needed for sssd support])]) fi -AS_IF([test "$with_su" != "no"], AC_DEFINE(WITH_SU, 1, [Build with su])]) +AS_IF([test "$with_su" != "no"], AC_DEFINE(WITH_SU, 1, [Build with su])) AM_CONDITIONAL([WITH_SU], [test "x$with_su" != "xno"]) dnl Check for some functions in libc first, only if not found check for @@ -392,6 +410,10 @@ AC_SUBST(LIBCRYPT) AC_CHECK_LIB(crypt, crypt, [LIBCRYPT=-lcrypt], [AC_MSG_ERROR([crypt() not found])]) +AC_SUBST(LIYESCRYPT) +AC_CHECK_LIB(crypt, crypt, [LIYESCRYPT=-lcrypt], + [AC_MSG_ERROR([crypt() not found])]) + AC_SUBST(LIBACL) if test "$with_acl" != "no"; then AC_CHECK_HEADERS(acl/libacl.h attr/error_context.h, [acl_header="yes"], [acl_header="no"]) @@ -715,6 +737,8 @@ AC_CONFIG_FILES([ man/zh_TW/Makefile libmisc/Makefile lib/Makefile + libsubid/Makefile + libsubid/subid.h src/Makefile contrib/Makefile etc/Makefile @@ -741,6 +765,7 @@ echo " shadow group support: $enable_shadowgrp" echo " S/Key support: $with_skey" echo " SHA passwords encryption: $with_sha_crypt" echo " bcrypt passwords encryption: $with_bcrypt" +echo " yescrypt passwords encryption: $with_yescrypt" echo " nscd support: $with_nscd" echo " sssd support: $with_sssd" echo " subordinate IDs support: $enable_subids" diff --git a/contrib/Makefile.in b/contrib/Makefile.in index bd882366..f77b1d3a 100644 --- a/contrib/Makefile.in +++ b/contrib/Makefile.in @@ -92,8 +92,14 @@ build_triplet = @build@ host_triplet = @host@ subdir = contrib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -149,7 +155,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -178,9 +183,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -218,7 +228,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/contrib/adduser-old.c b/contrib/adduser-old.c index 1bf1f225..e920e008 100644 --- a/contrib/adduser-old.c +++ b/contrib/adduser-old.c @@ -4,14 +4,14 @@ ** --marekm ** ** 02/26/96 -** modified to call shadow utils (useradd,chage,passwd) on shadowed +** modified to call shadow utils (useradd,chage,passwd) on shadowed ** systems - Cristian Gafton, gafton@sorosis.ro ** ** 6/27/95 ** shadow-adduser 1.4: ** -** now it copies the /etc/skel dir into the person's dir, -** makes the mail folders, changed some defaults and made a 'make +** now it copies the /etc/skel dir into the person's dir, +** makes the mail folders, changed some defaults and made a 'make ** install' just for the hell of it. ** ** Greg Gallagher @@ -19,20 +19,20 @@ ** ** 1/28/95 ** shadow-adduser 1.3: -** -** Basically a bug-fix on my additions in 1.2. Thanks to Terry Stewart +** +** Basically a bug-fix on my additions in 1.2. Thanks to Terry Stewart ** (stew@texas.net) for pointing out one of the many idiotic bugs I introduced. ** It was such a stupid bug that I would have never seen it myself. ** ** Brandon ***** ** 01/27/95 -** +** ** shadow-adduser 1.2: ** I took the C source from adduser-shadow (credits are below) and made ** it a little more worthwhile. Many small changes... Here's ** the ones I can remember: -** +** ** Removed support for non-shadowed systems (if you don't have shadow, ** use the original adduser, don't get this shadow version!) ** Added support for the correct /etc/shadow fields (Min days before @@ -56,7 +56,7 @@ ** Brandon ** photon@usis.com ** -***** +***** ** adduser 1.0: add a new user account (For systems not using shadow) ** With a nice little interface and a will to do all the work for you. ** @@ -119,14 +119,14 @@ void main() { - char foo[32]; + char foo[32]; char uname[9],person[32],dir[32],shell[32]; unsigned int group,min_pass,max_pass,warn_pass,user_die; /* the group and uid of the new user */ int bad=0,done=0,correct=0,gets_warning=0; char cmd[255]; struct group *grp; - + /* flags, in order: * bad to see if the username is in /etc/passwd, or if strange stuff has * been typed if the user might be put in group 0 @@ -137,24 +137,24 @@ void main() */ /* The real program starts HERE! */ - + if(geteuid()!=0) { printf("It seems you don't have access to add a new user. Try\n"); printf("logging in as root or su root to gain super-user access.\n"); exit(1); } - + /* Sanity checks */ - + if (!(grp=getgrgid(DEFAULT_GROUP))){ printf("Error: the default group %d does not exist on this system!\n", DEFAULT_GROUP); printf("adduser must be recompiled.\n"); exit(1); - }; - + }; + while(!correct) { /* loop until a "good" uname is chosen */ while(!done) { printf("\nLogin to add (^C to quit): "); @@ -178,19 +178,19 @@ void main() } else done=1; }; /* done, we have a valid new user name */ - + /* all set, get the rest of the stuff */ printf("\nEditing information for new user [%s]\n",uname); - + printf("\nFull Name [%s]: ",uname); gets(person); if (!strlen(person)) { bzero(person,sizeof(person)); strcpy(person,uname); }; - + do { - bad=0; + bad=0; printf("GID [%d]: ",DEFAULT_GROUP); gets(foo); if (!strlen(foo)) @@ -220,7 +220,7 @@ void main() fflush(stdin); - + printf("\nIf home dir ends with a / then [%s] will be appended to it\n",uname); printf("Home Directory [%s/%s]: ",DEFAULT_HOME,uname); fflush(stdout); @@ -237,30 +237,30 @@ void main() gets(shell); if (!strlen(shell)) sprintf(shell,"%s",DEFAULT_SHELL); - + printf("\nMin. Password Change Days [0]: "); gets(foo); min_pass=atoi(foo); - + printf("Max. Password Change Days [%d]: ",DEFAULT_MAX_PASS); gets(foo); if (strlen(foo) > 1) max_pass = atoi(foo); else max_pass = DEFAULT_MAX_PASS; - + printf("Password Warning Days [%d]: ",DEFAULT_WARN_PASS); gets(foo); warn_pass = atoi(foo); if (warn_pass==0) warn_pass = DEFAULT_WARN_PASS; - + printf("Days after Password Expiry for Account Locking [%d]: ",DEFAULT_USER_DIE); gets(foo); user_die = atoi(foo); if (user_die == 0) user_die = DEFAULT_USER_DIE; - + printf("\nInformation for new user [%s] [%s]:\n",uname,person); printf("Home directory: [%s] Shell: [%s]\n",dir,shell); printf("GID: [%d]\n",group); @@ -279,7 +279,7 @@ void main() bzero(cmd,sizeof(cmd)); sprintf(cmd,"%s -g %d -d %s -s %s -c \"%s\" -m -k /etc/skel %s", USERADD_PATH,group,dir,shell,person,uname); - printf("Calling useradd to add new user:\n%s\n",cmd); + printf("Calling useradd to add new user:\n%s\n",cmd); if(system(cmd)){ printf("User add failed!\n"); exit(errno); diff --git a/contrib/atudel b/contrib/atudel deleted file mode 100755 index 0ca87833..00000000 --- a/contrib/atudel +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/perl -# -# Copyright (c) 1996 Brian R. Gaeke -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by Brian R. Gaeke. -# 4. The name of the author, Brian R. Gaeke, may not be used to endorse -# or promote products derived from this software without specific -# prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY BRIAN R. GAEKE ``AS IS'' AND ANY EXPRESS -# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL BRIAN R. GAEKE BE LIABLE FOR ANY DIRECT, -# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING -# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -# Additionally: -# -# This software is provided without support and without any obligation -# on the part of Brian R. Gaeke to assist in its use, correction, -# modification or enhancement. -# -####################################################################### -# -# this is atudel, version 2, by Brian R. Gaeke -# - -require "getopts.pl"; -&Getopts('v'); -$username = shift(@ARGV); -&usage unless $username; - -sub usage -{ - print STDERR "atudel - remove all at jobs owned by a user\n"; - print STDERR "usage: $0 [-v] username\n"; - exit(1); -} - -# odd. unless getpwnam($uname) doesn't seem to work for $uname eq "root" on -# my linux system. but this does. -die "user $username does not exist; stopping" - unless defined(getpwnam($username)); - -print "searching for at jobs owned by user $username ..." if $opt_v; - -chdir "/var/spool/atjobs" || - die "can't chdir to /var/spool/atjobs: $!\nstopping"; -opendir(DIR,".") || die "can't opendir(/var/spool/atjobs): $!\nstopping"; -@files = grep(!/^\./,grep(-f,readdir(DIR))); -closedir DIR; - -foreach $x (@files) -{ - $owner = (getpwuid((stat($x))[4]))[0]; - push(@nuke_bait,$x) if $owner eq $username; -} - -if (@nuke_bait) -{ - print "removed jobIDs: @{nuke_bait}.\n" if $opt_v; - unlink @nuke_bait; -} -elsif ($opt_v) -{ - print "\n"; -} - -exit 0; diff --git a/contrib/groupmems.shar b/contrib/groupmems.shar index 8472d93a..62e9b48a 100644 --- a/contrib/groupmems.shar +++ b/contrib/groupmems.shar @@ -76,36 +76,9 @@ else $echo 'x -' extracting 'Makefile' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'Makefile' && /* -# Copyright 2000, International Business Machines, Inc. -# All rights reserved. -# -# original author: George Kraft IV, gk4@us.ibm.com -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. Neither the name of International Business Machines, Inc., nor the -# names of its contributors may be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY INTERNATIONAL BUSINESS MACHINES, INC. AND -# CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -# INTERNATIONAL BUSINESS MACHINES, INC. OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. +# SPDX-FileCopyrightText: 2000, International Business Machines, Inc. +# SPDX-FileCopyrightText: 2000, George Kraft IV, gk4@us.ibm.com +# SPDX-License-Identifier: BSD-3-Clause # X all: groupmems @@ -143,36 +116,9 @@ else $echo 'x -' extracting 'groupmems.c' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'groupmems.c' && /* -X * Copyright 2000, International Business Machines, Inc. -X * All rights reserved. -X * -X * original author: George Kraft IV, gk4@us.ibm.com -X * -X * Redistribution and use in source and binary forms, with or without -X * modification, are permitted provided that the following conditions -X * are met: -X * -X * 1. Redistributions of source code must retain the above copyright -X * notice, this list of conditions and the following disclaimer. -X * 2. Redistributions in binary form must reproduce the above copyright -X * notice, this list of conditions and the following disclaimer in the -X * documentation and/or other materials provided with the distribution. -X * 3. Neither the name of International Business Machines, Inc., nor the -X * names of its contributors may be used to endorse or promote products -X * derived from this software without specific prior written permission. -X * -X * THIS SOFTWARE IS PROVIDED BY INTERNATIONAL BUSINESS MACHINES, INC. AND -X * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -X * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -X * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -X * INTERNATIONAL BUSINESS MACHINES, INC. OR CONTRIBUTORS BE LIABLE -X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -X * SUCH DAMAGE. +X * SPDX-FileCopyrightText: 2000, International Business Machines, Inc. +X * SPDX-FileCopyrightText: 2000, George Kraft IV, gk4@us.ibm.com +X * SPDX-License-Identifier: BSD-3-Clause X */ /* ** @@ -436,36 +382,9 @@ else $echo 'x -' extracting 'groupmems.8' '(text)' sed 's/^X//' << 'SHAR_EOF' > 'groupmems.8' && X.\" -X.\" Copyright 2000, International Business Machines, Inc. -X.\" All rights reserved. -X.\" -X.\" original author: George Kraft IV, gk4@us.ibm.com -X.\" -X.\" Redistribution and use in source and binary forms, with or without -X.\" modification, are permitted provided that the following conditions -X.\" are met: -X.\" -X.\" 1. Redistributions of source code must retain the above copyright -X.\" notice, this list of conditions and the following disclaimer. -X.\" 2. Redistributions in binary form must reproduce the above copyright -X.\" notice, this list of conditions and the following disclaimer in the -X.\" documentation and/or other materials provided with the distribution. -X.\" 3. Neither the name of International Business Machines, Inc., nor the -X.\" names of its contributors may be used to endorse or promote products -X.\" derived from this software without specific prior written permission. -X.\" -X.\" THIS SOFTWARE IS PROVIDED BY INTERNATIONAL BUSINESS MACHINES, INC. AND -X.\" CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, -X.\" BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -X.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -X.\" INTERNATIONAL BUSINESS MACHINES, INC. OR CONTRIBUTORS BE LIABLE -X.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -X.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -X.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -X.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -X.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -X.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -X.\" SUCH DAMAGE. +X.\" SPDX-FileCopyrightText: 2000, International Business Machines, Inc. +X.\" SPDX-FileCopyrightText: 2000, George Kraft IV, gk4@us.ibm.com +X.\" SPDX-License-Identifier: BSD-3-Clause X.\" X.\" $Id$ X.\" diff --git a/doc/HOWTO b/doc/HOWTO index 01a90ed4..03a5f1ae 100644 --- a/doc/HOWTO +++ b/doc/HOWTO @@ -1311,7 +1311,7 @@ This means that fred's password is valid, it was last changed on 03/04/96, it can be changed at any time, it expires after 60 days, - fred will not be warned, and and the account won't be disabled when + fred will not be warned, and the account won't be disabled when the password expires. This simply means that if fred logs in after the password expires, he @@ -1487,7 +1487,7 @@ If a user logs into a line that is listed in /etc/dialups, and his shell is listed in the file /etc/d_passwd he will be allowed access - only by suppling the correct password. + only by supplying the correct password. Another useful purpose for using dial-up passwords might be to setup a line that only allows a certain type of connect (perhaps a PPP or UUCP diff --git a/doc/Makefile.in b/doc/Makefile.in index 0323749b..0fe794e1 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -92,8 +92,14 @@ build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -149,7 +155,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -178,9 +183,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -218,7 +228,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/doc/README.limits b/doc/README.limits index 80ed940f..47929aee 100644 --- a/doc/README.limits +++ b/doc/README.limits @@ -63,4 +63,3 @@ To completely disable limits for a user, a single dash (-) will do. Also, please note that all limit settings are set PER LOGIN. They are not global, nor are they permanent. Perhaps global limits will come, but for now this will have to do ;) - diff --git a/doc/README.platforms b/doc/README.platforms index 295d1255..a069e899 100644 --- a/doc/README.platforms +++ b/doc/README.platforms @@ -3,7 +3,7 @@ # This is the current (still incomplete) list of platforms this # package has been verified to work on. Additions (preferably # in the format as described below) are welcome. Thanks! -# +# # V: last version reported to work # H: host type # L: Linux libc version diff --git a/doc/WISHLIST b/doc/WISHLIST index 61390bdd..d9003b11 100644 --- a/doc/WISHLIST +++ b/doc/WISHLIST @@ -37,4 +37,3 @@ New ideas to add to this list are welcome, too. --marekm per-user configuration, to be executed with run-parts. Some hooks should be executed at package install time for existing users, likewise for package removal and possibly modification. (Debian Bug#36019) - diff --git a/etc/Makefile.am b/etc/Makefile.am index cc31c609..c5c0620b 100644 --- a/etc/Makefile.am +++ b/etc/Makefile.am @@ -4,8 +4,7 @@ sysconf_DATA = login.defs defaultdir = $(sysconfdir)/default -default_DATA = \ - useradd +default_DATA = nonpam_files = \ limits \ diff --git a/etc/Makefile.in b/etc/Makefile.in index 58ec0cce..e7d4f806 100644 --- a/etc/Makefile.in +++ b/etc/Makefile.in @@ -93,8 +93,14 @@ build_triplet = @build@ host_triplet = @host@ subdir = etc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -240,7 +246,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -269,9 +274,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -309,7 +319,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ @@ -371,9 +380,7 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ sysconf_DATA = login.defs defaultdir = $(sysconfdir)/default -default_DATA = \ - useradd - +default_DATA = nonpam_files = \ limits \ login.access diff --git a/etc/login.access b/etc/login.access index 3ed36880..d9d5f09c 100644 --- a/etc/login.access +++ b/etc/login.access @@ -1,20 +1,20 @@ # $Id$ # # Login access control table. -# +# # When someone logs in, the table is scanned for the first entry that # matches the (user, host) combination, or, in case of non-networked # logins, the first entry that matches the (user, tty) combination. The -# permissions field of that table entry determines whether the login will +# permissions field of that table entry determines whether the login will # be accepted or refused. -# +# # Format of the login access control table is three fields separated by a # ":" character: -# +# # permission : users : origins -# +# # The first field should be a "+" (access granted) or "-" (access denied) -# character. +# character. # # The second field should be a list of one or more login names, group # names, or ALL (always matches). A pattern of the form user@host is @@ -37,7 +37,7 @@ # listed: the program does not look at a user's primary group id value. # ############################################################################## -# +# # Disallow console logins to all but a few accounts. # #-:ALL EXCEPT wheel shutdown sync:console diff --git a/etc/login.defs b/etc/login.defs index a2f8cd50..114dbcd9 100644 --- a/etc/login.defs +++ b/etc/login.defs @@ -295,7 +295,7 @@ CHFN_AUTH yes # any combination of letters "frwh" (full name, room number, work # phone, home phone). If not defined, no changes are allowed. # For backward compatibility, "yes" = "rwh" and "no" = "frwh". -# +# CHFN_RESTRICT rwh # @@ -326,7 +326,9 @@ CHFN_RESTRICT rwh # If set to SHA256, SHA256-based algorithm will be used for encrypting password # If set to SHA512, SHA512-based algorithm will be used for encrypting password # If set to BCRYPT, BCRYPT-based algorithm will be used for encrypting password +# If set to YESCRYPT, YESCRYPT-based algorithm will be used for encrypting password # If set to DES, DES-based algorithm will be used for encrypting password (default) +# MD5 and DES should not be used for new hashes, see crypt(5) for recommendations. # Overrides the MD5_CRYPT_ENAB option # # Note: If you use PAM, it is recommended to use a value consistent with @@ -342,7 +344,8 @@ CHFN_RESTRICT rwh # However, more CPU resources will be needed to authenticate users if # this value is increased. # -# If not specified, the libc will choose the default number of rounds (5000). +# If not specified, the libc will choose the default number of rounds (5000), +# which is orders of magnitude too low for modern hardware. # The values must be within the 1000-999999999 range. # If only one of the MIN or MAX values is set, then this value will be used. # If MIN > MAX, the highest value will be used. @@ -365,6 +368,19 @@ CHFN_RESTRICT rwh #BCRYPT_MIN_ROUNDS 13 #BCRYPT_MAX_ROUNDS 13 +# +# Only works if ENCRYPT_METHOD is set to YESCRYPT. +# +# Define the YESCRYPT cost factor. +# With a higher cost factor, it is more difficult to brute-force the password. +# However, more CPU time and more memory will be needed to authenticate users +# if this value is increased. +# +# If not specified, a cost factor of 5 will be used. +# The value must be within the 1-11 range. +# +#YESCRYPT_COST_FACTOR 5 + # # List of groups to add to the user's supplementary group set # when logging in from the console (as determined by the CONSOLE @@ -382,6 +398,14 @@ CHFN_RESTRICT rwh # DEFAULT_HOME yes +# +# The pwck(8) utility emits a warning for any system account with a home +# directory that does not exist. Some system accounts intentionally do +# not have a home directory. Such accounts may have this string as +# their home directory in /etc/passwd to avoid a spurious warning. +# +NONEXISTENT /nonexistent + # # If this file exists and is readable, login environment will be # read from it. Every line should be in the form name=value. @@ -428,3 +452,27 @@ USERGROUPS_ENAB yes # missing. # #FORCE_SHADOW yes + +# +# Allow newuidmap and newgidmap when running under an alternative +# primary group. +# +#GRANT_AUX_GROUP_SUBIDS yes + +# +# Prevents an empty password field to be interpreted as "no authentication +# required". +# Set to "yes" to prevent for all accounts +# Set to "superuser" to prevent for UID 0 / root (default) +# Set to "no" to not prevent for any account (dangerous, historical default) +PREVENT_NO_AUTH superuser + +# +# Select the HMAC cryptography algorithm. +# Used in pam_timestamp module to calculate the keyed-hash message +# authentication code. +# +# Note: It is recommended to check hmac(3) to see the possible algorithms +# that are available in your system. +# +#HMAC_CRYPTO_ALGO SHA512 diff --git a/etc/pam.d/Makefile.in b/etc/pam.d/Makefile.in index fcb4e864..2bdb11b8 100644 --- a/etc/pam.d/Makefile.in +++ b/etc/pam.d/Makefile.in @@ -95,8 +95,14 @@ host_triplet = @host@ @WITH_SU_TRUE@am__append_2 = su subdir = etc/pam.d ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -181,7 +187,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -210,9 +215,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -250,7 +260,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/etc/useradd b/etc/useradd deleted file mode 100644 index b77dd856..00000000 --- a/etc/useradd +++ /dev/null @@ -1,8 +0,0 @@ -# useradd defaults file -GROUP=1000 -HOME=/home -INACTIVE=-1 -EXPIRE= -SHELL=/bin/bash -SKEL=/etc/skel -CREATE_MAIL_SPOOL=yes diff --git a/lib/Makefile.am b/lib/Makefile.am index a40c08a1..3a50b465 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -1,16 +1,17 @@ AUTOMAKE_OPTIONS = 1.0 foreign -DEFS = +DEFS = noinst_LTLIBRARIES = libshadow.la -libshadow_la_LDFLAGS = -version-info 0:0:0 libshadow_la_CPPFLAGS = $(ECONF_CPPFLAGS) if HAVE_VENDORDIR libshadow_la_CPPFLAGS += -DVENDORDIR=\"$(VENDORDIR)\" endif +libshadow_la_CPPFLAGS += -I$(top_srcdir) + libshadow_la_SOURCES = \ commonio.c \ commonio.h \ @@ -32,8 +33,12 @@ libshadow_la_SOURCES = \ groupio.h \ gshadow.c \ lockpw.c \ + nss.c \ nscd.c \ nscd.h \ + shadowlog.c \ + shadowlog.h \ + shadowlog_internal.h \ sssd.c \ sssd.h \ pam_defs.h \ @@ -45,6 +50,8 @@ libshadow_la_SOURCES = \ pwio.c \ pwio.h \ pwmem.c \ + run_part.h \ + run_part.c \ subordinateio.h \ subordinateio.c \ selinux.c \ diff --git a/lib/Makefile.in b/lib/Makefile.in index abce42b6..c93fd73c 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -92,8 +92,14 @@ host_triplet = @host@ @WITH_TCB_TRUE@am__append_2 = tcbfuncs.c tcbfuncs.h subdir = lib ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -106,9 +112,10 @@ libshadow_la_LIBADD = am__libshadow_la_SOURCES_DIST = commonio.c commonio.h defines.h \ encrypt.c exitcodes.h faillog.h fields.c fputsx.c getdef.c \ getdef.h get_gid.c getlong.c get_pid.c get_uid.c getulong.c \ - groupio.c groupmem.c groupio.h gshadow.c lockpw.c nscd.c \ - nscd.h sssd.c sssd.h pam_defs.h port.c port.h prototypes.h \ - pwauth.c pwauth.h pwio.c pwio.h pwmem.c subordinateio.h \ + groupio.c groupmem.c groupio.h gshadow.c lockpw.c nss.c nscd.c \ + nscd.h shadowlog.c shadowlog.h shadowlog_internal.h sssd.c \ + sssd.h pam_defs.h port.c port.h prototypes.h pwauth.c pwauth.h \ + pwio.c pwio.h pwmem.c run_part.h run_part.c subordinateio.h \ subordinateio.c selinux.c semanage.c sgetgrent.c sgetpwent.c \ sgetspent.c sgroupio.c sgroupio.h shadow.c shadowio.c \ shadowio.h shadowmem.c spawn.c utent.c tcbfuncs.c tcbfuncs.h @@ -120,24 +127,22 @@ am_libshadow_la_OBJECTS = libshadow_la-commonio.lo \ libshadow_la-get_pid.lo libshadow_la-get_uid.lo \ libshadow_la-getulong.lo libshadow_la-groupio.lo \ libshadow_la-groupmem.lo libshadow_la-gshadow.lo \ - libshadow_la-lockpw.lo libshadow_la-nscd.lo \ + libshadow_la-lockpw.lo libshadow_la-nss.lo \ + libshadow_la-nscd.lo libshadow_la-shadowlog.lo \ libshadow_la-sssd.lo libshadow_la-port.lo \ libshadow_la-pwauth.lo libshadow_la-pwio.lo \ - libshadow_la-pwmem.lo libshadow_la-subordinateio.lo \ - libshadow_la-selinux.lo libshadow_la-semanage.lo \ - libshadow_la-sgetgrent.lo libshadow_la-sgetpwent.lo \ - libshadow_la-sgetspent.lo libshadow_la-sgroupio.lo \ - libshadow_la-shadow.lo libshadow_la-shadowio.lo \ - libshadow_la-shadowmem.lo libshadow_la-spawn.lo \ - libshadow_la-utent.lo $(am__objects_1) + libshadow_la-pwmem.lo libshadow_la-run_part.lo \ + libshadow_la-subordinateio.lo libshadow_la-selinux.lo \ + libshadow_la-semanage.lo libshadow_la-sgetgrent.lo \ + libshadow_la-sgetpwent.lo libshadow_la-sgetspent.lo \ + libshadow_la-sgroupio.lo libshadow_la-shadow.lo \ + libshadow_la-shadowio.lo libshadow_la-shadowmem.lo \ + libshadow_la-spawn.lo libshadow_la-utent.lo $(am__objects_1) libshadow_la_OBJECTS = $(am_libshadow_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = -libshadow_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libshadow_la_LDFLAGS) $(LDFLAGS) -o $@ AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -168,10 +173,12 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-commonio.Plo \ ./$(DEPDIR)/libshadow_la-gshadow.Plo \ ./$(DEPDIR)/libshadow_la-lockpw.Plo \ ./$(DEPDIR)/libshadow_la-nscd.Plo \ + ./$(DEPDIR)/libshadow_la-nss.Plo \ ./$(DEPDIR)/libshadow_la-port.Plo \ ./$(DEPDIR)/libshadow_la-pwauth.Plo \ ./$(DEPDIR)/libshadow_la-pwio.Plo \ ./$(DEPDIR)/libshadow_la-pwmem.Plo \ + ./$(DEPDIR)/libshadow_la-run_part.Plo \ ./$(DEPDIR)/libshadow_la-selinux.Plo \ ./$(DEPDIR)/libshadow_la-semanage.Plo \ ./$(DEPDIR)/libshadow_la-sgetgrent.Plo \ @@ -180,6 +187,7 @@ am__depfiles_remade = ./$(DEPDIR)/libshadow_la-commonio.Plo \ ./$(DEPDIR)/libshadow_la-sgroupio.Plo \ ./$(DEPDIR)/libshadow_la-shadow.Plo \ ./$(DEPDIR)/libshadow_la-shadowio.Plo \ + ./$(DEPDIR)/libshadow_la-shadowlog.Plo \ ./$(DEPDIR)/libshadow_la-shadowmem.Plo \ ./$(DEPDIR)/libshadow_la-spawn.Plo \ ./$(DEPDIR)/libshadow_la-sssd.Plo \ @@ -259,7 +267,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -288,9 +295,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -328,7 +340,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ @@ -390,17 +401,18 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ AUTOMAKE_OPTIONS = 1.0 foreign noinst_LTLIBRARIES = libshadow.la -libshadow_la_LDFLAGS = -version-info 0:0:0 -libshadow_la_CPPFLAGS = $(ECONF_CPPFLAGS) $(am__append_1) +libshadow_la_CPPFLAGS = $(ECONF_CPPFLAGS) $(am__append_1) \ + -I$(top_srcdir) libshadow_la_SOURCES = commonio.c commonio.h defines.h encrypt.c \ exitcodes.h faillog.h fields.c fputsx.c getdef.c getdef.h \ get_gid.c getlong.c get_pid.c get_uid.c getulong.c groupio.c \ - groupmem.c groupio.h gshadow.c lockpw.c nscd.c nscd.h sssd.c \ - sssd.h pam_defs.h port.c port.h prototypes.h pwauth.c pwauth.h \ - pwio.c pwio.h pwmem.c subordinateio.h subordinateio.c \ - selinux.c semanage.c sgetgrent.c sgetpwent.c sgetspent.c \ - sgroupio.c sgroupio.h shadow.c shadowio.c shadowio.h \ - shadowmem.c spawn.c utent.c $(am__append_2) + groupmem.c groupio.h gshadow.c lockpw.c nss.c nscd.c nscd.h \ + shadowlog.c shadowlog.h shadowlog_internal.h sssd.c sssd.h \ + pam_defs.h port.c port.h prototypes.h pwauth.c pwauth.h pwio.c \ + pwio.h pwmem.c run_part.h run_part.c subordinateio.h \ + subordinateio.c selinux.c semanage.c sgetgrent.c sgetpwent.c \ + sgetspent.c sgroupio.c sgroupio.h shadow.c shadowio.c \ + shadowio.h shadowmem.c spawn.c utent.c $(am__append_2) # These files are unneeded for some reason, listed in # order of appearance: @@ -456,7 +468,7 @@ clean-noinstLTLIBRARIES: } libshadow.la: $(libshadow_la_OBJECTS) $(libshadow_la_DEPENDENCIES) $(EXTRA_libshadow_la_DEPENDENCIES) - $(AM_V_CCLD)$(libshadow_la_LINK) $(libshadow_la_OBJECTS) $(libshadow_la_LIBADD) $(LIBS) + $(AM_V_CCLD)$(LINK) $(libshadow_la_OBJECTS) $(libshadow_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -479,10 +491,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-gshadow.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-lockpw.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-nscd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-nss.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-port.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwauth.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-pwmem.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-run_part.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-selinux.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-semanage.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgetgrent.Plo@am__quote@ # am--include-marker @@ -491,6 +505,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sgroupio.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadow.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowio.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowlog.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-shadowmem.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-spawn.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libshadow_la-sssd.Plo@am__quote@ # am--include-marker @@ -623,6 +638,13 @@ libshadow_la-lockpw.lo: lockpw.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-lockpw.lo `test -f 'lockpw.c' || echo '$(srcdir)/'`lockpw.c +libshadow_la-nss.lo: nss.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-nss.lo -MD -MP -MF $(DEPDIR)/libshadow_la-nss.Tpo -c -o libshadow_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-nss.Tpo $(DEPDIR)/libshadow_la-nss.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='nss.c' object='libshadow_la-nss.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-nss.lo `test -f 'nss.c' || echo '$(srcdir)/'`nss.c + libshadow_la-nscd.lo: nscd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-nscd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-nscd.Tpo -c -o libshadow_la-nscd.lo `test -f 'nscd.c' || echo '$(srcdir)/'`nscd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-nscd.Tpo $(DEPDIR)/libshadow_la-nscd.Plo @@ -630,6 +652,13 @@ libshadow_la-nscd.lo: nscd.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-nscd.lo `test -f 'nscd.c' || echo '$(srcdir)/'`nscd.c +libshadow_la-shadowlog.lo: shadowlog.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-shadowlog.lo -MD -MP -MF $(DEPDIR)/libshadow_la-shadowlog.Tpo -c -o libshadow_la-shadowlog.lo `test -f 'shadowlog.c' || echo '$(srcdir)/'`shadowlog.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-shadowlog.Tpo $(DEPDIR)/libshadow_la-shadowlog.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shadowlog.c' object='libshadow_la-shadowlog.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-shadowlog.lo `test -f 'shadowlog.c' || echo '$(srcdir)/'`shadowlog.c + libshadow_la-sssd.lo: sssd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-sssd.lo -MD -MP -MF $(DEPDIR)/libshadow_la-sssd.Tpo -c -o libshadow_la-sssd.lo `test -f 'sssd.c' || echo '$(srcdir)/'`sssd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-sssd.Tpo $(DEPDIR)/libshadow_la-sssd.Plo @@ -665,6 +694,13 @@ libshadow_la-pwmem.lo: pwmem.c @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-pwmem.lo `test -f 'pwmem.c' || echo '$(srcdir)/'`pwmem.c +libshadow_la-run_part.lo: run_part.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-run_part.lo -MD -MP -MF $(DEPDIR)/libshadow_la-run_part.Tpo -c -o libshadow_la-run_part.lo `test -f 'run_part.c' || echo '$(srcdir)/'`run_part.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-run_part.Tpo $(DEPDIR)/libshadow_la-run_part.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='run_part.c' object='libshadow_la-run_part.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libshadow_la-run_part.lo `test -f 'run_part.c' || echo '$(srcdir)/'`run_part.c + libshadow_la-subordinateio.lo: subordinateio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libshadow_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libshadow_la-subordinateio.lo -MD -MP -MF $(DEPDIR)/libshadow_la-subordinateio.Tpo -c -o libshadow_la-subordinateio.lo `test -f 'subordinateio.c' || echo '$(srcdir)/'`subordinateio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libshadow_la-subordinateio.Tpo $(DEPDIR)/libshadow_la-subordinateio.Plo @@ -902,10 +938,12 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo -rm -f ./$(DEPDIR)/libshadow_la-lockpw.Plo -rm -f ./$(DEPDIR)/libshadow_la-nscd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-nss.Plo -rm -f ./$(DEPDIR)/libshadow_la-port.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwauth.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwio.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwmem.Plo + -rm -f ./$(DEPDIR)/libshadow_la-run_part.Plo -rm -f ./$(DEPDIR)/libshadow_la-selinux.Plo -rm -f ./$(DEPDIR)/libshadow_la-semanage.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetgrent.Plo @@ -914,6 +952,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/libshadow_la-sgroupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadow.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-shadowlog.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowmem.Plo -rm -f ./$(DEPDIR)/libshadow_la-spawn.Plo -rm -f ./$(DEPDIR)/libshadow_la-sssd.Plo @@ -980,10 +1019,12 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-gshadow.Plo -rm -f ./$(DEPDIR)/libshadow_la-lockpw.Plo -rm -f ./$(DEPDIR)/libshadow_la-nscd.Plo + -rm -f ./$(DEPDIR)/libshadow_la-nss.Plo -rm -f ./$(DEPDIR)/libshadow_la-port.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwauth.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwio.Plo -rm -f ./$(DEPDIR)/libshadow_la-pwmem.Plo + -rm -f ./$(DEPDIR)/libshadow_la-run_part.Plo -rm -f ./$(DEPDIR)/libshadow_la-selinux.Plo -rm -f ./$(DEPDIR)/libshadow_la-semanage.Plo -rm -f ./$(DEPDIR)/libshadow_la-sgetgrent.Plo @@ -992,6 +1033,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/libshadow_la-sgroupio.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadow.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowio.Plo + -rm -f ./$(DEPDIR)/libshadow_la-shadowlog.Plo -rm -f ./$(DEPDIR)/libshadow_la-shadowmem.Plo -rm -f ./$(DEPDIR)/libshadow_la-spawn.Plo -rm -f ./$(DEPDIR)/libshadow_la-sssd.Plo diff --git a/lib/commonio.c b/lib/commonio.c index 16fa7e75..9e0fde60 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2001, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -51,6 +28,7 @@ #endif /* WITH_TCB */ #include "prototypes.h" #include "commonio.h" +#include "shadowlog_internal.h" /* local function prototypes */ static int lrename (const char *, const char *); @@ -144,9 +122,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) fd = open (file, O_CREAT | O_TRUNC | O_WRONLY, 0600); if (-1 == fd) { if (log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: %s: %s\n", - Prog, file, strerror (errno)); + shadow_progname, file, strerror (errno)); } return 0; } @@ -156,9 +134,19 @@ static int do_lock_file (const char *file, const char *lock, bool log) len = (ssize_t) strlen (buf) + 1; if (write (fd, buf, (size_t) len) != len) { if (log) { - (void) fprintf (stderr, - "%s: %s: %s\n", - Prog, file, strerror (errno)); + (void) fprintf (shadow_logfd, + "%s: %s file write error: %s\n", + shadow_progname, file, strerror (errno)); + } + (void) close (fd); + unlink (file); + return 0; + } + if (fdatasync (fd) == -1) { + if (log) { + (void) fprintf (shadow_logfd, + "%s: %s file sync error: %s\n", + shadow_progname, file, strerror (errno)); } (void) close (fd); unlink (file); @@ -169,9 +157,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) if (link (file, lock) == 0) { retval = check_link_count (file); if ((0==retval) && log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: %s: lock file already used\n", - Prog, file); + shadow_progname, file); } unlink (file); return retval; @@ -180,9 +168,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) fd = open (lock, O_RDWR); if (-1 == fd) { if (log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: %s: %s\n", - Prog, lock, strerror (errno)); + shadow_progname, lock, strerror (errno)); } unlink (file); errno = EINVAL; @@ -192,9 +180,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) close (fd); if (len <= 0) { if (log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: existing lock file %s without a PID\n", - Prog, lock); + shadow_progname, lock); } unlink (file); errno = EINVAL; @@ -203,9 +191,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) buf[len] = '\0'; if (get_pid (buf, &pid) == 0) { if (log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: existing lock file %s with an invalid PID '%s'\n", - Prog, lock, buf); + shadow_progname, lock, buf); } unlink (file); errno = EINVAL; @@ -213,9 +201,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) } if (kill (pid, 0) == 0) { if (log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: lock %s already used by PID %lu\n", - Prog, lock, (unsigned long) pid); + shadow_progname, lock, (unsigned long) pid); } unlink (file); errno = EEXIST; @@ -223,9 +211,9 @@ static int do_lock_file (const char *file, const char *lock, bool log) } if (unlink (lock) != 0) { if (log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: cannot get lock %s: %s\n", - Prog, lock, strerror (errno)); + shadow_progname, lock, strerror (errno)); } unlink (file); return 0; @@ -235,15 +223,15 @@ static int do_lock_file (const char *file, const char *lock, bool log) if (link (file, lock) == 0) { retval = check_link_count (file); if ((0==retval) && log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: %s: lock file already used\n", - Prog, file); + shadow_progname, file); } } else { if (log) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: cannot get lock %s: %s\n", - Prog, lock, strerror (errno)); + shadow_progname, lock, strerror (errno)); } } @@ -326,8 +314,12 @@ static int create_backup (const char *backup, FILE * fp) /* FIXME: unlink the backup file? */ return -1; } - if ( (fsync (fileno (bkfp)) != 0) - || (fclose (bkfp) != 0)) { + if (fsync (fileno (bkfp)) != 0) { + (void) fclose (bkfp); + /* FIXME: unlink the backup file? */ + return -1; + } + if (fclose (bkfp) != 0) { /* FIXME: unlink the backup file? */ return -1; } @@ -389,11 +381,11 @@ int commonio_lock_nowait (struct commonio_db *db, bool log) file_len = strlen(db->filename) + 11;/* %lu max size */ lock_file_len = strlen(db->filename) + 6; /* sizeof ".lock" */ file = (char*)malloc(file_len); - if(file == NULL) { + if (file == NULL) { goto cleanup_ENOMEM; } lock = (char*)malloc(lock_file_len); - if(lock == NULL) { + if (lock == NULL) { goto cleanup_ENOMEM; } snprintf (file, file_len, "%s.%lu", @@ -405,9 +397,9 @@ int commonio_lock_nowait (struct commonio_db *db, bool log) err = 1; } cleanup_ENOMEM: - if(file) + if (file) free(file); - if(lock) + if (lock) free(lock); return err; } @@ -432,9 +424,9 @@ int commonio_lock (struct commonio_db *db) if (0 == lock_count) { if (lckpwdf () == -1) { if (geteuid () != 0) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, "%s: Permission denied.\n", - Prog); + shadow_progname); } return 0; /* failure */ } @@ -468,8 +460,8 @@ int commonio_lock (struct commonio_db *db) } /* no unnecessary retries on "permission denied" errors */ if (geteuid () != 0) { - (void) fprintf (stderr, "%s: Permission denied.\n", - Prog); + (void) fprintf (shadow_logfd, "%s: Permission denied.\n", + shadow_progname); return 0; } } @@ -964,7 +956,7 @@ int commonio_close (struct commonio_db *db) snprintf (buf, sizeof buf, "%s-", db->filename); #ifdef WITH_SELINUX - if (set_selinux_file_context (buf) != 0) { + if (set_selinux_file_context (db->filename, S_IFREG) != 0) { errors++; } #endif @@ -997,7 +989,7 @@ int commonio_close (struct commonio_db *db) snprintf (buf, sizeof buf, "%s+", db->filename); #ifdef WITH_SELINUX - if (set_selinux_file_context (buf) != 0) { + if (set_selinux_file_context (db->filename, S_IFREG) != 0) { errors++; } #endif @@ -1099,7 +1091,7 @@ int commonio_update (struct commonio_db *db, const void *eptr) p = find_entry_by_name (db, db->ops->getname (eptr)); if (NULL != p) { if (next_entry_by_name (db, p->next, db->ops->getname (eptr)) != NULL) { - fprintf (stderr, _("Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n"), db->ops->getname (eptr), db->filename); + fprintf (shadow_logfd, _("Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n"), db->ops->getname (eptr), db->filename); db->ops->free (nentry); return 0; } @@ -1204,7 +1196,7 @@ int commonio_remove (struct commonio_db *db, const char *name) return 0; } if (next_entry_by_name (db, p->next, name) != NULL) { - fprintf (stderr, _("Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n"), name, db->filename); + fprintf (shadow_logfd, _("Multiple entries named '%s' in %s. Please fix this with pwck or grpck.\n"), name, db->filename); return 0; } diff --git a/lib/commonio.h b/lib/commonio.h index 64e83073..e63c5b4d 100644 --- a/lib/commonio.h +++ b/lib/commonio.h @@ -1,43 +1,16 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ #ifndef COMMONIO_H #define COMMONIO_H -#ifdef WITH_SELINUX -#include -#endif - #include "defines.h" /* bool */ /* @@ -121,7 +94,7 @@ struct commonio_db { /*@dependent@*/ /*@null@*/FILE *fp; #ifdef WITH_SELINUX - /*@null@*/security_context_t scontext; + /*@null@*/char *scontext; #endif /* * Default permissions and owner for newly created data file. diff --git a/lib/defines.h b/lib/defines.h index 2fb1b56e..fc1521cb 100644 --- a/lib/defines.h +++ b/lib/defines.h @@ -4,6 +4,8 @@ #ifndef _DEFINES_H_ #define _DEFINES_H_ +#include "config.h" + #if HAVE_STDBOOL_H # include #else @@ -68,10 +70,6 @@ extern char * textdomain (const char * domainname); # define strrchr rindex # endif char *strchr (), *strrchr (), *strtok (); - -# ifndef HAVE_MEMCPY -# define memcpy(d, s, n) bcopy((s), (d), (n)) -# endif #endif /* not STDC_HEADERS */ #if HAVE_ERRNO_H @@ -94,6 +92,14 @@ char *strchr (), *strrchr (), *strtok (); # include #endif +/* + * crypt(3), crypt_gensalt(3), and their + * feature test macros may be defined in here. + */ +#if HAVE_CRYPT_H +# include +#endif + #if TIME_WITH_SYS_TIME # include # include @@ -105,11 +111,7 @@ char *strchr (), *strrchr (), *strtok (); # endif #endif /* not TIME_WITH_SYS_TIME */ -#ifdef HAVE_MEMSET -# define memzero(ptr, size) memset((void *)(ptr), 0, (size)) -#else -# define memzero(ptr, size) bzero((char *)(ptr), (size)) -#endif +#define memzero(ptr, size) memset((void *)(ptr), 0, (size)) #define strzero(s) memzero(s, strlen(s)) /* warning: evaluates twice */ #ifdef HAVE_DIRENT_H /* DIR_SYSV */ diff --git a/lib/encrypt.c b/lib/encrypt.c index 4247f241..c84a2552 100644 --- a/lib/encrypt.c +++ b/lib/encrypt.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -39,6 +16,7 @@ #include "prototypes.h" #include "defines.h" +#include "shadowlog_internal.h" /*@exposed@*//*@null@*/char *pw_encrypt (const char *clear, const char *salt) { @@ -74,6 +52,9 @@ case '6': method = "SHA512"; break; + case 'y': + method = "YESCRYPT"; + break; default: { static char nummethod[4] = "$x$"; @@ -81,7 +62,7 @@ method = &nummethod[0]; } } - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, _("crypt method not supported by libcrypt? (%s)\n"), method); exit (EXIT_FAILURE); diff --git a/lib/exitcodes.h b/lib/exitcodes.h index 96b2340b..7dbe340e 100644 --- a/lib/exitcodes.h +++ b/lib/exitcodes.h @@ -1,30 +1,7 @@ /* - * Copyright (c) 2005 - 2006, Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 2005 - 2006, Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ diff --git a/lib/faillog.h b/lib/faillog.h index a0a95b34..38476ea6 100644 --- a/lib/faillog.h +++ b/lib/faillog.h @@ -1,32 +1,9 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -45,8 +22,8 @@ struct faillog { short fail_cnt; /* failures since last success */ short fail_max; /* failures before turning account off */ - char fail_line[12]; /* last failure occured here */ - time_t fail_time; /* last failure occured then */ + char fail_line[12]; /* last failure occurred here */ + time_t fail_time; /* last failure occurred then */ /* * If nonzero, the account will be re-enabled if there are no * failures for fail_locktime seconds since last failure. diff --git a/lib/fields.c b/lib/fields.c index 649fae17..8a560352 100644 --- a/lib/fields.c +++ b/lib/fields.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 , Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 , Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/fputsx.c b/lib/fputsx.c index c42b40bd..bb71ab2a 100644 --- a/lib/fputsx.c +++ b/lib/fputsx.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/get_gid.c b/lib/get_gid.c index 6fb31ffe..cbcd6f4b 100644 --- a/lib/get_gid.c +++ b/lib/get_gid.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2009 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2009 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/get_pid.c b/lib/get_pid.c index e2b47ce5..383eb695 100644 --- a/lib/get_pid.c +++ b/lib/get_pid.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2009 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2009 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/get_uid.c b/lib/get_uid.c index ac0f2df3..50f99225 100644 --- a/lib/get_uid.c +++ b/lib/get_uid.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2009 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2009 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/getdef.c b/lib/getdef.c index 00f6abfe..fbaea2e1 100644 --- a/lib/getdef.c +++ b/lib/getdef.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -44,6 +21,7 @@ #include #endif #include "getdef.h" +#include "shadowlog_internal.h" /* * A configuration item definition. */ @@ -61,6 +39,7 @@ struct itemdef { {"ENV_TZ", NULL}, \ {"FAILLOG_ENAB", NULL}, \ {"FTMP_FILE", NULL}, \ + {"HMAC_CRYPTO_ALGO", NULL}, \ {"ISSUE_FILE", NULL}, \ {"LASTLOG_ENAB", NULL}, \ {"LOGIN_STRING", NULL}, \ @@ -77,6 +56,16 @@ struct itemdef { {"SU_WHEEL_ONLY", NULL}, \ {"ULIMIT", NULL}, +/* + * Items used in other tools (util-linux, etc.) + */ +#define FOREIGNDEFS \ + {"ALWAYS_SET_PATH", NULL}, \ + {"ENV_ROOTPATH", NULL}, \ + {"LOGIN_KEEP_USERNAME", NULL}, \ + {"LOGIN_PLAIN_PROMPT", NULL}, \ + {"MOTD_FIRSTONLY", NULL}, \ + #define NUMDEFS (sizeof(def_table)/sizeof(def_table[0])) static struct itemdef def_table[] = { @@ -105,6 +94,7 @@ static struct itemdef def_table[] = { {"MAIL_FILE", NULL}, {"MAX_MEMBERS_PER_GROUP", NULL}, {"MD5_CRYPT_ENAB", NULL}, + {"NONEXISTENT", NULL}, {"PASS_MAX_DAYS", NULL}, {"PASS_MIN_DAYS", NULL}, {"PASS_WARN_AGE", NULL}, @@ -115,6 +105,9 @@ static struct itemdef def_table[] = { #ifdef USE_BCRYPT {"BCRYPT_MAX_ROUNDS", NULL}, {"BCRYPT_MIN_ROUNDS", NULL}, +#endif +#ifdef USE_YESCRYPT + {"YESCRYPT_COST_FACTOR", NULL}, #endif {"SUB_GID_COUNT", NULL}, {"SUB_GID_MAX", NULL}, @@ -149,6 +142,8 @@ static struct itemdef def_table[] = { {"USE_TCB", NULL}, #endif {"FORCE_SHADOW", NULL}, + {"GRANT_AUX_GROUP_SUBIDS", NULL}, + {"PREVENT_NO_AUTH", NULL}, {NULL, NULL} }; @@ -157,6 +152,7 @@ static struct itemdef knowndef_table[] = { #ifdef USE_PAM PAMDEFS #endif + FOREIGNDEFS {NULL, NULL} }; @@ -249,7 +245,7 @@ int getdef_num (const char *item, int dflt) if ( (getlong (d->value, &val) == 0) || (val > INT_MAX) || (val < INT_MIN)) { - fprintf (stderr, + fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); return dflt; @@ -284,7 +280,7 @@ unsigned int getdef_unum (const char *item, unsigned int dflt) if ( (getlong (d->value, &val) == 0) || (val < 0) || (val > INT_MAX)) { - fprintf (stderr, + fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); return dflt; @@ -317,7 +313,7 @@ long getdef_long (const char *item, long dflt) } if (getlong (d->value, &val) == 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); return dflt; @@ -350,7 +346,7 @@ unsigned long getdef_ulong (const char *item, unsigned long dflt) if (getulong (d->value, &val) == 0) { /* FIXME: we should have a getulong */ - fprintf (stderr, + fprintf (shadow_logfd, _("configuration error - cannot parse %s value: '%s'"), item, d->value); return dflt; @@ -388,7 +384,7 @@ int putdef_str (const char *name, const char *value) cp = strdup (value); if (NULL == cp) { (void) fputs (_("Could not allocate space for config info.\n"), - stderr); + shadow_logfd); SYSLOG ((LOG_ERR, "could not allocate space for config info")); return -1; } @@ -413,7 +409,6 @@ static /*@observer@*/ /*@null@*/struct itemdef *def_find (const char *name) { struct itemdef *ptr; - /* * Search into the table. */ @@ -433,7 +428,7 @@ static /*@observer@*/ /*@null@*/struct itemdef *def_find (const char *name) goto out; } } - fprintf (stderr, + fprintf (shadow_logfd, _("configuration error - unknown item '%s' (notify administrator)\n"), name); SYSLOG ((LOG_CRIT, "unknown configuration item `%s'", name)); diff --git a/lib/getdef.h b/lib/getdef.h index 46346d8e..2bd3fc5f 100644 --- a/lib/getdef.h +++ b/lib/getdef.h @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2006, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #ifndef _GETDEF_H #define _GETDEF_H diff --git a/lib/getlong.c b/lib/getlong.c index 47c3a605..ec4aa54d 100644 --- a/lib/getlong.c +++ b/lib/getlong.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/getulong.c b/lib/getulong.c index 08d2c1a8..33250e3a 100644 --- a/lib/getulong.c +++ b/lib/getulong.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/groupio.c b/lib/groupio.c index bffb06e0..54af36e3 100644 --- a/lib/groupio.c +++ b/lib/groupio.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/groupio.h b/lib/groupio.h index e1f1b029..2014de0c 100644 --- a/lib/groupio.h +++ b/lib/groupio.h @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ diff --git a/lib/groupmem.c b/lib/groupmem.c index 1fd1c135..c18b5c64 100644 --- a/lib/groupmem.c +++ b/lib/groupmem.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2007 - 2013, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2013, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -87,6 +64,18 @@ return gr; } +void gr_free_members (struct group *grent) +{ + if (NULL != grent->gr_mem) { + size_t i; + for (i = 0; NULL != grent->gr_mem[i]; i++) { + free (grent->gr_mem[i]); + } + free (grent->gr_mem); + grent->gr_mem = NULL; + } +} + void gr_free (/*@out@*/ /*@only@*/struct group *grent) { free (grent->gr_name); @@ -94,13 +83,36 @@ void gr_free (/*@out@*/ /*@only@*/struct group *grent) memzero (grent->gr_passwd, strlen (grent->gr_passwd)); free (grent->gr_passwd); } - if (NULL != grent->gr_mem) { - size_t i; - for (i = 0; NULL != grent->gr_mem[i]; i++) { - free (grent->gr_mem[i]); - } - free (grent->gr_mem); - } + gr_free_members(grent); free (grent); } +bool gr_append_member(struct group *grp, char *member) +{ + int i; + + if (NULL == grp->gr_mem || grp->gr_mem[0] == NULL) { + grp->gr_mem = (char **)malloc(2 * sizeof(char *)); + if (!grp->gr_mem) { + return false; + } + grp->gr_mem[0] = strdup(member); + if (!grp->gr_mem[0]) { + return false; + } + grp->gr_mem[1] = NULL; + return true; + } + + for (i = 0; grp->gr_mem[i]; i++) ; + grp->gr_mem = realloc(grp->gr_mem, (i + 2) * sizeof(char *)); + if (NULL == grp->gr_mem) { + return false; + } + grp->gr_mem[i] = strdup(member); + if (NULL == grp->gr_mem[i]) { + return false; + } + grp->gr_mem[i + 1] = NULL; + return true; +} diff --git a/lib/gshadow.c b/lib/gshadow.c index e5a0f61e..2e129230 100644 --- a/lib/gshadow.c +++ b/lib/gshadow.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/gshadow_.h b/lib/gshadow_.h index 7959c5a1..68a0bb67 100644 --- a/lib/gshadow_.h +++ b/lib/gshadow_.h @@ -1,32 +1,9 @@ /* - * Copyright (c) 1988 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1988 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/lib/lockpw.c b/lib/lockpw.c index 0bcf1955..aaa317fd 100644 --- a/lib/lockpw.c +++ b/lib/lockpw.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1992 , Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1992 , Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/nscd.c b/lib/nscd.c index 7adb58ff..2c2251af 100644 --- a/lib/nscd.c +++ b/lib/nscd.c @@ -10,6 +10,7 @@ #include "defines.h" #include "prototypes.h" #include "nscd.h" +#include "shadowlog_internal.h" #define MSG_NSCD_FLUSH_CACHE_FAILED "%s: Failed to flush the nscd cache.\n" @@ -25,15 +26,15 @@ int nscd_flush_cache (const char *service) if (run_command (cmd, spawnedArgs, spawnedEnv, &status) != 0) { /* run_command writes its own more detailed message. */ - (void) fprintf (stderr, _(MSG_NSCD_FLUSH_CACHE_FAILED), Prog); + (void) fprintf (shadow_logfd, _(MSG_NSCD_FLUSH_CACHE_FAILED), shadow_progname); return -1; } code = WEXITSTATUS (status); if (!WIFEXITED (status)) { - (void) fprintf (stderr, + (void) fprintf (shadow_logfd, _("%s: nscd did not terminate normally (signal %d)\n"), - Prog, WTERMSIG (status)); + shadow_progname, WTERMSIG (status)); return -1; } else if (code == E_CMD_NOTFOUND) { /* nscd is not installed, or it is installed but uses an @@ -43,9 +44,9 @@ int nscd_flush_cache (const char *service) /* nscd is installed, but it isn't active. */ return 0; } else if (code != 0) { - (void) fprintf (stderr, _("%s: nscd exited with status %d\n"), - Prog, code); - (void) fprintf (stderr, _(MSG_NSCD_FLUSH_CACHE_FAILED), Prog); + (void) fprintf (shadow_logfd, _("%s: nscd exited with status %d\n"), + shadow_progname, code); + (void) fprintf (shadow_logfd, _(MSG_NSCD_FLUSH_CACHE_FAILED), shadow_progname); return -1; } diff --git a/lib/nss.c b/lib/nss.c new file mode 100644 index 00000000..af3e95ac --- /dev/null +++ b/lib/nss.c @@ -0,0 +1,150 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include "prototypes.h" +#include "../libsubid/subid.h" +#include "shadowlog_internal.h" + +#define NSSWITCH "/etc/nsswitch.conf" + +// NSS plugin handling for subids +// If nsswitch has a line like +// subid: sssd +// then sssd will be consulted for subids. Unlike normal NSS dbs, +// only one db is supported at a time. That's open to debate, but +// the subids are a pretty limited resource, and local files seem +// bound to step on any other allocations leading to insecure +// conditions. +static atomic_flag nss_init_started; +static atomic_bool nss_init_completed; + +static struct subid_nss_ops *subid_nss; + +bool nss_is_initialized() { + return atomic_load(&nss_init_completed); +} + +void nss_exit() { + if (nss_is_initialized() && subid_nss) { + dlclose(subid_nss->handle); + free(subid_nss); + subid_nss = NULL; + } +} + +// nsswitch_path is an argument only to support testing. +void nss_init(char *nsswitch_path) { + FILE *nssfp = NULL; + char *line = NULL, *p, *token, *saveptr; + size_t len = 0; + + if (atomic_flag_test_and_set(&nss_init_started)) { + // Another thread has started nss_init, wait for it to complete + while (!atomic_load(&nss_init_completed)) + usleep(100); + return; + } + + if (!nsswitch_path) + nsswitch_path = NSSWITCH; + + // read nsswitch.conf to check for a line like: + // subid: files + nssfp = fopen(nsswitch_path, "r"); + if (!nssfp) { + fprintf(shadow_logfd, "Failed opening %s: %m", nsswitch_path); + atomic_store(&nss_init_completed, true); + return; + } + while ((getline(&line, &len, nssfp)) != -1) { + if (line[0] == '\0' || line[0] == '#') + continue; + if (strlen(line) < 8) + continue; + if (strncasecmp(line, "subid:", 6) != 0) + continue; + p = &line[6]; + while ((*p) && isspace(*p)) + p++; + if (!*p) + continue; + for (token = strtok_r(p, " \n\t", &saveptr); + token; + token = strtok_r(NULL, " \n\t", &saveptr)) { + char libname[65]; + void *h; + if (strcmp(token, "files") == 0) { + subid_nss = NULL; + goto done; + } + if (strlen(token) > 50) { + fprintf(shadow_logfd, "Subid NSS module name too long (longer than 50 characters): %s\n", token); + fprintf(shadow_logfd, "Using files\n"); + subid_nss = NULL; + goto done; + } + snprintf(libname, 64, "libsubid_%s.so", token); + h = dlopen(libname, RTLD_LAZY); + if (!h) { + fprintf(shadow_logfd, "Error opening %s: %s\n", libname, dlerror()); + fprintf(shadow_logfd, "Using files\n"); + subid_nss = NULL; + goto done; + } + subid_nss = malloc(sizeof(*subid_nss)); + if (!subid_nss) { + dlclose(h); + goto done; + } + subid_nss->has_range = dlsym(h, "shadow_subid_has_range"); + if (!subid_nss->has_range) { + fprintf(shadow_logfd, "%s did not provide @has_range@\n", libname); + dlclose(h); + free(subid_nss); + subid_nss = NULL; + goto done; + } + subid_nss->list_owner_ranges = dlsym(h, "shadow_subid_list_owner_ranges"); + if (!subid_nss->list_owner_ranges) { + fprintf(shadow_logfd, "%s did not provide @list_owner_ranges@\n", libname); + dlclose(h); + free(subid_nss); + subid_nss = NULL; + goto done; + } + subid_nss->find_subid_owners = dlsym(h, "shadow_subid_find_subid_owners"); + if (!subid_nss->find_subid_owners) { + fprintf(shadow_logfd, "%s did not provide @find_subid_owners@\n", libname); + dlclose(h); + free(subid_nss); + subid_nss = NULL; + goto done; + } + subid_nss->handle = h; + goto done; + } + fprintf(shadow_logfd, "No usable subid NSS module found, using files\n"); + // subid_nss has to be null here, but to ease reviews: + free(subid_nss); + subid_nss = NULL; + goto done; + } + +done: + atomic_store(&nss_init_completed, true); + free(line); + if (nssfp) { + atexit(nss_exit); + fclose(nssfp); + } +} + +struct subid_nss_ops *get_subid_nss_handle() { + nss_init(NULL); + return subid_nss; +} diff --git a/lib/pam_defs.h b/lib/pam_defs.h index 343fbb45..2dcda3cd 100644 --- a/lib/pam_defs.h +++ b/lib/pam_defs.h @@ -1,31 +1,8 @@ /* - * Copyright (c) 1999 , Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1999 , Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/port.c b/lib/port.c index 438879c1..0bea2ef4 100644 --- a/lib/port.c +++ b/lib/port.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/port.h b/lib/port.h index 2da56b20..c19421da 100644 --- a/lib/port.h +++ b/lib/port.h @@ -1,32 +1,9 @@ /* - * Copyright (c) 1989 - 1991, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/lib/prototypes.h b/lib/prototypes.h index 22603b98..6f80df82 100644 --- a/lib/prototypes.h +++ b/lib/prototypes.h @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -59,8 +36,6 @@ #include "defines.h" #include "commonio.h" -extern /*@observer@*/ const char *Prog; - /* addgrps.c */ #if defined (HAVE_SETGROUPS) && ! defined (USE_PAM) extern int add_groups (const char *); @@ -133,6 +108,9 @@ extern int copy_tree (const char *src_root, const char *dst_root, uid_t old_uid, uid_t new_uid, gid_t old_gid, gid_t new_gid); +/* date_to_str.c */ +extern void date_to_str (size_t size, char buf[size], long date); + /* encrypt.c */ extern /*@exposed@*//*@null@*/char *pw_encrypt (const char *, const char *); @@ -161,12 +139,10 @@ extern int find_new_uid (bool sys_user, #ifdef ENABLE_SUBIDS /* find_new_sub_gids.c */ -extern int find_new_sub_gids (const char *owner, - gid_t *range_start, unsigned long *range_count); +extern int find_new_sub_gids (gid_t *range_start, unsigned long *range_count); /* find_new_sub_uids.c */ -extern int find_new_sub_uids (const char *owner, - uid_t *range_start, unsigned long *range_count); +extern int find_new_sub_uids (uid_t *range_start, unsigned long *range_count); #endif /* ENABLE_SUBIDS */ @@ -208,7 +184,9 @@ extern void __gr_set_changed (void); /* groupmem.c */ extern /*@null@*/ /*@only@*/struct group *__gr_dup (const struct group *grent); +extern void gr_free_members (struct group *grent); extern void gr_free (/*@out@*/ /*@only@*/struct group *grent); +extern bool gr_append_member (struct group *grp, char *member); /* hushed.c */ extern bool hushed (const char *username); @@ -262,6 +240,62 @@ extern void motd (void); /* myname.c */ extern /*@null@*//*@only@*/struct passwd *get_my_pwent (void); +/* nss.c */ +#include +extern void nss_init(char *nsswitch_path); +extern bool nss_is_initialized(); + +struct subid_nss_ops { + /* + * nss_has_range: does a user own a given subid range + * + * @owner: username + * @start: first subid in queried range + * @count: number of subids in queried range + * @idtype: subuid or subgid + * @result: true if @owner has been allocated the subid range. + * + * returns success if the module was able to determine an answer (true or false), + * else an error status. + */ + enum subid_status (*has_range)(const char *owner, unsigned long start, unsigned long count, enum subid_type idtype, bool *result); + + /* + * nss_list_owner_ranges: list the subid ranges delegated to a user. + * + * @owner - string representing username being queried + * @id_type - subuid or subgid + * @ranges - pointer to an array of struct subid_range, or NULL. The + * returned array must be freed by the caller. + * @count - pointer to an integer into which the number of returned ranges + * is written. + + * returns success if the module was able to determine an answer, + * else an error status. + */ + enum subid_status (*list_owner_ranges)(const char *owner, enum subid_type id_type, struct subid_range **ranges, int *count); + + /* + * nss_find_subid_owners: find uids who own a given subuid or subgid. + * + * @id - the delegated id (subuid or subgid) being queried + * @id_type - subuid or subgid + * @uids - pointer to an array of uids which will be allocated by + * nss_find_subid_owners() + * @count - number of uids found + * + * returns success if the module was able to determine an answer, + * else an error status. + */ + enum subid_status (*find_subid_owners)(unsigned long id, enum subid_type id_type, uid_t **uids, int *count); + + /* The dlsym handle to close */ + void *handle; +}; + +extern struct subid_nss_ops *get_subid_nss_handle(); + + /* pam_pass_non_interactive.c */ #ifdef USE_PAM extern int do_pam_passwd_non_interactive (const char *pam_service, @@ -334,7 +368,8 @@ extern /*@observer@*/const char *crypt_make_salt (/*@null@*//*@observer@*/const /* selinux.c */ #ifdef WITH_SELINUX -extern int set_selinux_file_context (const char *dst_name); +extern int set_selinux_file_context (const char *dst_name, mode_t mode); +extern void reset_selinux_handle (void); extern int reset_selinux_file_context (void); extern int check_selinux_permit (const char *perm_name); #endif @@ -448,6 +483,7 @@ extern bool valid (const char *, const struct passwd *); extern /*@maynotreturn@*/ /*@only@*//*@out@*//*@notnull@*/char *xmalloc (size_t size) /*@ensures MaxSet(result) == (size - 1); @*/; extern /*@maynotreturn@*/ /*@only@*//*@notnull@*/char *xstrdup (const char *); +extern void xfree(void *ap); /* xgetpwnam.c */ extern /*@null@*/ /*@only@*/struct passwd *xgetpwnam (const char *); diff --git a/lib/pwauth.c b/lib/pwauth.c index 9e24fbf2..62de4723 100644 --- a/lib/pwauth.c +++ b/lib/pwauth.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1992 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1992 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -127,7 +104,7 @@ int pw_auth (const char *cipher, #ifdef SKEY /* * If the user has an S/KEY entry show them the pertinent info - * and then we can try validating the created cyphertext and the SKEY. + * and then we can try validating the created ciphertext and the SKEY. * If there is no SKEY information we default to not using SKEY. */ diff --git a/lib/pwauth.h b/lib/pwauth.h index d6c71dda..fb205b71 100644 --- a/lib/pwauth.h +++ b/lib/pwauth.h @@ -1,33 +1,10 @@ /* - * Copyright (c) 1992 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2009 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1992 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2009 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/lib/pwio.c b/lib/pwio.c index 127719cb..2efecfbf 100644 --- a/lib/pwio.c +++ b/lib/pwio.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/pwio.h b/lib/pwio.h index 2db85e01..882a7c7a 100644 --- a/lib/pwio.h +++ b/lib/pwio.h @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2005 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ diff --git a/lib/pwmem.c b/lib/pwmem.c index 17d2eb21..f6aadb85 100644 --- a/lib/pwmem.c +++ b/lib/pwmem.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2013, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2013, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -93,14 +70,16 @@ void pw_free (/*@out@*/ /*@only@*/struct passwd *pwent) { - free (pwent->pw_name); - if (pwent->pw_passwd) { - memzero (pwent->pw_passwd, strlen (pwent->pw_passwd)); - free (pwent->pw_passwd); + if (pwent != NULL) { + free (pwent->pw_name); + if (pwent->pw_passwd) { + memzero (pwent->pw_passwd, strlen (pwent->pw_passwd)); + free (pwent->pw_passwd); + } + free (pwent->pw_gecos); + free (pwent->pw_dir); + free (pwent->pw_shell); + free (pwent); } - free (pwent->pw_gecos); - free (pwent->pw_dir); - free (pwent->pw_shell); - free (pwent); } diff --git a/lib/run_part.c b/lib/run_part.c new file mode 100644 index 00000000..1ce06be0 --- /dev/null +++ b/lib/run_part.c @@ -0,0 +1,103 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "shadowlog_internal.h" + +int run_part (char *script_path, char *name, char *action) +{ + int pid; + int wait_status; + int pid_status; + char *args[] = { script_path, NULL }; + + pid=fork(); + if (pid==-1) { + perror ("Could not fork"); + return 1; + } + if (pid==0) { + setenv ("ACTION",action,1); + setenv ("SUBJECT",name,1); + execv (script_path,args); + perror ("execv"); + exit(1); + } + + pid_status = wait (&wait_status); + if (pid_status == pid) { + return (wait_status); + } + + perror ("waitpid"); + return (1); +} + +int run_parts (char *directory, char *name, char *action) +{ + struct dirent **namelist; + int scanlist; + int n; + int execute_result; + + scanlist = scandir (directory, &namelist, 0, alphasort); + if (scanlist<0) { + return (0); + } + + for (n=0; nd_name) + 2; + char *s = (char*)malloc(path_length); + if (!s) { + printf ("could not allocate memory\n"); + for (; nd_name); + + execute_result = 0; + if (stat (s, &sb) == -1) { + perror ("stat"); + free (s); + for (; nd_name); + for (; n - * All rights reserved. + * SPDX-FileCopyrightText: 2011 , Peter Vrabec * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -35,11 +12,27 @@ #include "defines.h" #include -#include +#include #include "prototypes.h" +#include "shadowlog_internal.h" + static bool selinux_checked = false; static bool selinux_enabled; +static /*@null@*/struct selabel_handle *selabel_hnd = NULL; + +static void cleanup(void) +{ + if (selabel_hnd) { + selabel_close(selabel_hnd); + selabel_hnd = NULL; + } +} + +void reset_selinux_handle (void) +{ + cleanup(); +} /* * set_selinux_file_context - Set the security context before any file or @@ -51,10 +44,8 @@ static bool selinux_enabled; * Callers may have to Reset SELinux to create files with default * contexts with reset_selinux_file_context */ -int set_selinux_file_context (const char *dst_name) +int set_selinux_file_context (const char *dst_name, mode_t mode) { - /*@null@*/security_context_t scontext = NULL; - if (!selinux_checked) { selinux_enabled = is_selinux_enabled () > 0; selinux_checked = true; @@ -62,18 +53,34 @@ int set_selinux_file_context (const char *dst_name) if (selinux_enabled) { /* Get the default security context for this file */ - if (matchpathcon (dst_name, 0, &scontext) < 0) { - if (security_getenforce () != 0) { - return 1; + + /*@null@*/char *fcontext_raw = NULL; + int r; + + if (selabel_hnd == NULL) { + selabel_hnd = selabel_open(SELABEL_CTX_FILE, NULL, 0); + if (selabel_hnd == NULL) { + return security_getenforce () != 0; } + (void) atexit(cleanup); } + + r = selabel_lookup_raw(selabel_hnd, &fcontext_raw, dst_name, mode); + if (r < 0) { + /* No context specified for the searched path */ + if (errno == ENOENT) { + return 0; + } + + return security_getenforce () != 0; + } + /* Set the security context for the next created file */ - if (setfscreatecon (scontext) < 0) { - if (security_getenforce () != 0) { - return 1; - } + r = setfscreatecon_raw (fcontext_raw); + freecon (fcontext_raw); + if (r < 0) { + return security_getenforce () != 0; } - freecon (scontext); } return 0; } @@ -92,8 +99,8 @@ int reset_selinux_file_context (void) selinux_checked = true; } if (selinux_enabled) { - if (setfscreatecon (NULL) != 0) { - return 1; + if (setfscreatecon_raw (NULL) != 0) { + return security_getenforce () != 0; } } return 0; @@ -131,7 +138,7 @@ static int selinux_log_cb (int type, const char *fmt, ...) { && (errno != EAFNOSUPPORT)) { (void) fputs (_("Cannot open audit interface.\n"), - stderr); + shadow_logfd); SYSLOG ((LOG_WARN, "Cannot open audit interface.")); } } @@ -174,7 +181,7 @@ skip_syslog: */ int check_selinux_permit (const char *perm_name) { - char *user_context_str; + char *user_context_raw; int r; if (0 == is_selinux_enabled ()) { @@ -183,18 +190,18 @@ int check_selinux_permit (const char *perm_name) selinux_set_callback (SELINUX_CB_LOG, (union selinux_callback) selinux_log_cb); - if (getprevcon (&user_context_str) != 0) { - fprintf (stderr, + if (getprevcon_raw (&user_context_raw) != 0) { + fprintf (shadow_logfd, _("%s: can not get previous SELinux process context: %s\n"), - Prog, strerror (errno)); + shadow_progname, strerror (errno)); SYSLOG ((LOG_WARN, "can not get previous SELinux process context: %s", strerror (errno))); return (security_getenforce () != 0); } - r = selinux_check_access (user_context_str, user_context_str, "passwd", perm_name, NULL); - freecon (user_context_str); + r = selinux_check_access (user_context_raw, user_context_raw, "passwd", perm_name, NULL); + freecon (user_context_raw); return r; } diff --git a/lib/semanage.c b/lib/semanage.c index e983f5f7..12401608 100644 --- a/lib/semanage.c +++ b/lib/semanage.c @@ -1,31 +1,8 @@ /* - * Copyright (c) 2010 , Jakub Hrozek - * Copyright (c) 2011 , Peter Vrabec - * All rights reserved. + * SPDX-FileCopyrightText: 2010 , Jakub Hrozek + * SPDX-FileCopyrightText: 2011 , Peter Vrabec * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -43,6 +20,7 @@ #include #include "prototypes.h" +#include "shadowlog_internal.h" #ifndef DEFAULT_SERANGE #define DEFAULT_SERANGE "s0" @@ -69,7 +47,7 @@ static void semanage_error_callback (unused void *varg, switch (semanage_msg_get_level (handle)) { case SEMANAGE_MSG_ERR: case SEMANAGE_MSG_WARN: - fprintf (stderr, _("[libsemanage]: %s\n"), message); + fprintf (shadow_logfd, _("[libsemanage]: %s\n"), message); break; case SEMANAGE_MSG_INFO: /* nop */ @@ -87,7 +65,7 @@ static semanage_handle_t *semanage_init (void) handle = semanage_handle_create (); if (NULL == handle) { - fprintf (stderr, + fprintf (shadow_logfd, _("Cannot create SELinux management handle\n")); return NULL; } @@ -96,26 +74,26 @@ static semanage_handle_t *semanage_init (void) ret = semanage_is_managed (handle); if (ret != 1) { - fprintf (stderr, _("SELinux policy not managed\n")); + fprintf (shadow_logfd, _("SELinux policy not managed\n")); goto fail; } ret = semanage_access_check (handle); if (ret < SEMANAGE_CAN_READ) { - fprintf (stderr, _("Cannot read SELinux policy store\n")); + fprintf (shadow_logfd, _("Cannot read SELinux policy store\n")); goto fail; } ret = semanage_connect (handle); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Cannot establish SELinux management connection\n")); goto fail; } ret = semanage_begin_transaction (handle); if (ret != 0) { - fprintf (stderr, _("Cannot begin SELinux transaction\n")); + fprintf (shadow_logfd, _("Cannot begin SELinux transaction\n")); goto fail; } @@ -137,7 +115,7 @@ static int semanage_user_mod (semanage_handle_t *handle, semanage_seuser_query (handle, key, &seuser); if (NULL == seuser) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not query seuser for %s\n"), login_name); ret = 1; goto done; @@ -145,7 +123,7 @@ static int semanage_user_mod (semanage_handle_t *handle, ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not set serange for %s\n"), login_name); ret = 1; goto done; @@ -153,7 +131,7 @@ static int semanage_user_mod (semanage_handle_t *handle, ret = semanage_seuser_set_sename (handle, seuser, seuser_name); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not set sename for %s\n"), login_name); ret = 1; @@ -162,7 +140,7 @@ static int semanage_user_mod (semanage_handle_t *handle, ret = semanage_seuser_modify_local (handle, key, seuser); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not modify login mapping for %s\n"), login_name); ret = 1; @@ -186,7 +164,7 @@ static int semanage_user_add (semanage_handle_t *handle, ret = semanage_seuser_create (handle, &seuser); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Cannot create SELinux login mapping for %s\n"), login_name); ret = 1; @@ -195,14 +173,14 @@ static int semanage_user_add (semanage_handle_t *handle, ret = semanage_seuser_set_name (handle, seuser, login_name); if (ret != 0) { - fprintf (stderr, _("Could not set name for %s\n"), login_name); + fprintf (shadow_logfd, _("Could not set name for %s\n"), login_name); ret = 1; goto done; } ret = semanage_seuser_set_mlsrange (handle, seuser, DEFAULT_SERANGE); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not set serange for %s\n"), login_name); ret = 1; @@ -211,7 +189,7 @@ static int semanage_user_add (semanage_handle_t *handle, ret = semanage_seuser_set_sename (handle, seuser, seuser_name); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not set SELinux user for %s\n"), login_name); ret = 1; @@ -220,7 +198,7 @@ static int semanage_user_add (semanage_handle_t *handle, ret = semanage_seuser_modify_local (handle, key, seuser); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not add login mapping for %s\n"), login_name); ret = 1; @@ -248,21 +226,21 @@ int set_seuser (const char *login_name, const char *seuser_name) handle = semanage_init (); if (NULL == handle) { - fprintf (stderr, _("Cannot init SELinux management\n")); + fprintf (shadow_logfd, _("Cannot init SELinux management\n")); ret = 1; goto done; } ret = semanage_seuser_key_create (handle, login_name, &key); if (ret != 0) { - fprintf (stderr, _("Cannot create SELinux user key\n")); + fprintf (shadow_logfd, _("Cannot create SELinux user key\n")); ret = 1; goto done; } ret = semanage_seuser_exists (handle, key, &seuser_exists); if (ret < 0) { - fprintf (stderr, _("Cannot verify the SELinux user\n")); + fprintf (shadow_logfd, _("Cannot verify the SELinux user\n")); ret = 1; goto done; } @@ -270,7 +248,7 @@ int set_seuser (const char *login_name, const char *seuser_name) if (0 != seuser_exists) { ret = semanage_user_mod (handle, key, login_name, seuser_name); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Cannot modify SELinux user mapping\n")); ret = 1; goto done; @@ -278,7 +256,7 @@ int set_seuser (const char *login_name, const char *seuser_name) } else { ret = semanage_user_add (handle, key, login_name, seuser_name); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Cannot add SELinux user mapping\n")); ret = 1; goto done; @@ -287,12 +265,13 @@ int set_seuser (const char *login_name, const char *seuser_name) ret = semanage_commit (handle); if (ret < 0) { - fprintf (stderr, _("Cannot commit SELinux transaction\n")); + fprintf (shadow_logfd, _("Cannot commit SELinux transaction\n")); ret = 1; goto done; } ret = 0; + reset_selinux_handle(); done: semanage_seuser_key_free (key); @@ -310,28 +289,28 @@ int del_seuser (const char *login_name) handle = semanage_init (); if (NULL == handle) { - fprintf (stderr, _("Cannot init SELinux management\n")); + fprintf (shadow_logfd, _("Cannot init SELinux management\n")); ret = 1; goto done; } ret = semanage_seuser_key_create (handle, login_name, &key); if (ret != 0) { - fprintf (stderr, _("Cannot create SELinux user key\n")); + fprintf (shadow_logfd, _("Cannot create SELinux user key\n")); ret = 1; goto done; } ret = semanage_seuser_exists (handle, key, &exists); if (ret < 0) { - fprintf (stderr, _("Cannot verify the SELinux user\n")); + fprintf (shadow_logfd, _("Cannot verify the SELinux user\n")); ret = 1; goto done; } if (0 == exists) { - fprintf (stderr, - _("Login mapping for %s is not defined, OK if default mapping was used\n"), + fprintf (shadow_logfd, + _("Login mapping for %s is not defined, OK if default mapping was used\n"), login_name); ret = 0; /* probably default mapping */ goto done; @@ -339,14 +318,14 @@ int del_seuser (const char *login_name) ret = semanage_seuser_exists_local (handle, key, &exists); if (ret < 0) { - fprintf (stderr, _("Cannot verify the SELinux user\n")); + fprintf (shadow_logfd, _("Cannot verify the SELinux user\n")); ret = 1; goto done; } if (0 == exists) { - fprintf (stderr, - _("Login mapping for %s is defined in policy, cannot be deleted\n"), + fprintf (shadow_logfd, + _("Login mapping for %s is defined in policy, cannot be deleted\n"), login_name); ret = 0; /* Login mapping defined in policy can't be deleted */ goto done; @@ -354,7 +333,7 @@ int del_seuser (const char *login_name) ret = semanage_seuser_del_local (handle, key); if (ret != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("Could not delete login mapping for %s"), login_name); ret = 1; @@ -363,7 +342,7 @@ int del_seuser (const char *login_name) ret = semanage_commit (handle); if (ret < 0) { - fprintf (stderr, _("Cannot commit SELinux transaction\n")); + fprintf (shadow_logfd, _("Cannot commit SELinux transaction\n")); ret = 1; goto done; } diff --git a/lib/sgetgrent.c b/lib/sgetgrent.c index a951be42..1ed3aa11 100644 --- a/lib/sgetgrent.c +++ b/lib/sgetgrent.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/sgetpwent.c b/lib/sgetpwent.c index befdd916..84a653d7 100644 --- a/lib/sgetpwent.c +++ b/lib/sgetpwent.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -91,7 +68,7 @@ struct passwd *sgetpwent (const char *buf) } /* something at the end, columns over shot */ - if( cp != NULL ) { + if ( cp != NULL ) { return( NULL ); } diff --git a/lib/sgetspent.c b/lib/sgetspent.c index 20531eba..a35b6759 100644 --- a/lib/sgetspent.c +++ b/lib/sgetspent.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2009 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2009 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -52,7 +29,6 @@ struct spwd *sgetspent (const char *string) static struct spwd spwd; char *fields[FIELDS]; char *cp; - char *cpp; int i; /* diff --git a/lib/sgroupio.c b/lib/sgroupio.c index ffbdb263..cf01de7b 100644 --- a/lib/sgroupio.c +++ b/lib/sgroupio.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2007 - 2013, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2013, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/sgroupio.h b/lib/sgroupio.h index 163243a4..3474a985 100644 --- a/lib/sgroupio.h +++ b/lib/sgroupio.h @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ diff --git a/lib/shadow.c b/lib/shadow.c index 05cb0e4a..9e86b908 100644 --- a/lib/shadow.c +++ b/lib/shadow.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2009 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2009 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -130,7 +107,6 @@ static struct spwd *my_sgetspent (const char *string) static struct spwd spwd; char *fields[FIELDS]; char *cp; - char *cpp; int i; /* @@ -389,7 +365,6 @@ struct spwd *getspent (void) #ifdef USE_NIS int nis_1_user = 0; struct spwd *val; - char buf[BUFSIZ]; #endif if (NULL == shadow) { setspent (); @@ -484,7 +459,6 @@ struct spwd *getspnam (const char *name) struct spwd *sp; #ifdef USE_NIS - char buf[BUFSIZ]; static char save_name[16]; bool nis_disabled = false; #endif diff --git a/lib/shadowio.c b/lib/shadowio.c index 676b1f1a..34076040 100644 --- a/lib/shadowio.c +++ b/lib/shadowio.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/lib/shadowio.h b/lib/shadowio.h index 5384b1dd..4dbeb6d6 100644 --- a/lib/shadowio.h +++ b/lib/shadowio.h @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ diff --git a/lib/shadowlog.c b/lib/shadowlog.c new file mode 100644 index 00000000..7bcc63ca --- /dev/null +++ b/lib/shadowlog.c @@ -0,0 +1,31 @@ +#include "shadowlog.h" + +#include "lib/shadowlog_internal.h" + +const char *shadow_progname = "libshadow"; +FILE *shadow_logfd = NULL; + +void log_set_progname(const char *progname) +{ + shadow_progname = progname; +} + +const char *log_get_progname(void) +{ + return shadow_progname; +} + +void log_set_logfd(FILE *fd) +{ + if (NULL != fd) + shadow_logfd = fd; + else + shadow_logfd = stderr; +} + +FILE *log_get_logfd(void) +{ + if (shadow_logfd != NULL) + return shadow_logfd; + return stderr; +} diff --git a/lib/shadowlog.h b/lib/shadowlog.h new file mode 100644 index 00000000..bf8be855 --- /dev/null +++ b/lib/shadowlog.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2021 , Serge Hallyn + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the copyright holders or contributors may not be used to + * endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* $Id$ */ +#ifndef _LOG_H +#define _LOG_H +#include + +extern void log_set_progname(const char *); +extern const char *log_get_progname(void); +extern void log_set_logfd(FILE *fd); +extern FILE *log_get_logfd(void); +extern void log_dolog(char *, ...); + +#endif diff --git a/lib/shadowlog_internal.h b/lib/shadowlog_internal.h new file mode 100644 index 00000000..7f25407b --- /dev/null +++ b/lib/shadowlog_internal.h @@ -0,0 +1,2 @@ +extern const char *shadow_progname; /* Program name showed in error messages */ +extern FILE *shadow_logfd; /* file descripter to which error messages are printed */ diff --git a/lib/shadowmem.c b/lib/shadowmem.c index 8989598f..757d6026 100644 --- a/lib/shadowmem.c +++ b/lib/shadowmem.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2007 - 2013, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2013, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -79,11 +56,13 @@ void spw_free (/*@out@*/ /*@only@*/struct spwd *spent) { - free (spent->sp_namp); - if (NULL != spent->sp_pwdp) { - memzero (spent->sp_pwdp, strlen (spent->sp_pwdp)); - free (spent->sp_pwdp); + if (spent != NULL) { + free (spent->sp_namp); + if (NULL != spent->sp_pwdp) { + memzero (spent->sp_pwdp, strlen (spent->sp_pwdp)); + free (spent->sp_pwdp); + } + free (spent); } - free (spent); } diff --git a/lib/spawn.c b/lib/spawn.c index d0b5fb26..ce1a97db 100644 --- a/lib/spawn.c +++ b/lib/spawn.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2011 , Jonathan Nieder - * All rights reserved. + * SPDX-FileCopyrightText: 2011 , Jonathan Nieder * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -38,6 +15,8 @@ #include "exitcodes.h" #include "prototypes.h" +#include "shadowlog_internal.h" + int run_command (const char *cmd, const char *argv[], /*@null@*/const char *envp[], /*@out@*/int *status) { @@ -48,7 +27,7 @@ int run_command (const char *cmd, const char *argv[], } (void) fflush (stdout); - (void) fflush (stderr); + (void) fflush (shadow_logfd); pid = fork (); if (0 == pid) { @@ -57,12 +36,12 @@ int run_command (const char *cmd, const char *argv[], if (ENOENT == errno) { exit (E_CMD_NOTFOUND); } - fprintf (stderr, "%s: cannot execute %s: %s\n", - Prog, cmd, strerror (errno)); + fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", + shadow_progname, cmd, strerror (errno)); exit (E_CMD_NOEXEC); } else if ((pid_t)-1 == pid) { - fprintf (stderr, "%s: cannot execute %s: %s\n", - Prog, cmd, strerror (errno)); + fprintf (shadow_logfd, "%s: cannot execute %s: %s\n", + shadow_progname, cmd, strerror (errno)); return -1; } @@ -74,8 +53,8 @@ int run_command (const char *cmd, const char *argv[], || ((pid_t)-1 != wpid && wpid != pid)); if ((pid_t)-1 == wpid) { - fprintf (stderr, "%s: waitpid (status: %d): %s\n", - Prog, *status, strerror (errno)); + fprintf (shadow_logfd, "%s: waitpid (status: %d): %s\n", + shadow_progname, *status, strerror (errno)); return -1; } diff --git a/lib/sssd.c b/lib/sssd.c index 80e49e55..786ccd60 100644 --- a/lib/sssd.c +++ b/lib/sssd.c @@ -11,7 +11,9 @@ #include "prototypes.h" #include "sssd.h" -#define MSG_SSSD_FLUSH_CACHE_FAILED "%s: Failed to flush the sssd cache.\n" +#include "shadowlog_internal.h" + +#define MSG_SSSD_FLUSH_CACHE_FAILED "%s: Failed to flush the sssd cache." int sssd_flush_cache (int dbflags) { @@ -46,24 +48,22 @@ int sssd_flush_cache (int dbflags) free(sss_cache_args); if (rv != 0) { /* run_command writes its own more detailed message. */ - (void) fprintf (stderr, _(MSG_SSSD_FLUSH_CACHE_FAILED), Prog); + SYSLOG ((LOG_WARN, MSG_SSSD_FLUSH_CACHE_FAILED, shadow_progname)); return -1; } code = WEXITSTATUS (status); if (!WIFEXITED (status)) { - (void) fprintf (stderr, - _("%s: sss_cache did not terminate normally (signal %d)\n"), - Prog, WTERMSIG (status)); + SYSLOG ((LOG_WARN, "%s: sss_cache did not terminate normally (signal %d)", + shadow_progname, WTERMSIG (status))); return -1; } else if (code == E_CMD_NOTFOUND) { /* sss_cache is not installed, or it is installed but uses an interpreter that is missing. Probably the former. */ return 0; } else if (code != 0) { - (void) fprintf (stderr, _("%s: sss_cache exited with status %d\n"), - Prog, code); - (void) fprintf (stderr, _(MSG_SSSD_FLUSH_CACHE_FAILED), Prog); + SYSLOG ((LOG_WARN, "%s: sss_cache exited with status %d", shadow_progname, code)); + SYSLOG ((LOG_WARN, MSG_SSSD_FLUSH_CACHE_FAILED, shadow_progname)); return -1; } diff --git a/lib/subordinateio.c b/lib/subordinateio.c index 0d89a64e..9ca70b8b 100644 --- a/lib/subordinateio.c +++ b/lib/subordinateio.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012 - Eric Biederman + * SPDX-FileCopyrightText: 2012 - Eric Biederman */ #include @@ -11,16 +11,11 @@ #include #include "commonio.h" #include "subordinateio.h" +#include "../libsubid/subid.h" #include #include - -struct subordinate_range { - const char *owner; - unsigned long start; - unsigned long count; -}; - -#define NFIELDS 3 +#include +#include /* * subordinate_dup: create a duplicate range @@ -58,7 +53,7 @@ static /*@null@*/ /*@only@*/void *subordinate_dup (const void *ent) static void subordinate_free (/*@out@*/ /*@only@*/void *ent) { struct subordinate_range *rangeent = ent; - + free ((void *)(rangeent->owner)); free (rangeent); } @@ -78,7 +73,7 @@ static void *subordinate_parse (const char *line) static char rangebuf[1024]; int i; char *cp; - char *fields[NFIELDS]; + char *fields[SUBID_NFIELDS]; /* * Copy the string to a temporary buffer so the substrings can @@ -93,7 +88,7 @@ static void *subordinate_parse (const char *line) * field. The fields are converted into NUL terminated strings. */ - for (cp = rangebuf, i = 0; (i < NFIELDS) && (NULL != cp); i++) { + for (cp = rangebuf, i = 0; (i < SUBID_NFIELDS) && (NULL != cp); i++) { fields[i] = cp; while (('\0' != *cp) && (':' != *cp)) { cp++; @@ -108,10 +103,10 @@ static void *subordinate_parse (const char *line) } /* - * There must be exactly NFIELDS colon separated fields or + * There must be exactly SUBID_NFIELDS colon separated fields or * the entry is invalid. Also, fields must be non-blank. */ - if (i != NFIELDS || *fields[0] == '\0' || *fields[1] == '\0' || *fields[2] == '\0') + if (i != SUBID_NFIELDS || *fields[0] == '\0' || *fields[1] == '\0' || *fields[2] == '\0') return NULL; range.owner = fields[0]; if (getulong (fields[1], &range.start) == 0) @@ -229,7 +224,7 @@ static const struct subordinate_range *find_range(struct commonio_db *db, /* Get UID of the username we are looking for */ pwd = getpwnam(owner); if (NULL == pwd) { - /* Username not defined in /etc/passwd, or error occured during lookup */ + /* Username not defined in /etc/passwd, or error occurred during lookup */ return NULL; } owner_uid = pwd->pw_uid; @@ -301,7 +296,7 @@ static bool have_range(struct commonio_db *db, end = start + count - 1; range = find_range (db, owner, start); while (range) { - unsigned long last; + unsigned long last; last = range->start + range->count - 1; if (last >= (start + count - 1)) @@ -314,6 +309,35 @@ static bool have_range(struct commonio_db *db, return false; } +static bool append_range(struct subid_range **ranges, const struct subordinate_range *new, int n) +{ + if (!*ranges) { + *ranges = malloc(sizeof(struct subid_range)); + if (!*ranges) + return false; + } else { + struct subid_range *alloced; + alloced = realloc(*ranges, (n + 1) * (sizeof(struct subid_range))); + if (!alloced) + return false; + *ranges = alloced; + } + (*ranges)[n].start = new->start; + (*ranges)[n].count = new->count; + return true; +} + +void free_subordinate_ranges(struct subordinate_range **ranges, int count) +{ + int i; + + if (!ranges) + return; + for (i = 0; i < count; i++) + subordinate_free(ranges[i]); + free(ranges); +} + /* * subordinate_range_cmp: compare uid ranges * @@ -574,23 +598,37 @@ int sub_uid_open (int mode) return commonio_open (&subordinate_uid_db, mode); } -bool sub_uid_assigned(const char *owner) +bool local_sub_uid_assigned(const char *owner) { return range_exists (&subordinate_uid_db, owner); } bool have_sub_uids(const char *owner, uid_t start, unsigned long count) { + struct subid_nss_ops *h; + bool found; + enum subid_status status; + h = get_subid_nss_handle(); + if (h) { + status = h->has_range(owner, start, count, ID_TYPE_UID, &found); + if (status == SUBID_STATUS_SUCCESS && found) + return true; + return false; + } return have_range (&subordinate_uid_db, owner, start, count); } int sub_uid_add (const char *owner, uid_t start, unsigned long count) { + if (get_subid_nss_handle()) + return -EOPNOTSUPP; return add_range (&subordinate_uid_db, owner, start, count); } int sub_uid_remove (const char *owner, uid_t start, unsigned long count) { + if (get_subid_nss_handle()) + return -EOPNOTSUPP; return remove_range (&subordinate_uid_db, owner, start, count); } @@ -658,21 +696,35 @@ int sub_gid_open (int mode) bool have_sub_gids(const char *owner, gid_t start, unsigned long count) { + struct subid_nss_ops *h; + bool found; + enum subid_status status; + h = get_subid_nss_handle(); + if (h) { + status = h->has_range(owner, start, count, ID_TYPE_GID, &found); + if (status == SUBID_STATUS_SUCCESS && found) + return true; + return false; + } return have_range(&subordinate_gid_db, owner, start, count); } -bool sub_gid_assigned(const char *owner) +bool local_sub_gid_assigned(const char *owner) { return range_exists (&subordinate_gid_db, owner); } int sub_gid_add (const char *owner, gid_t start, unsigned long count) { + if (get_subid_nss_handle()) + return -EOPNOTSUPP; return add_range (&subordinate_gid_db, owner, start, count); } int sub_gid_remove (const char *owner, gid_t start, unsigned long count) { + if (get_subid_nss_handle()) + return -EOPNOTSUPP; return remove_range (&subordinate_gid_db, owner, start, count); } @@ -692,6 +744,308 @@ gid_t sub_gid_find_free_range(gid_t min, gid_t max, unsigned long count) start = find_free_range (&subordinate_gid_db, min, max, count); return start == ULONG_MAX ? (gid_t) -1 : start; } + +/* + * int list_owner_ranges(const char *owner, enum subid_type id_type, struct subordinate_range ***ranges) + * + * @owner: username + * @id_type: UID or GUID + * @ranges: pointer to array of ranges into which results will be placed. + * + * Fills in the subuid or subgid ranges which are owned by the specified + * user. Username may be a username or a string representation of a + * UID number. If id_type is UID, then subuids are returned, else + * subgids are given. + + * Returns the number of ranges found, or < 0 on error. + * + * The caller must free the subordinate range list. + */ +int list_owner_ranges(const char *owner, enum subid_type id_type, struct subid_range **in_ranges) +{ + // TODO - need to handle owner being either uid or username + struct subid_range *ranges = NULL; + const struct subordinate_range *range; + struct commonio_db *db; + enum subid_status status; + int count = 0; + struct subid_nss_ops *h; + + *in_ranges = NULL; + + h = get_subid_nss_handle(); + if (h) { + status = h->list_owner_ranges(owner, id_type, in_ranges, &count); + if (status == SUBID_STATUS_SUCCESS) + return count; + return -1; + } + + switch (id_type) { + case ID_TYPE_UID: + if (!sub_uid_open(O_RDONLY)) { + return -1; + } + db = &subordinate_uid_db; + break; + case ID_TYPE_GID: + if (!sub_gid_open(O_RDONLY)) { + return -1; + } + db = &subordinate_gid_db; + break; + default: + return -1; + } + + commonio_rewind(db); + while ((range = commonio_next(db)) != NULL) { + if (0 == strcmp(range->owner, owner)) { + if (!append_range(&ranges, range, count++)) { + free(ranges); + ranges = NULL; + count = -1; + goto out; + } + } + } + +out: + if (id_type == ID_TYPE_UID) + sub_uid_close(); + else + sub_gid_close(); + + *in_ranges = ranges; + return count; +} + +static bool all_digits(const char *str) +{ + int i; + + for (i = 0; str[i] != '\0'; i++) + if (!isdigit(str[i])) + return false; + return true; +} + +static int append_uids(uid_t **uids, const char *owner, int n) +{ + uid_t owner_uid; + uid_t *ret; + int i; + + if (all_digits(owner)) { + i = sscanf(owner, "%d", &owner_uid); + if (i != 1) { + // should not happen + free(*uids); + *uids = NULL; + return -1; + } + } else { + struct passwd *pwd = getpwnam(owner); + if (NULL == pwd) { + /* Username not defined in /etc/passwd, or error occurred during lookup */ + free(*uids); + *uids = NULL; + return -1; + } + owner_uid = pwd->pw_uid; + } + + for (i = 0; i < n; i++) { + if (owner_uid == (*uids)[i]) + return n; + } + + ret = realloc(*uids, (n + 1) * sizeof(uid_t)); + if (!ret) { + free(*uids); + return -1; + } + ret[n] = owner_uid; + *uids = ret; + return n+1; +} + +int find_subid_owners(unsigned long id, enum subid_type id_type, uid_t **uids) +{ + const struct subordinate_range *range; + struct subid_nss_ops *h; + enum subid_status status; + struct commonio_db *db; + int n = 0; + + h = get_subid_nss_handle(); + if (h) { + status = h->find_subid_owners(id, id_type, uids, &n); + // Several ways we could handle the error cases here. + if (status != SUBID_STATUS_SUCCESS) + return -1; + return n; + } + + switch (id_type) { + case ID_TYPE_UID: + if (!sub_uid_open(O_RDONLY)) { + return -1; + } + db = &subordinate_uid_db; + break; + case ID_TYPE_GID: + if (!sub_gid_open(O_RDONLY)) { + return -1; + } + db = &subordinate_gid_db; + break; + default: + return -1; + } + + *uids = NULL; + + commonio_rewind(db); + while ((range = commonio_next(db)) != NULL) { + if (id >= range->start && id < range->start + range-> count) { + n = append_uids(uids, range->owner, n); + if (n < 0) + break; + } + } + + if (id_type == ID_TYPE_UID) + sub_uid_close(); + else + sub_gid_close(); + + return n; +} + +bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, bool reuse) +{ + struct commonio_db *db; + const struct subordinate_range *r; + bool ret; + + if (get_subid_nss_handle()) + return false; + + switch (id_type) { + case ID_TYPE_UID: + if (!sub_uid_lock()) { + printf("Failed loging subuids (errno %d)\n", errno); + return false; + } + if (!sub_uid_open(O_CREAT | O_RDWR)) { + printf("Failed opening subuids (errno %d)\n", errno); + sub_uid_unlock(); + return false; + } + db = &subordinate_uid_db; + break; + case ID_TYPE_GID: + if (!sub_gid_lock()) { + printf("Failed loging subgids (errno %d)\n", errno); + return false; + } + if (!sub_gid_open(O_CREAT | O_RDWR)) { + printf("Failed opening subgids (errno %d)\n", errno); + sub_gid_unlock(); + return false; + } + db = &subordinate_gid_db; + break; + default: + return false; + } + + commonio_rewind(db); + if (reuse) { + while ((r = commonio_next(db)) != NULL) { + // TODO account for username vs uid_t + if (0 != strcmp(r->owner, range->owner)) + continue; + if (r->count >= range->count) { + range->count = r->count; + range->start = r->start; + return true; + } + } + } + + range->start = find_free_range(db, range->start, ULONG_MAX, range->count); + + if (range->start == ULONG_MAX) { + ret = false; + goto out; + } + + ret = add_range(db, range->owner, range->start, range->count) == 1; + +out: + if (id_type == ID_TYPE_UID) { + sub_uid_close(); + sub_uid_unlock(); + } else { + sub_gid_close(); + sub_gid_unlock(); + } + + return ret; +} + +bool release_subid_range(struct subordinate_range *range, enum subid_type id_type) +{ + struct commonio_db *db; + bool ret; + + if (get_subid_nss_handle()) + return false; + + switch (id_type) { + case ID_TYPE_UID: + if (!sub_uid_lock()) { + printf("Failed loging subuids (errno %d)\n", errno); + return false; + } + if (!sub_uid_open(O_CREAT | O_RDWR)) { + printf("Failed opening subuids (errno %d)\n", errno); + sub_uid_unlock(); + return false; + } + db = &subordinate_uid_db; + break; + case ID_TYPE_GID: + if (!sub_gid_lock()) { + printf("Failed loging subgids (errno %d)\n", errno); + return false; + } + if (!sub_gid_open(O_CREAT | O_RDWR)) { + printf("Failed opening subgids (errno %d)\n", errno); + sub_gid_unlock(); + return false; + } + db = &subordinate_gid_db; + break; + default: + return false; + } + + ret = remove_range(db, range->owner, range->start, range->count) == 1; + + if (id_type == ID_TYPE_UID) { + sub_uid_close(); + sub_uid_unlock(); + } else { + sub_gid_close(); + sub_gid_unlock(); + } + + return ret; +} + #else /* !ENABLE_SUBIDS */ extern int errno; /* warning: ANSI C forbids an empty source file */ #endif /* !ENABLE_SUBIDS */ diff --git a/lib/subordinateio.h b/lib/subordinateio.h index a21d72b8..d32733de 100644 --- a/lib/subordinateio.h +++ b/lib/subordinateio.h @@ -11,10 +11,12 @@ #include +#include "../libsubid/subid.h" + extern int sub_uid_close(void); extern bool have_sub_uids(const char *owner, uid_t start, unsigned long count); extern bool sub_uid_file_present (void); -extern bool sub_uid_assigned(const char *owner); +extern bool local_sub_uid_assigned(const char *owner); extern int sub_uid_lock (void); extern int sub_uid_setdbname (const char *filename); extern /*@observer@*/const char *sub_uid_dbname (void); @@ -23,11 +25,16 @@ extern int sub_uid_unlock (void); extern int sub_uid_add (const char *owner, uid_t start, unsigned long count); extern int sub_uid_remove (const char *owner, uid_t start, unsigned long count); extern uid_t sub_uid_find_free_range(uid_t min, uid_t max, unsigned long count); +extern int list_owner_ranges(const char *owner, enum subid_type id_type, struct subid_range **ranges); +extern bool new_subid_range(struct subordinate_range *range, enum subid_type id_type, bool reuse); +extern bool release_subid_range(struct subordinate_range *range, enum subid_type id_type); +extern int find_subid_owners(unsigned long id, enum subid_type id_type, uid_t **uids); +extern void free_subordinate_ranges(struct subordinate_range **ranges, int count); extern int sub_gid_close(void); extern bool have_sub_gids(const char *owner, gid_t start, unsigned long count); extern bool sub_gid_file_present (void); -extern bool sub_gid_assigned(const char *owner); +extern bool local_sub_gid_assigned(const char *owner); extern int sub_gid_lock (void); extern int sub_gid_setdbname (const char *filename); extern /*@observer@*/const char *sub_gid_dbname (void); diff --git a/lib/tcbfuncs.c b/lib/tcbfuncs.c index 2f694bd7..80838c51 100644 --- a/lib/tcbfuncs.c +++ b/lib/tcbfuncs.c @@ -1,21 +1,6 @@ /* - * Copyright (c) 2001 Rafal Wojtczuk, Solar Designer - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-FileCopyrightText: 2001 Rafal Wojtczuk, Solar Designer + * SPDX-License-Identifier: 0BSD */ #define _GNU_SOURCE @@ -38,6 +23,8 @@ #include "shadowio.h" #include "tcbfuncs.h" +#include "shadowlog_internal.h" + #define SHADOWTCB_HASH_BY 1000 #define SHADOWTCB_LOCK_SUFFIX ".lock" @@ -72,8 +59,8 @@ shadowtcb_status shadowtcb_gain_priv (void) * to exit soon. */ #define OUT_OF_MEMORY do { \ - fprintf (stderr, _("%s: out of memory\n"), Prog); \ - (void) fflush (stderr); \ + fprintf (shadow_logfd, _("%s: out of memory\n"), shadow_progname); \ + (void) fflush (shadow_logfd); \ } while (false) /* Returns user's tcb directory path relative to TCB_DIR. */ @@ -116,9 +103,9 @@ static /*@null@*/ char *shadowtcb_path_rel_existing (const char *name) return NULL; } if (lstat (path, &st) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - Prog, path, strerror (errno)); + shadow_progname, path, strerror (errno)); free (path); return NULL; } @@ -132,26 +119,26 @@ static /*@null@*/ char *shadowtcb_path_rel_existing (const char *name) return rval; } if (!S_ISLNK (st.st_mode)) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: %s is neither a directory, nor a symlink.\n"), - Prog, path); + shadow_progname, path); free (path); return NULL; } ret = readlink (path, link, sizeof (link) - 1); if (-1 == ret) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot read symbolic link %s: %s\n"), - Prog, path, strerror (errno)); + shadow_progname, path, strerror (errno)); free (path); return NULL; } free (path); if ((size_t)ret >= sizeof(link) - 1) { link[sizeof(link) - 1] = '\0'; - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Suspiciously long symlink: %s\n"), - Prog, link); + shadow_progname, link); return NULL; } link[(size_t)ret] = '\0'; @@ -207,9 +194,9 @@ static shadowtcb_status mkdir_leading (const char *name, uid_t uid) } ptr = path; if (stat (TCB_DIR, &st) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - Prog, TCB_DIR, strerror (errno)); + shadow_progname, TCB_DIR, strerror (errno)); goto out_free_path; } while ((ind = strchr (ptr, '/'))) { @@ -219,21 +206,21 @@ static shadowtcb_status mkdir_leading (const char *name, uid_t uid) return SHADOWTCB_FAILURE; } if ((mkdir (dir, 0700) != 0) && (errno != EEXIST)) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot create directory %s: %s\n"), - Prog, dir, strerror (errno)); + shadow_progname, dir, strerror (errno)); goto out_free_dir; } if (chown (dir, 0, st.st_gid) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - Prog, dir, strerror (errno)); + shadow_progname, dir, strerror (errno)); goto out_free_dir; } if (chmod (dir, 0711) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - Prog, dir, strerror (errno)); + shadow_progname, dir, strerror (errno)); goto out_free_dir; } free (dir); @@ -261,9 +248,9 @@ static shadowtcb_status unlink_suffs (const char *user) return SHADOWTCB_FAILURE; } if ((unlink (tmp) != 0) && (errno != ENOENT)) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: unlink: %s: %s\n"), - Prog, tmp, strerror (errno)); + shadow_progname, tmp, strerror (errno)); free (tmp); return SHADOWTCB_FAILURE; } @@ -286,9 +273,9 @@ static shadowtcb_status rmdir_leading (char *path) } if (rmdir (dir) != 0) { if (errno != ENOTEMPTY) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot remove directory %s: %s\n"), - Prog, dir, strerror (errno)); + shadow_progname, dir, strerror (errno)); ret = SHADOWTCB_FAILURE; } free (dir); @@ -315,9 +302,9 @@ static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) goto out_free_nomem; } if (stat (olddir, &oldmode) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - Prog, olddir, strerror (errno)); + shadow_progname, olddir, strerror (errno)); goto out_free; } old_uid = oldmode.st_uid; @@ -342,18 +329,18 @@ static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) goto out_free; } if (rename (real_old_dir, real_new_dir) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot rename %s to %s: %s\n"), - Prog, real_old_dir, real_new_dir, strerror (errno)); + shadow_progname, real_old_dir, real_new_dir, strerror (errno)); goto out_free; } if (rmdir_leading (real_old_dir_rel) == SHADOWTCB_FAILURE) { goto out_free; } if ((unlink (olddir) != 0) && (errno != ENOENT)) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot remove %s: %s\n"), - Prog, olddir, strerror (errno)); + shadow_progname, olddir, strerror (errno)); goto out_free; } if (asprintf (&newdir, TCB_DIR "/%s", user_newname) == -1) { @@ -365,9 +352,9 @@ static shadowtcb_status move_dir (const char *user_newname, uid_t user_newid) } if ( (strcmp (real_new_dir, newdir) != 0) && (symlink (real_new_dir_rel, newdir) != 0)) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot create symbolic link %s: %s\n"), - Prog, real_new_dir_rel, strerror (errno)); + shadow_progname, real_new_dir_rel, strerror (errno)); goto out_free; } ret = SHADOWTCB_SUCCESS; @@ -464,53 +451,53 @@ shadowtcb_status shadowtcb_move (/*@NULL@*/const char *user_newname, uid_t user_ return SHADOWTCB_FAILURE; } if (stat (tcbdir, &dirmode) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - Prog, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerror (errno)); goto out_free; } if (chown (tcbdir, 0, 0) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change owners of %s: %s\n"), - Prog, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerror (errno)); goto out_free; } if (chmod (tcbdir, 0700) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - Prog, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerror (errno)); goto out_free; } if (lstat (shadow, &filemode) != 0) { if (errno != ENOENT) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot lstat %s: %s\n"), - Prog, shadow, strerror (errno)); + shadow_progname, shadow, strerror (errno)); goto out_free; } - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Warning, user %s has no tcb shadow file.\n"), - Prog, user_newname); + shadow_progname, user_newname); } else { if (!S_ISREG (filemode.st_mode) || filemode.st_nlink != 1) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Emergency: %s's tcb shadow is not a " "regular file with st_nlink=1.\n" "The account is left locked.\n"), - Prog, user_newname); + shadow_progname, user_newname); goto out_free; } if (chown (shadow, user_newid, filemode.st_gid) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - Prog, shadow, strerror (errno)); + shadow_progname, shadow, strerror (errno)); goto out_free; } if (chmod (shadow, filemode.st_mode & 07777) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - Prog, shadow, strerror (errno)); + shadow_progname, shadow, strerror (errno)); goto out_free; } } @@ -518,9 +505,15 @@ shadowtcb_status shadowtcb_move (/*@NULL@*/const char *user_newname, uid_t user_ goto out_free; } if (chown (tcbdir, user_newid, dirmode.st_gid) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - Prog, tcbdir, strerror (errno)); + shadow_progname, tcbdir, strerror (errno)); + goto out_free; + } + if (chmod (tcbdir, dirmode.st_mode & 07777) != 0) { + fprintf (shadow_logfd, + _("%s: Cannot change mode of %s: %s\n"), + shadow_progname, tcbdir, strerror (errno)); goto out_free; } ret = SHADOWTCB_SUCCESS; @@ -543,9 +536,9 @@ shadowtcb_status shadowtcb_create (const char *name, uid_t uid) return SHADOWTCB_SUCCESS; } if (stat (TCB_DIR, &tcbdir_stat) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot stat %s: %s\n"), - Prog, TCB_DIR, strerror (errno)); + shadow_progname, TCB_DIR, strerror (errno)); return SHADOWTCB_FAILURE; } shadowgid = tcbdir_stat.st_gid; @@ -563,41 +556,41 @@ shadowtcb_status shadowtcb_create (const char *name, uid_t uid) return SHADOWTCB_FAILURE; } if (mkdir (dir, 0700) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: mkdir: %s: %s\n"), - Prog, dir, strerror (errno)); + shadow_progname, dir, strerror (errno)); goto out_free; } fd = open (shadow, O_RDWR | O_CREAT | O_TRUNC, 0600); if (fd < 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot open %s: %s\n"), - Prog, shadow, strerror (errno)); + shadow_progname, shadow, strerror (errno)); goto out_free; } close (fd); if (chown (shadow, 0, authgid) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - Prog, shadow, strerror (errno)); + shadow_progname, shadow, strerror (errno)); goto out_free; } if (chmod (shadow, (mode_t) ((authgid == shadowgid) ? 0600 : 0640)) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - Prog, shadow, strerror (errno)); + shadow_progname, shadow, strerror (errno)); goto out_free; } if (chown (dir, 0, authgid) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change owner of %s: %s\n"), - Prog, dir, strerror (errno)); + shadow_progname, dir, strerror (errno)); goto out_free; } if (chmod (dir, (mode_t) ((authgid == shadowgid) ? 02700 : 02710)) != 0) { - fprintf (stderr, + fprintf (shadow_logfd, _("%s: Cannot change mode of %s: %s\n"), - Prog, dir, strerror (errno)); + shadow_progname, dir, strerror (errno)); goto out_free; } if ( (shadowtcb_set_user (name) == SHADOWTCB_FAILURE) diff --git a/lib/utent.c b/lib/utent.c index 45af2607..d5e6daea 100644 --- a/lib/utent.c +++ b/lib/utent.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1993 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1993 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/Makefile.am b/libmisc/Makefile.am index 7f43161f..3d319cd8 100644 --- a/libmisc/Makefile.am +++ b/libmisc/Makefile.am @@ -1,11 +1,11 @@ EXTRA_DIST = .indent.pro xgetXXbyYY.c -AM_CPPFLAGS = -I$(top_srcdir)/lib $(ECONF_CPPFLAGS) +AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS) -noinst_LIBRARIES = libmisc.a +noinst_LTLIBRARIES = libmisc.la -libmisc_a_SOURCES = \ +libmisc_la_SOURCES = \ addgrps.c \ age.c \ audit_help.c \ @@ -19,6 +19,7 @@ libmisc_a_SOURCES = \ cleanup_user.c \ console.c \ copydir.c \ + date_to_str.c \ entry.c \ env.c \ failure.c \ @@ -74,6 +75,6 @@ libmisc_a_SOURCES = \ yesno.c if WITH_BTRFS -libmisc_a_SOURCES += btrfs.c +libmisc_la_SOURCES += btrfs.c endif diff --git a/libmisc/Makefile.in b/libmisc/Makefile.in index b591961f..71c68707 100644 --- a/libmisc/Makefile.in +++ b/libmisc/Makefile.in @@ -91,8 +91,14 @@ host_triplet = @host@ @WITH_BTRFS_TRUE@am__append_1 = btrfs.c subdir = libmisc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -100,52 +106,42 @@ mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -LIBRARIES = $(noinst_LIBRARIES) -ARFLAGS = cru -AM_V_AR = $(am__v_AR_@AM_V@) -am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) -am__v_AR_0 = @echo " AR " $@; -am__v_AR_1 = -libmisc_a_AR = $(AR) $(ARFLAGS) -libmisc_a_LIBADD = -am__libmisc_a_SOURCES_DIST = addgrps.c age.c audit_help.c basename.c \ +LTLIBRARIES = $(noinst_LTLIBRARIES) +libmisc_la_LIBADD = +am__libmisc_la_SOURCES_DIST = addgrps.c age.c audit_help.c basename.c \ chkname.c chkname.h chowndir.c chowntty.c cleanup.c \ - cleanup_group.c cleanup_user.c console.c copydir.c entry.c \ - env.c failure.c failure.h find_new_gid.c find_new_uid.c \ - find_new_sub_gids.c find_new_sub_uids.c getdate.h getdate.y \ - getgr_nam_gid.c getrange.c gettime.c hushed.c idmapping.h \ - idmapping.c isexpired.c limits.c list.c log.c loginprompt.c \ - mail.c motd.c myname.c obscure.c pam_pass.c \ - pam_pass_non_interactive.c prefix_flag.c pwd2spwd.c pwdcheck.c \ - pwd_init.c remove_tree.c rlogin.c root_flag.c salt.c setugid.c \ - setupenv.c shell.c strtoday.c sub.c sulog.c ttytype.c tz.c \ - ulimit.c user_busy.c utmp.c valid.c xgetpwnam.c xgetpwuid.c \ - xgetgrnam.c xgetgrgid.c xgetspnam.c xmalloc.c yesno.c btrfs.c -@WITH_BTRFS_TRUE@am__objects_1 = btrfs.$(OBJEXT) -am_libmisc_a_OBJECTS = addgrps.$(OBJEXT) age.$(OBJEXT) \ - audit_help.$(OBJEXT) basename.$(OBJEXT) chkname.$(OBJEXT) \ - chowndir.$(OBJEXT) chowntty.$(OBJEXT) cleanup.$(OBJEXT) \ - cleanup_group.$(OBJEXT) cleanup_user.$(OBJEXT) \ - console.$(OBJEXT) copydir.$(OBJEXT) entry.$(OBJEXT) \ - env.$(OBJEXT) failure.$(OBJEXT) find_new_gid.$(OBJEXT) \ - find_new_uid.$(OBJEXT) find_new_sub_gids.$(OBJEXT) \ - find_new_sub_uids.$(OBJEXT) getdate.$(OBJEXT) \ - getgr_nam_gid.$(OBJEXT) getrange.$(OBJEXT) gettime.$(OBJEXT) \ - hushed.$(OBJEXT) idmapping.$(OBJEXT) isexpired.$(OBJEXT) \ - limits.$(OBJEXT) list.$(OBJEXT) log.$(OBJEXT) \ - loginprompt.$(OBJEXT) mail.$(OBJEXT) motd.$(OBJEXT) \ - myname.$(OBJEXT) obscure.$(OBJEXT) pam_pass.$(OBJEXT) \ - pam_pass_non_interactive.$(OBJEXT) prefix_flag.$(OBJEXT) \ - pwd2spwd.$(OBJEXT) pwdcheck.$(OBJEXT) pwd_init.$(OBJEXT) \ - remove_tree.$(OBJEXT) rlogin.$(OBJEXT) root_flag.$(OBJEXT) \ - salt.$(OBJEXT) setugid.$(OBJEXT) setupenv.$(OBJEXT) \ - shell.$(OBJEXT) strtoday.$(OBJEXT) sub.$(OBJEXT) \ - sulog.$(OBJEXT) ttytype.$(OBJEXT) tz.$(OBJEXT) \ - ulimit.$(OBJEXT) user_busy.$(OBJEXT) utmp.$(OBJEXT) \ - valid.$(OBJEXT) xgetpwnam.$(OBJEXT) xgetpwuid.$(OBJEXT) \ - xgetgrnam.$(OBJEXT) xgetgrgid.$(OBJEXT) xgetspnam.$(OBJEXT) \ - xmalloc.$(OBJEXT) yesno.$(OBJEXT) $(am__objects_1) -libmisc_a_OBJECTS = $(am_libmisc_a_OBJECTS) + cleanup_group.c cleanup_user.c console.c copydir.c \ + date_to_str.c entry.c env.c failure.c failure.h find_new_gid.c \ + find_new_uid.c find_new_sub_gids.c find_new_sub_uids.c \ + getdate.h getdate.y getgr_nam_gid.c getrange.c gettime.c \ + hushed.c idmapping.h idmapping.c isexpired.c limits.c list.c \ + log.c loginprompt.c mail.c motd.c myname.c obscure.c \ + pam_pass.c pam_pass_non_interactive.c prefix_flag.c pwd2spwd.c \ + pwdcheck.c pwd_init.c remove_tree.c rlogin.c root_flag.c \ + salt.c setugid.c setupenv.c shell.c strtoday.c sub.c sulog.c \ + ttytype.c tz.c ulimit.c user_busy.c utmp.c valid.c xgetpwnam.c \ + xgetpwuid.c xgetgrnam.c xgetgrgid.c xgetspnam.c xmalloc.c \ + yesno.c btrfs.c +@WITH_BTRFS_TRUE@am__objects_1 = btrfs.lo +am_libmisc_la_OBJECTS = addgrps.lo age.lo audit_help.lo basename.lo \ + chkname.lo chowndir.lo chowntty.lo cleanup.lo cleanup_group.lo \ + cleanup_user.lo console.lo copydir.lo date_to_str.lo entry.lo \ + env.lo failure.lo find_new_gid.lo find_new_uid.lo \ + find_new_sub_gids.lo find_new_sub_uids.lo getdate.lo \ + getgr_nam_gid.lo getrange.lo gettime.lo hushed.lo idmapping.lo \ + isexpired.lo limits.lo list.lo log.lo loginprompt.lo mail.lo \ + motd.lo myname.lo obscure.lo pam_pass.lo \ + pam_pass_non_interactive.lo prefix_flag.lo pwd2spwd.lo \ + pwdcheck.lo pwd_init.lo remove_tree.lo rlogin.lo root_flag.lo \ + salt.lo setugid.lo setupenv.lo shell.lo strtoday.lo sub.lo \ + sulog.lo ttytype.lo tz.lo ulimit.lo user_busy.lo utmp.lo \ + valid.lo xgetpwnam.lo xgetpwuid.lo xgetgrnam.lo xgetgrgid.lo \ + xgetspnam.lo xmalloc.lo yesno.lo $(am__objects_1) +libmisc_la_OBJECTS = $(am_libmisc_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false @@ -161,45 +157,43 @@ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/addgrps.Po ./$(DEPDIR)/age.Po \ - ./$(DEPDIR)/audit_help.Po ./$(DEPDIR)/basename.Po \ - ./$(DEPDIR)/btrfs.Po ./$(DEPDIR)/chkname.Po \ - ./$(DEPDIR)/chowndir.Po ./$(DEPDIR)/chowntty.Po \ - ./$(DEPDIR)/cleanup.Po ./$(DEPDIR)/cleanup_group.Po \ - ./$(DEPDIR)/cleanup_user.Po ./$(DEPDIR)/console.Po \ - ./$(DEPDIR)/copydir.Po ./$(DEPDIR)/entry.Po ./$(DEPDIR)/env.Po \ - ./$(DEPDIR)/failure.Po ./$(DEPDIR)/find_new_gid.Po \ - ./$(DEPDIR)/find_new_sub_gids.Po \ - ./$(DEPDIR)/find_new_sub_uids.Po ./$(DEPDIR)/find_new_uid.Po \ - ./$(DEPDIR)/getdate.Po ./$(DEPDIR)/getgr_nam_gid.Po \ - ./$(DEPDIR)/getrange.Po ./$(DEPDIR)/gettime.Po \ - ./$(DEPDIR)/hushed.Po ./$(DEPDIR)/idmapping.Po \ - ./$(DEPDIR)/isexpired.Po ./$(DEPDIR)/limits.Po \ - ./$(DEPDIR)/list.Po ./$(DEPDIR)/log.Po \ - ./$(DEPDIR)/loginprompt.Po ./$(DEPDIR)/mail.Po \ - ./$(DEPDIR)/motd.Po ./$(DEPDIR)/myname.Po \ - ./$(DEPDIR)/obscure.Po ./$(DEPDIR)/pam_pass.Po \ - ./$(DEPDIR)/pam_pass_non_interactive.Po \ - ./$(DEPDIR)/prefix_flag.Po ./$(DEPDIR)/pwd2spwd.Po \ - ./$(DEPDIR)/pwd_init.Po ./$(DEPDIR)/pwdcheck.Po \ - ./$(DEPDIR)/remove_tree.Po ./$(DEPDIR)/rlogin.Po \ - ./$(DEPDIR)/root_flag.Po ./$(DEPDIR)/salt.Po \ - ./$(DEPDIR)/setugid.Po ./$(DEPDIR)/setupenv.Po \ - ./$(DEPDIR)/shell.Po ./$(DEPDIR)/strtoday.Po \ - ./$(DEPDIR)/sub.Po ./$(DEPDIR)/sulog.Po ./$(DEPDIR)/ttytype.Po \ - ./$(DEPDIR)/tz.Po ./$(DEPDIR)/ulimit.Po \ - ./$(DEPDIR)/user_busy.Po ./$(DEPDIR)/utmp.Po \ - ./$(DEPDIR)/valid.Po ./$(DEPDIR)/xgetgrgid.Po \ - ./$(DEPDIR)/xgetgrnam.Po ./$(DEPDIR)/xgetpwnam.Po \ - ./$(DEPDIR)/xgetpwuid.Po ./$(DEPDIR)/xgetspnam.Po \ - ./$(DEPDIR)/xmalloc.Po ./$(DEPDIR)/yesno.Po +am__depfiles_remade = ./$(DEPDIR)/addgrps.Plo ./$(DEPDIR)/age.Plo \ + ./$(DEPDIR)/audit_help.Plo ./$(DEPDIR)/basename.Plo \ + ./$(DEPDIR)/btrfs.Plo ./$(DEPDIR)/chkname.Plo \ + ./$(DEPDIR)/chowndir.Plo ./$(DEPDIR)/chowntty.Plo \ + ./$(DEPDIR)/cleanup.Plo ./$(DEPDIR)/cleanup_group.Plo \ + ./$(DEPDIR)/cleanup_user.Plo ./$(DEPDIR)/console.Plo \ + ./$(DEPDIR)/copydir.Plo ./$(DEPDIR)/date_to_str.Plo \ + ./$(DEPDIR)/entry.Plo ./$(DEPDIR)/env.Plo \ + ./$(DEPDIR)/failure.Plo ./$(DEPDIR)/find_new_gid.Plo \ + ./$(DEPDIR)/find_new_sub_gids.Plo \ + ./$(DEPDIR)/find_new_sub_uids.Plo ./$(DEPDIR)/find_new_uid.Plo \ + ./$(DEPDIR)/getdate.Plo ./$(DEPDIR)/getgr_nam_gid.Plo \ + ./$(DEPDIR)/getrange.Plo ./$(DEPDIR)/gettime.Plo \ + ./$(DEPDIR)/hushed.Plo ./$(DEPDIR)/idmapping.Plo \ + ./$(DEPDIR)/isexpired.Plo ./$(DEPDIR)/limits.Plo \ + ./$(DEPDIR)/list.Plo ./$(DEPDIR)/log.Plo \ + ./$(DEPDIR)/loginprompt.Plo ./$(DEPDIR)/mail.Plo \ + ./$(DEPDIR)/motd.Plo ./$(DEPDIR)/myname.Plo \ + ./$(DEPDIR)/obscure.Plo ./$(DEPDIR)/pam_pass.Plo \ + ./$(DEPDIR)/pam_pass_non_interactive.Plo \ + ./$(DEPDIR)/prefix_flag.Plo ./$(DEPDIR)/pwd2spwd.Plo \ + ./$(DEPDIR)/pwd_init.Plo ./$(DEPDIR)/pwdcheck.Plo \ + ./$(DEPDIR)/remove_tree.Plo ./$(DEPDIR)/rlogin.Plo \ + ./$(DEPDIR)/root_flag.Plo ./$(DEPDIR)/salt.Plo \ + ./$(DEPDIR)/setugid.Plo ./$(DEPDIR)/setupenv.Plo \ + ./$(DEPDIR)/shell.Plo ./$(DEPDIR)/strtoday.Plo \ + ./$(DEPDIR)/sub.Plo ./$(DEPDIR)/sulog.Plo \ + ./$(DEPDIR)/ttytype.Plo ./$(DEPDIR)/tz.Plo \ + ./$(DEPDIR)/ulimit.Plo ./$(DEPDIR)/user_busy.Plo \ + ./$(DEPDIR)/utmp.Plo ./$(DEPDIR)/valid.Plo \ + ./$(DEPDIR)/xgetgrgid.Plo ./$(DEPDIR)/xgetgrnam.Plo \ + ./$(DEPDIR)/xgetpwnam.Plo ./$(DEPDIR)/xgetpwuid.Plo \ + ./$(DEPDIR)/xgetspnam.Plo ./$(DEPDIR)/xmalloc.Plo \ + ./$(DEPDIR)/yesno.Plo am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_lt = $(am__v_lt_@AM_V@) -am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -am__v_lt_0 = --silent -am__v_lt_1 = LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ @@ -227,8 +221,8 @@ am__v_YACC_ = $(am__v_YACC_@AM_DEFAULT_V@) am__v_YACC_0 = @echo " YACC " $@; am__v_YACC_1 = YLWRAP = $(top_srcdir)/ylwrap -SOURCES = $(libmisc_a_SOURCES) -DIST_SOURCES = $(am__libmisc_a_SOURCES_DIST) +SOURCES = $(libmisc_la_SOURCES) +DIST_SOURCES = $(am__libmisc_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -282,7 +276,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -311,9 +304,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -351,7 +349,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ @@ -412,21 +409,22 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = .indent.pro xgetXXbyYY.c -AM_CPPFLAGS = -I$(top_srcdir)/lib $(ECONF_CPPFLAGS) -noinst_LIBRARIES = libmisc.a -libmisc_a_SOURCES = addgrps.c age.c audit_help.c basename.c chkname.c \ +AM_CPPFLAGS = -I$(top_srcdir)/lib -I$(top_srcdir) $(ECONF_CPPFLAGS) +noinst_LTLIBRARIES = libmisc.la +libmisc_la_SOURCES = addgrps.c age.c audit_help.c basename.c chkname.c \ chkname.h chowndir.c chowntty.c cleanup.c cleanup_group.c \ - cleanup_user.c console.c copydir.c entry.c env.c failure.c \ - failure.h find_new_gid.c find_new_uid.c find_new_sub_gids.c \ - find_new_sub_uids.c getdate.h getdate.y getgr_nam_gid.c \ - getrange.c gettime.c hushed.c idmapping.h idmapping.c \ - isexpired.c limits.c list.c log.c loginprompt.c mail.c motd.c \ - myname.c obscure.c pam_pass.c pam_pass_non_interactive.c \ - prefix_flag.c pwd2spwd.c pwdcheck.c pwd_init.c remove_tree.c \ - rlogin.c root_flag.c salt.c setugid.c setupenv.c shell.c \ - strtoday.c sub.c sulog.c ttytype.c tz.c ulimit.c user_busy.c \ - utmp.c valid.c xgetpwnam.c xgetpwuid.c xgetgrnam.c xgetgrgid.c \ - xgetspnam.c xmalloc.c yesno.c $(am__append_1) + cleanup_user.c console.c copydir.c date_to_str.c entry.c env.c \ + failure.c failure.h find_new_gid.c find_new_uid.c \ + find_new_sub_gids.c find_new_sub_uids.c getdate.h getdate.y \ + getgr_nam_gid.c getrange.c gettime.c hushed.c idmapping.h \ + idmapping.c isexpired.c limits.c list.c log.c loginprompt.c \ + mail.c motd.c myname.c obscure.c pam_pass.c \ + pam_pass_non_interactive.c prefix_flag.c pwd2spwd.c pwdcheck.c \ + pwd_init.c remove_tree.c rlogin.c root_flag.c salt.c setugid.c \ + setupenv.c shell.c strtoday.c sub.c sulog.c ttytype.c tz.c \ + ulimit.c user_busy.c utmp.c valid.c xgetpwnam.c xgetpwuid.c \ + xgetgrnam.c xgetgrgid.c xgetspnam.c xmalloc.c yesno.c \ + $(am__append_1) all: all-am .SUFFIXES: @@ -461,13 +459,19 @@ $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): -clean-noinstLIBRARIES: - -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } -libmisc.a: $(libmisc_a_OBJECTS) $(libmisc_a_DEPENDENCIES) $(EXTRA_libmisc_a_DEPENDENCIES) - $(AM_V_at)-rm -f libmisc.a - $(AM_V_AR)$(libmisc_a_AR) libmisc.a $(libmisc_a_OBJECTS) $(libmisc_a_LIBADD) - $(AM_V_at)$(RANLIB) libmisc.a +libmisc.la: $(libmisc_la_OBJECTS) $(libmisc_la_DEPENDENCIES) $(EXTRA_libmisc_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libmisc_la_OBJECTS) $(libmisc_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) @@ -475,70 +479,71 @@ mostlyclean-compile: distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addgrps.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/age.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audit_help.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkname.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chowndir.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chowntty.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup_group.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup_user.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copydir.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/entry.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/failure.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_gid.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_sub_gids.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_sub_uids.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_uid.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgr_nam_gid.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrange.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hushed.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idmapping.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isexpired.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loginprompt.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/motd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/myname.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obscure.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pass.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pass_non_interactive.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefix_flag.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd2spwd.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd_init.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwdcheck.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remove_tree.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rlogin.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/root_flag.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/salt.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setugid.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setupenv.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoday.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sub.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sulog.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ttytype.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tz.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ulimit.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user_busy.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utmp.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valid.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetgrgid.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetgrnam.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetpwnam.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetpwuid.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetspnam.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@ # am--include-marker -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/addgrps.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/age.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/audit_help.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btrfs.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chkname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chowndir.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chowntty.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup_group.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cleanup_user.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/console.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copydir.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/date_to_str.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/entry.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/failure.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_gid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_sub_gids.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_sub_uids.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/find_new_uid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdate.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getgr_nam_gid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gettime.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hushed.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/idmapping.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isexpired.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/limits.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/list.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/loginprompt.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/motd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/myname.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/obscure.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pass.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pam_pass_non_interactive.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/prefix_flag.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd2spwd.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd_init.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwdcheck.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remove_tree.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rlogin.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/root_flag.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/salt.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setugid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setupenv.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shell.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtoday.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sub.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sulog.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ttytype.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tz.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ulimit.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/user_busy.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utmp.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/valid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetgrgid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetgrnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetpwnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetpwuid.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgetspnam.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yesno.Plo@am__quote@ # am--include-marker $(am__depfiles_remade): @$(MKDIR_P) $(@D) @@ -663,7 +668,7 @@ distdir-am: $(DISTFILES) done check-am: all-am check: check-am -all-am: Makefile $(LIBRARIES) +all-am: Makefile $(LTLIBRARIES) installdirs: install: install-am install-exec: install-exec-am @@ -698,74 +703,75 @@ maintainer-clean-generic: -rm -f getdate.c clean: clean-am -clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ mostlyclean-am distclean: distclean-am - -rm -f ./$(DEPDIR)/addgrps.Po - -rm -f ./$(DEPDIR)/age.Po - -rm -f ./$(DEPDIR)/audit_help.Po - -rm -f ./$(DEPDIR)/basename.Po - -rm -f ./$(DEPDIR)/btrfs.Po - -rm -f ./$(DEPDIR)/chkname.Po - -rm -f ./$(DEPDIR)/chowndir.Po - -rm -f ./$(DEPDIR)/chowntty.Po - -rm -f ./$(DEPDIR)/cleanup.Po - -rm -f ./$(DEPDIR)/cleanup_group.Po - -rm -f ./$(DEPDIR)/cleanup_user.Po - -rm -f ./$(DEPDIR)/console.Po - -rm -f ./$(DEPDIR)/copydir.Po - -rm -f ./$(DEPDIR)/entry.Po - -rm -f ./$(DEPDIR)/env.Po - -rm -f ./$(DEPDIR)/failure.Po - -rm -f ./$(DEPDIR)/find_new_gid.Po - -rm -f ./$(DEPDIR)/find_new_sub_gids.Po - -rm -f ./$(DEPDIR)/find_new_sub_uids.Po - -rm -f ./$(DEPDIR)/find_new_uid.Po - -rm -f ./$(DEPDIR)/getdate.Po - -rm -f ./$(DEPDIR)/getgr_nam_gid.Po - -rm -f ./$(DEPDIR)/getrange.Po - -rm -f ./$(DEPDIR)/gettime.Po - -rm -f ./$(DEPDIR)/hushed.Po - -rm -f ./$(DEPDIR)/idmapping.Po - -rm -f ./$(DEPDIR)/isexpired.Po - -rm -f ./$(DEPDIR)/limits.Po - -rm -f ./$(DEPDIR)/list.Po - -rm -f ./$(DEPDIR)/log.Po - -rm -f ./$(DEPDIR)/loginprompt.Po - -rm -f ./$(DEPDIR)/mail.Po - -rm -f ./$(DEPDIR)/motd.Po - -rm -f ./$(DEPDIR)/myname.Po - -rm -f ./$(DEPDIR)/obscure.Po - -rm -f ./$(DEPDIR)/pam_pass.Po - -rm -f ./$(DEPDIR)/pam_pass_non_interactive.Po - -rm -f ./$(DEPDIR)/prefix_flag.Po - -rm -f ./$(DEPDIR)/pwd2spwd.Po - -rm -f ./$(DEPDIR)/pwd_init.Po - -rm -f ./$(DEPDIR)/pwdcheck.Po - -rm -f ./$(DEPDIR)/remove_tree.Po - -rm -f ./$(DEPDIR)/rlogin.Po - -rm -f ./$(DEPDIR)/root_flag.Po - -rm -f ./$(DEPDIR)/salt.Po - -rm -f ./$(DEPDIR)/setugid.Po - -rm -f ./$(DEPDIR)/setupenv.Po - -rm -f ./$(DEPDIR)/shell.Po - -rm -f ./$(DEPDIR)/strtoday.Po - -rm -f ./$(DEPDIR)/sub.Po - -rm -f ./$(DEPDIR)/sulog.Po - -rm -f ./$(DEPDIR)/ttytype.Po - -rm -f ./$(DEPDIR)/tz.Po - -rm -f ./$(DEPDIR)/ulimit.Po - -rm -f ./$(DEPDIR)/user_busy.Po - -rm -f ./$(DEPDIR)/utmp.Po - -rm -f ./$(DEPDIR)/valid.Po - -rm -f ./$(DEPDIR)/xgetgrgid.Po - -rm -f ./$(DEPDIR)/xgetgrnam.Po - -rm -f ./$(DEPDIR)/xgetpwnam.Po - -rm -f ./$(DEPDIR)/xgetpwuid.Po - -rm -f ./$(DEPDIR)/xgetspnam.Po - -rm -f ./$(DEPDIR)/xmalloc.Po - -rm -f ./$(DEPDIR)/yesno.Po + -rm -f ./$(DEPDIR)/addgrps.Plo + -rm -f ./$(DEPDIR)/age.Plo + -rm -f ./$(DEPDIR)/audit_help.Plo + -rm -f ./$(DEPDIR)/basename.Plo + -rm -f ./$(DEPDIR)/btrfs.Plo + -rm -f ./$(DEPDIR)/chkname.Plo + -rm -f ./$(DEPDIR)/chowndir.Plo + -rm -f ./$(DEPDIR)/chowntty.Plo + -rm -f ./$(DEPDIR)/cleanup.Plo + -rm -f ./$(DEPDIR)/cleanup_group.Plo + -rm -f ./$(DEPDIR)/cleanup_user.Plo + -rm -f ./$(DEPDIR)/console.Plo + -rm -f ./$(DEPDIR)/copydir.Plo + -rm -f ./$(DEPDIR)/date_to_str.Plo + -rm -f ./$(DEPDIR)/entry.Plo + -rm -f ./$(DEPDIR)/env.Plo + -rm -f ./$(DEPDIR)/failure.Plo + -rm -f ./$(DEPDIR)/find_new_gid.Plo + -rm -f ./$(DEPDIR)/find_new_sub_gids.Plo + -rm -f ./$(DEPDIR)/find_new_sub_uids.Plo + -rm -f ./$(DEPDIR)/find_new_uid.Plo + -rm -f ./$(DEPDIR)/getdate.Plo + -rm -f ./$(DEPDIR)/getgr_nam_gid.Plo + -rm -f ./$(DEPDIR)/getrange.Plo + -rm -f ./$(DEPDIR)/gettime.Plo + -rm -f ./$(DEPDIR)/hushed.Plo + -rm -f ./$(DEPDIR)/idmapping.Plo + -rm -f ./$(DEPDIR)/isexpired.Plo + -rm -f ./$(DEPDIR)/limits.Plo + -rm -f ./$(DEPDIR)/list.Plo + -rm -f ./$(DEPDIR)/log.Plo + -rm -f ./$(DEPDIR)/loginprompt.Plo + -rm -f ./$(DEPDIR)/mail.Plo + -rm -f ./$(DEPDIR)/motd.Plo + -rm -f ./$(DEPDIR)/myname.Plo + -rm -f ./$(DEPDIR)/obscure.Plo + -rm -f ./$(DEPDIR)/pam_pass.Plo + -rm -f ./$(DEPDIR)/pam_pass_non_interactive.Plo + -rm -f ./$(DEPDIR)/prefix_flag.Plo + -rm -f ./$(DEPDIR)/pwd2spwd.Plo + -rm -f ./$(DEPDIR)/pwd_init.Plo + -rm -f ./$(DEPDIR)/pwdcheck.Plo + -rm -f ./$(DEPDIR)/remove_tree.Plo + -rm -f ./$(DEPDIR)/rlogin.Plo + -rm -f ./$(DEPDIR)/root_flag.Plo + -rm -f ./$(DEPDIR)/salt.Plo + -rm -f ./$(DEPDIR)/setugid.Plo + -rm -f ./$(DEPDIR)/setupenv.Plo + -rm -f ./$(DEPDIR)/shell.Plo + -rm -f ./$(DEPDIR)/strtoday.Plo + -rm -f ./$(DEPDIR)/sub.Plo + -rm -f ./$(DEPDIR)/sulog.Plo + -rm -f ./$(DEPDIR)/ttytype.Plo + -rm -f ./$(DEPDIR)/tz.Plo + -rm -f ./$(DEPDIR)/ulimit.Plo + -rm -f ./$(DEPDIR)/user_busy.Plo + -rm -f ./$(DEPDIR)/utmp.Plo + -rm -f ./$(DEPDIR)/valid.Plo + -rm -f ./$(DEPDIR)/xgetgrgid.Plo + -rm -f ./$(DEPDIR)/xgetgrnam.Plo + -rm -f ./$(DEPDIR)/xgetpwnam.Plo + -rm -f ./$(DEPDIR)/xgetpwuid.Plo + -rm -f ./$(DEPDIR)/xgetspnam.Plo + -rm -f ./$(DEPDIR)/xmalloc.Plo + -rm -f ./$(DEPDIR)/yesno.Plo -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags @@ -811,70 +817,71 @@ install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am - -rm -f ./$(DEPDIR)/addgrps.Po - -rm -f ./$(DEPDIR)/age.Po - -rm -f ./$(DEPDIR)/audit_help.Po - -rm -f ./$(DEPDIR)/basename.Po - -rm -f ./$(DEPDIR)/btrfs.Po - -rm -f ./$(DEPDIR)/chkname.Po - -rm -f ./$(DEPDIR)/chowndir.Po - -rm -f ./$(DEPDIR)/chowntty.Po - -rm -f ./$(DEPDIR)/cleanup.Po - -rm -f ./$(DEPDIR)/cleanup_group.Po - -rm -f ./$(DEPDIR)/cleanup_user.Po - -rm -f ./$(DEPDIR)/console.Po - -rm -f ./$(DEPDIR)/copydir.Po - -rm -f ./$(DEPDIR)/entry.Po - -rm -f ./$(DEPDIR)/env.Po - -rm -f ./$(DEPDIR)/failure.Po - -rm -f ./$(DEPDIR)/find_new_gid.Po - -rm -f ./$(DEPDIR)/find_new_sub_gids.Po - -rm -f ./$(DEPDIR)/find_new_sub_uids.Po - -rm -f ./$(DEPDIR)/find_new_uid.Po - -rm -f ./$(DEPDIR)/getdate.Po - -rm -f ./$(DEPDIR)/getgr_nam_gid.Po - -rm -f ./$(DEPDIR)/getrange.Po - -rm -f ./$(DEPDIR)/gettime.Po - -rm -f ./$(DEPDIR)/hushed.Po - -rm -f ./$(DEPDIR)/idmapping.Po - -rm -f ./$(DEPDIR)/isexpired.Po - -rm -f ./$(DEPDIR)/limits.Po - -rm -f ./$(DEPDIR)/list.Po - -rm -f ./$(DEPDIR)/log.Po - -rm -f ./$(DEPDIR)/loginprompt.Po - -rm -f ./$(DEPDIR)/mail.Po - -rm -f ./$(DEPDIR)/motd.Po - -rm -f ./$(DEPDIR)/myname.Po - -rm -f ./$(DEPDIR)/obscure.Po - -rm -f ./$(DEPDIR)/pam_pass.Po - -rm -f ./$(DEPDIR)/pam_pass_non_interactive.Po - -rm -f ./$(DEPDIR)/prefix_flag.Po - -rm -f ./$(DEPDIR)/pwd2spwd.Po - -rm -f ./$(DEPDIR)/pwd_init.Po - -rm -f ./$(DEPDIR)/pwdcheck.Po - -rm -f ./$(DEPDIR)/remove_tree.Po - -rm -f ./$(DEPDIR)/rlogin.Po - -rm -f ./$(DEPDIR)/root_flag.Po - -rm -f ./$(DEPDIR)/salt.Po - -rm -f ./$(DEPDIR)/setugid.Po - -rm -f ./$(DEPDIR)/setupenv.Po - -rm -f ./$(DEPDIR)/shell.Po - -rm -f ./$(DEPDIR)/strtoday.Po - -rm -f ./$(DEPDIR)/sub.Po - -rm -f ./$(DEPDIR)/sulog.Po - -rm -f ./$(DEPDIR)/ttytype.Po - -rm -f ./$(DEPDIR)/tz.Po - -rm -f ./$(DEPDIR)/ulimit.Po - -rm -f ./$(DEPDIR)/user_busy.Po - -rm -f ./$(DEPDIR)/utmp.Po - -rm -f ./$(DEPDIR)/valid.Po - -rm -f ./$(DEPDIR)/xgetgrgid.Po - -rm -f ./$(DEPDIR)/xgetgrnam.Po - -rm -f ./$(DEPDIR)/xgetpwnam.Po - -rm -f ./$(DEPDIR)/xgetpwuid.Po - -rm -f ./$(DEPDIR)/xgetspnam.Po - -rm -f ./$(DEPDIR)/xmalloc.Po - -rm -f ./$(DEPDIR)/yesno.Po + -rm -f ./$(DEPDIR)/addgrps.Plo + -rm -f ./$(DEPDIR)/age.Plo + -rm -f ./$(DEPDIR)/audit_help.Plo + -rm -f ./$(DEPDIR)/basename.Plo + -rm -f ./$(DEPDIR)/btrfs.Plo + -rm -f ./$(DEPDIR)/chkname.Plo + -rm -f ./$(DEPDIR)/chowndir.Plo + -rm -f ./$(DEPDIR)/chowntty.Plo + -rm -f ./$(DEPDIR)/cleanup.Plo + -rm -f ./$(DEPDIR)/cleanup_group.Plo + -rm -f ./$(DEPDIR)/cleanup_user.Plo + -rm -f ./$(DEPDIR)/console.Plo + -rm -f ./$(DEPDIR)/copydir.Plo + -rm -f ./$(DEPDIR)/date_to_str.Plo + -rm -f ./$(DEPDIR)/entry.Plo + -rm -f ./$(DEPDIR)/env.Plo + -rm -f ./$(DEPDIR)/failure.Plo + -rm -f ./$(DEPDIR)/find_new_gid.Plo + -rm -f ./$(DEPDIR)/find_new_sub_gids.Plo + -rm -f ./$(DEPDIR)/find_new_sub_uids.Plo + -rm -f ./$(DEPDIR)/find_new_uid.Plo + -rm -f ./$(DEPDIR)/getdate.Plo + -rm -f ./$(DEPDIR)/getgr_nam_gid.Plo + -rm -f ./$(DEPDIR)/getrange.Plo + -rm -f ./$(DEPDIR)/gettime.Plo + -rm -f ./$(DEPDIR)/hushed.Plo + -rm -f ./$(DEPDIR)/idmapping.Plo + -rm -f ./$(DEPDIR)/isexpired.Plo + -rm -f ./$(DEPDIR)/limits.Plo + -rm -f ./$(DEPDIR)/list.Plo + -rm -f ./$(DEPDIR)/log.Plo + -rm -f ./$(DEPDIR)/loginprompt.Plo + -rm -f ./$(DEPDIR)/mail.Plo + -rm -f ./$(DEPDIR)/motd.Plo + -rm -f ./$(DEPDIR)/myname.Plo + -rm -f ./$(DEPDIR)/obscure.Plo + -rm -f ./$(DEPDIR)/pam_pass.Plo + -rm -f ./$(DEPDIR)/pam_pass_non_interactive.Plo + -rm -f ./$(DEPDIR)/prefix_flag.Plo + -rm -f ./$(DEPDIR)/pwd2spwd.Plo + -rm -f ./$(DEPDIR)/pwd_init.Plo + -rm -f ./$(DEPDIR)/pwdcheck.Plo + -rm -f ./$(DEPDIR)/remove_tree.Plo + -rm -f ./$(DEPDIR)/rlogin.Plo + -rm -f ./$(DEPDIR)/root_flag.Plo + -rm -f ./$(DEPDIR)/salt.Plo + -rm -f ./$(DEPDIR)/setugid.Plo + -rm -f ./$(DEPDIR)/setupenv.Plo + -rm -f ./$(DEPDIR)/shell.Plo + -rm -f ./$(DEPDIR)/strtoday.Plo + -rm -f ./$(DEPDIR)/sub.Plo + -rm -f ./$(DEPDIR)/sulog.Plo + -rm -f ./$(DEPDIR)/ttytype.Plo + -rm -f ./$(DEPDIR)/tz.Plo + -rm -f ./$(DEPDIR)/ulimit.Plo + -rm -f ./$(DEPDIR)/user_busy.Plo + -rm -f ./$(DEPDIR)/utmp.Plo + -rm -f ./$(DEPDIR)/valid.Plo + -rm -f ./$(DEPDIR)/xgetgrgid.Plo + -rm -f ./$(DEPDIR)/xgetgrnam.Plo + -rm -f ./$(DEPDIR)/xgetpwnam.Plo + -rm -f ./$(DEPDIR)/xgetpwuid.Plo + -rm -f ./$(DEPDIR)/xgetspnam.Plo + -rm -f ./$(DEPDIR)/xmalloc.Plo + -rm -f ./$(DEPDIR)/yesno.Plo -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic @@ -896,7 +903,7 @@ uninstall-am: .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ - clean-generic clean-libtool clean-noinstLIBRARIES \ + clean-generic clean-libtool clean-noinstLTLIBRARIES \ cscopelist-am ctags ctags-am distclean distclean-compile \ distclean-generic distclean-libtool distclean-tags distdir dvi \ dvi-am html html-am info info-am install install-am \ diff --git a/libmisc/addgrps.c b/libmisc/addgrps.c index 40fad994..845d383b 100644 --- a/libmisc/addgrps.c +++ b/libmisc/addgrps.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -40,6 +17,7 @@ #include #include #include +#include "shadowlog.h" #ident "$Id$" @@ -57,6 +35,8 @@ int add_groups (const char *list) bool added; char *token; char buf[1024]; + int ret; + FILE *shadow_logfd = log_get_logfd(); if (strlen (list) >= sizeof (buf)) { errno = EINVAL; @@ -93,7 +73,7 @@ int add_groups (const char *list) grp = getgrnam (token); /* local, no need for xgetgrnam */ if (NULL == grp) { - fprintf (stderr, _("Warning: unknown group %s\n"), + fprintf (shadow_logfd, _("Warning: unknown group %s\n"), token); continue; } @@ -105,7 +85,7 @@ int add_groups (const char *list) } if (ngroups >= sysconf (_SC_NGROUPS_MAX)) { - fputs (_("Warning: too many groups\n"), stderr); + fputs (_("Warning: too many groups\n"), shadow_logfd); break; } tmp = (gid_t *) realloc (grouplist, (size_t)(ngroups + 1) * sizeof (GETGROUPS_T)); @@ -120,9 +100,12 @@ int add_groups (const char *list) } if (added) { - return setgroups ((size_t)ngroups, grouplist); + ret = setgroups ((size_t)ngroups, grouplist); + free (grouplist); + return ret; } + free (grouplist); return 0; } #else /* HAVE_SETGROUPS && !USE_PAM */ diff --git a/libmisc/age.c b/libmisc/age.c index 12e6036e..d10f71b9 100644 --- a/libmisc/age.c +++ b/libmisc/age.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/audit_help.c b/libmisc/audit_help.c index 1aadaa37..e6c2006b 100644 --- a/libmisc/audit_help.c +++ b/libmisc/audit_help.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 2005 , Red Hat, Inc. - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2005 , Red Hat, Inc. + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -45,6 +22,7 @@ #include #include #include "prototypes.h" +#include "shadowlog.h" int audit_fd; void audit_help_open (void) @@ -59,7 +37,7 @@ void audit_help_open (void) return; } (void) fputs (_("Cannot open audit interface - aborting.\n"), - stderr); + log_get_logfd()); exit (EXIT_FAILURE); } } @@ -68,7 +46,7 @@ void audit_help_open (void) * This function will log a message to the audit system using a predefined * message format. Parameter usage is as follows: * - * type - type of message: AUDIT_USER_CHAUTHTOK for changing any account + * type - type of message: AUDIT_USER_CHAUTHTOK for changing any account * attributes. * pgname - program's name * op - operation. "adding user", "changing finger info", "deleting group" diff --git a/libmisc/basename.c b/libmisc/basename.c index 1525169c..fe916532 100644 --- a/libmisc/basename.c +++ b/libmisc/basename.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/chkname.c b/libmisc/chkname.c index bdd1e72a..cb002a14 100644 --- a/libmisc/chkname.c +++ b/libmisc/chkname.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2005 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2005 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/chkname.h b/libmisc/chkname.h index 06e0dee8..07713473 100644 --- a/libmisc/chkname.h +++ b/libmisc/chkname.h @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1997 - 2000, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ diff --git a/libmisc/chowndir.c b/libmisc/chowndir.c index c4c504a5..3a62d545 100644 --- a/libmisc/chowndir.c +++ b/libmisc/chowndir.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1992 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2010 - , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1992 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2010 - , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/chowntty.c b/libmisc/chowntty.c index f6f5dbc5..8043d8ca 100644 --- a/libmisc/chowntty.c +++ b/libmisc/chowntty.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2001, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -43,6 +20,7 @@ #include "defines.h" #include #include "getdef.h" +#include "shadowlog.h" /* * chown_tty() sets the login tty to be owned by the new user ID @@ -62,6 +40,7 @@ void chown_tty (const struct passwd *info) grent = getgr_nam_gid (getdef_str ("TTYGROUP")); if (NULL != grent) { gid = grent->gr_gid; + gr_free (grent); } else { gid = info->pw_gid; } @@ -74,8 +53,9 @@ void chown_tty (const struct passwd *info) if ( (fchown (STDIN_FILENO, info->pw_uid, gid) != 0) || (fchmod (STDIN_FILENO, (mode_t)getdef_num ("TTYPERM", 0600)) != 0)) { int err = errno; + FILE *shadow_logfd = log_get_logfd(); - fprintf (stderr, + fprintf (shadow_logfd, _("Unable to change owner or mode of tty stdin: %s"), strerror (err)); SYSLOG ((LOG_WARN, diff --git a/libmisc/cleanup.c b/libmisc/cleanup.c index bd83a230..c16f1bcd 100644 --- a/libmisc/cleanup.c +++ b/libmisc/cleanup.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2008 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/cleanup_group.c b/libmisc/cleanup_group.c index d07adc71..df3ebfdb 100644 --- a/libmisc/cleanup_group.c +++ b/libmisc/cleanup_group.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -36,6 +13,7 @@ #include "groupio.h" #include "sgroupio.h" #include "prototypes.h" +#include "shadowlog.h" /* * cleanup_report_add_group - Report failure to add a group to the system @@ -48,7 +26,7 @@ void cleanup_report_add_group (void *group_name) SYSLOG ((LOG_ERR, "failed to add group %s", name)); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), "", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -66,7 +44,7 @@ void cleanup_report_del_group (void *group_name) SYSLOG ((LOG_ERR, "failed to remove group %s", name)); #ifdef WITH_AUDIT - audit_logger (AUDIT_DEL_GROUP, Prog, + audit_logger (AUDIT_DEL_GROUP, log_get_progname(), "", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -83,7 +61,7 @@ void cleanup_report_mod_group (void *cleanup_info) gr_dbname (), info->action)); #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_ACCT, Prog, + audit_logger (AUDIT_USER_ACCT, log_get_progname(), info->audit_msg, info->name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -101,7 +79,7 @@ void cleanup_report_mod_gshadow (void *cleanup_info) sgr_dbname (), info->action)); #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_ACCT, Prog, + audit_logger (AUDIT_USER_ACCT, log_get_progname(), info->audit_msg, info->name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -121,7 +99,7 @@ void cleanup_report_add_group_group (void *group_name) SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, gr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), "adding group to /etc/group", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -141,7 +119,7 @@ void cleanup_report_add_group_gshadow (void *group_name) SYSLOG ((LOG_ERR, "failed to add group %s to %s", name, sgr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), "adding group to /etc/gshadow", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -164,7 +142,7 @@ void cleanup_report_del_group_group (void *group_name) "failed to remove group %s from %s", name, gr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), "removing group from /etc/group", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -187,7 +165,7 @@ void cleanup_report_del_group_gshadow (void *group_name) "failed to remove group %s from %s", name, sgr_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_GROUP, Prog, + audit_logger (AUDIT_ADD_GROUP, log_get_progname(), "removing group from /etc/gshadow", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -203,9 +181,9 @@ void cleanup_report_del_group_gshadow (void *group_name) void cleanup_unlock_group (unused void *arg) { if (gr_unlock () == 0) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), - Prog, gr_dbname ()); + log_get_progname(), gr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); #ifdef WITH_AUDIT audit_logger_message ("unlocking group file", @@ -223,9 +201,9 @@ void cleanup_unlock_group (unused void *arg) void cleanup_unlock_gshadow (unused void *arg) { if (sgr_unlock () == 0) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), - Prog, sgr_dbname ()); + log_get_progname(), sgr_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); #ifdef WITH_AUDIT audit_logger_message ("unlocking gshadow file", diff --git a/libmisc/cleanup_user.c b/libmisc/cleanup_user.c index 6e497512..26675c65 100644 --- a/libmisc/cleanup_user.c +++ b/libmisc/cleanup_user.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -36,6 +13,7 @@ #include "pwio.h" #include "shadowio.h" #include "prototypes.h" +#include "shadowlog.h" /* * cleanup_report_add_user - Report failure to add an user to the system @@ -48,7 +26,7 @@ void cleanup_report_add_user (void *user_name) SYSLOG ((LOG_ERR, "failed to add user %s", name)); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, log_get_progname(), "", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -65,7 +43,7 @@ void cleanup_report_mod_passwd (void *cleanup_info) pw_dbname (), info->action)); #ifdef WITH_AUDIT - audit_logger (AUDIT_USER_ACCT, Prog, + audit_logger (AUDIT_USER_ACCT, log_get_progname(), info->audit_msg, info->name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -85,7 +63,7 @@ void cleanup_report_add_user_passwd (void *user_name) SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, pw_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, log_get_progname(), "adding user to /etc/passwd", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -105,7 +83,7 @@ void cleanup_report_add_user_shadow (void *user_name) SYSLOG ((LOG_ERR, "failed to add user %s to %s", name, spw_dbname ())); #ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, + audit_logger (AUDIT_ADD_USER, log_get_progname(), "adding user to /etc/shadow", name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); @@ -120,9 +98,9 @@ void cleanup_report_add_user_shadow (void *user_name) void cleanup_unlock_passwd (unused void *arg) { if (pw_unlock () == 0) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), - Prog, pw_dbname ()); + log_get_progname(), pw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", pw_dbname ())); #ifdef WITH_AUDIT audit_logger_message ("unlocking passwd file", @@ -139,9 +117,9 @@ void cleanup_unlock_passwd (unused void *arg) void cleanup_unlock_shadow (unused void *arg) { if (spw_unlock () == 0) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: failed to unlock %s\n"), - Prog, spw_dbname ()); + log_get_progname(), spw_dbname ()); SYSLOG ((LOG_ERR, "failed to unlock %s", spw_dbname ())); #ifdef WITH_AUDIT audit_logger_message ("unlocking shadow file", diff --git a/libmisc/console.c b/libmisc/console.c index cb74c2f9..4720e3e1 100644 --- a/libmisc/console.c +++ b/libmisc/console.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1991 , Julianne Frances Haugh - * Copyright (c) 1991 , Chip Rosenthal - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 , Julianne Frances Haugh + * SPDX-FileCopyrightText: 1991 , Chip Rosenthal + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/copydir.c b/libmisc/copydir.c index e6aac6ec..90ba2fcd 100644 --- a/libmisc/copydir.c +++ b/libmisc/copydir.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2001, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -55,6 +32,7 @@ #ifdef WITH_ATTR #include #endif /* WITH_ATTR */ +#include "shadowlog.h" static /*@null@*/const char *src_orig; @@ -116,8 +94,9 @@ static int fchown_if_needed (int fdst, const struct stat *statp, static void error_acl (struct error_context *ctx, const char *fmt, ...) { va_list ap; + FILE *shadow_logfd = log_get_logfd(); - /* ignore the case when destination does not support ACLs + /* ignore the case when destination does not support ACLs * or extended attributes */ if (ENOTSUP == errno) { errno = 0; @@ -125,11 +104,11 @@ static void error_acl (struct error_context *ctx, const char *fmt, ...) } va_start (ap, fmt); - (void) fprintf (stderr, _("%s: "), Prog); - if (vfprintf (stderr, fmt, ap) != 0) { - (void) fputs (_(": "), stderr); + (void) fprintf (shadow_logfd, _("%s: "), log_get_progname()); + if (vfprintf (shadow_logfd, fmt, ap) != 0) { + (void) fputs (_(": "), shadow_logfd); } - (void) fprintf (stderr, "%s\n", strerror (errno)); + (void) fprintf (shadow_logfd, "%s\n", strerror (errno)); va_end (ap); } @@ -248,9 +227,9 @@ int copy_tree (const char *src_root, const char *dst_root, } if (!S_ISDIR (sb.st_mode)) { - fprintf (stderr, + fprintf (log_get_logfd(), "%s: %s is not a directory", - Prog, src_root); + log_get_progname(), src_root); return -1; } @@ -484,7 +463,7 @@ static int copy_dir (const char *src, const char *dst, */ #ifdef WITH_SELINUX - if (set_selinux_file_context (dst) != 0) { + if (set_selinux_file_context (dst, S_IFDIR) != 0) { return -1; } #endif /* WITH_SELINUX */ @@ -605,7 +584,7 @@ static int copy_symlink (const char *src, const char *dst, } #ifdef WITH_SELINUX - if (set_selinux_file_context (dst) != 0) { + if (set_selinux_file_context (dst, S_IFLNK) != 0) { free (oldlink); return -1; } @@ -684,7 +663,7 @@ static int copy_special (const char *src, const char *dst, int err = 0; #ifdef WITH_SELINUX - if (set_selinux_file_context (dst) != 0) { + if (set_selinux_file_context (dst, statp->st_mode & S_IFMT) != 0) { return -1; } #endif /* WITH_SELINUX */ @@ -739,16 +718,17 @@ static int copy_file (const char *src, const char *dst, char buf[1024]; ssize_t cnt; - ifd = open (src, O_RDONLY); + ifd = open (src, O_RDONLY|O_NOFOLLOW); if (ifd < 0) { return -1; } #ifdef WITH_SELINUX - if (set_selinux_file_context (dst) != 0) { + if (set_selinux_file_context (dst, S_IFREG) != 0) { + (void) close (ifd); return -1; } #endif /* WITH_SELINUX */ - ofd = open (dst, O_WRONLY | O_CREAT | O_TRUNC, statp->st_mode & 07777); + ofd = open (dst, O_WRONLY | O_CREAT | O_TRUNC | O_NOFOLLOW, statp->st_mode & 07777); if ( (ofd < 0) || (fchown_if_needed (ofd, statp, old_uid, new_uid, old_gid, new_gid) != 0) @@ -771,12 +751,16 @@ static int copy_file (const char *src, const char *dst, && (errno != 0)) #endif /* WITH_ATTR */ ) { + if (ofd >= 0) { + (void) close (ofd); + } (void) close (ifd); return -1; } while ((cnt = read (ifd, buf, sizeof buf)) > 0) { if (write (ofd, buf, (size_t)cnt) != cnt) { + (void) close (ofd); (void) close (ifd); return -1; } @@ -786,6 +770,7 @@ static int copy_file (const char *src, const char *dst, #ifdef HAVE_FUTIMES if (futimes (ofd, mt) != 0) { + (void) close (ofd); return -1; } #endif /* HAVE_FUTIMES */ diff --git a/libmisc/date_to_str.c b/libmisc/date_to_str.c new file mode 100644 index 00000000..07e99f1a --- /dev/null +++ b/libmisc/date_to_str.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2021, Alejandro Colomar + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The name of the copyright holders or contributors may not be used to + * endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include + +#ident "$Id$" + +#include "prototypes.h" + +void date_to_str (size_t size, char buf[size], long date) +{ + time_t t; + + t = date; + if (date < 0) + (void) strncpy (buf, "never", size); + else + (void) strftime (buf, size, "%Y-%m-%d", gmtime (&t)); + buf[size - 1] = '\0'; +} diff --git a/libmisc/entry.c b/libmisc/entry.c index f195fdf6..87f57545 100644 --- a/libmisc/entry.c +++ b/libmisc/entry.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/env.c b/libmisc/env.c index 0b7c148f..4eba0a33 100644 --- a/libmisc/env.c +++ b/libmisc/env.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1992, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1992, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -40,6 +17,7 @@ #include #include "prototypes.h" #include "defines.h" +#include "shadowlog.h" /* * NEWENVP_STEP must be a power of two. This is the number * of (char *) pointers to allocate at a time, to avoid using @@ -171,7 +149,7 @@ void addenv (const char *string, /*@null@*/const char *value) } newenvp = __newenvp; } else { - (void) fputs (_("Environment overflow\n"), stderr); + (void) fputs (_("Environment overflow\n"), log_get_logfd()); newenvc--; free (newenvp[newenvc]); } diff --git a/libmisc/failure.c b/libmisc/failure.c index f6390a79..1aab299c 100644 --- a/libmisc/failure.c +++ b/libmisc/failure.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2002 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -98,7 +75,7 @@ void failure (uid_t uid, const char *tty, struct faillog *fl) fl->fail_cnt++; } - strncpy (fl->fail_line, tty, sizeof fl->fail_line); + strncpy (fl->fail_line, tty, sizeof (fl->fail_line) - 1); (void) time (&fl->fail_time); /* @@ -232,13 +209,8 @@ int failcheck (uid_t uid, struct faillog *fl, bool failed) void failprint (const struct faillog *fail) { struct tm *tp; - -#if HAVE_STRFTIME char lasttimeb[256]; char *lasttime = lasttimeb; -#else - char *lasttime; -#endif time_t NOW; if (0 == fail->fail_cnt) { @@ -248,31 +220,11 @@ void failprint (const struct faillog *fail) tp = localtime (&(fail->fail_time)); (void) time (&NOW); -#if HAVE_STRFTIME /* * Print all information we have. */ (void) strftime (lasttimeb, sizeof lasttimeb, "%c", tp); -#else - /* - * Do the same thing, but don't use strftime since it - * probably doesn't exist on this system - */ - lasttime = asctime (tp); - lasttime[24] = '\0'; - - if ((NOW - fail->fail_time) < YEAR) { - lasttime[19] = '\0'; - } - if ((NOW - fail->fail_time) < DAY) { - lasttime = lasttime + 11; - } - - if (' ' == *lasttime) { - lasttime++; - } -#endif /*@-formatconst@*/ (void) printf (ngettext ("%d failure since last login.\n" "Last was %s on %s.\n", diff --git a/libmisc/failure.h b/libmisc/failure.h index 38a4d72f..2ac30d7f 100644 --- a/libmisc/failure.h +++ b/libmisc/failure.h @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1997 - 2000, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* $Id$ */ diff --git a/libmisc/find_new_gid.c b/libmisc/find_new_gid.c index f93b4a37..1bddc12f 100644 --- a/libmisc/find_new_gid.c +++ b/libmisc/find_new_gid.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 2008 - 2011, Nicolas François - * Copyright (c) 2014, Red Hat, Inc. - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François + * SPDX-FileCopyrightText: 2014, Red Hat, Inc. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -38,6 +15,7 @@ #include "prototypes.h" #include "groupio.h" #include "getdef.h" +#include "shadowlog.h" /* * get_ranges - Get the minimum and maximum ID ranges for the search @@ -74,10 +52,10 @@ static int get_ranges (bool sys_group, gid_t *min_id, gid_t *max_id, /* Check that the ranges make sense */ if (*max_id < *min_id) { - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: Invalid configuration: SYS_GID_MIN (%lu), " "GID_MIN (%lu), SYS_GID_MAX (%lu)\n"), - Prog, (unsigned long) *min_id, + log_get_progname(), (unsigned long) *min_id, getdef_ulong ("GID_MIN", 1000UL), (unsigned long) *max_id); return EINVAL; @@ -97,10 +75,10 @@ static int get_ranges (bool sys_group, gid_t *min_id, gid_t *max_id, /* Check that the ranges make sense */ if (*max_id < *min_id) { - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: Invalid configuration: GID_MIN (%lu), " "GID_MAX (%lu)\n"), - Prog, (unsigned long) *min_id, + log_get_progname(), (unsigned long) *min_id, (unsigned long) *max_id); return EINVAL; } @@ -157,7 +135,7 @@ static int check_gid (const gid_t gid, * [GID_MIN:GID_MAX] range. * This ID should be higher than all the used GID, but if not possible, * the lowest unused ID in the range will be returned. - * + * * Return 0 on success, -1 if no unused GIDs are available. */ int find_new_gid (bool sys_group, @@ -213,10 +191,10 @@ int find_new_gid (bool sys_group, * more likely to want to stop and address the * issue. */ - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Encountered error attempting to use " "preferred GID: %s\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); return -1; } } @@ -243,9 +221,9 @@ int find_new_gid (bool sys_group, /* Create an array to hold all of the discovered GIDs */ used_gids = malloc (sizeof (bool) * (gid_max +1)); if (NULL == used_gids) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: failed to allocate memory: %s\n"), - Prog, strerror (errno)); + log_get_progname(), strerror (errno)); return -1; } memset (used_gids, false, sizeof (bool) * (gid_max + 1)); @@ -323,10 +301,10 @@ int find_new_gid (bool sys_group, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique system GID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG ((LOG_ERR, "Error checking available GIDs: %s", strerror (result))); @@ -366,10 +344,10 @@ int find_new_gid (bool sys_group, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique system GID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG ((LOG_ERR, "Error checking available GIDs: %s", strerror (result))); @@ -426,10 +404,10 @@ int find_new_gid (bool sys_group, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique GID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG ((LOG_ERR, "Error checking available GIDs: %s", strerror (result))); @@ -469,10 +447,10 @@ int find_new_gid (bool sys_group, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique GID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG ((LOG_ERR, "Error checking available GIDs: %s", strerror (result))); @@ -488,9 +466,9 @@ int find_new_gid (bool sys_group, } /* The code reached here and found no available IDs in the range */ - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique GID (no more available GIDs)\n"), - Prog); + log_get_progname()); SYSLOG ((LOG_WARN, "no more available GIDs on the system")); free (used_gids); return -1; diff --git a/libmisc/find_new_sub_gids.c b/libmisc/find_new_sub_gids.c index ae8a937c..bbd4570b 100644 --- a/libmisc/find_new_sub_gids.c +++ b/libmisc/find_new_sub_gids.c @@ -1,29 +1,7 @@ /* - * Copyright (c) 2012 Eric Biederman + * SPDX-FileCopyrightText: 2012 Eric Biederman * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -37,17 +15,17 @@ #include "prototypes.h" #include "subordinateio.h" #include "getdef.h" +#include "shadowlog.h" /* * find_new_sub_gids - Find a new unused range of GIDs. * * If successful, find_new_sub_gids provides a range of unused * user IDs in the [SUB_GID_MIN:SUB_GID_MAX] range. - * + * * Return 0 on success, -1 if no unused GIDs are available. */ -int find_new_sub_gids (const char *owner, - gid_t *range_start, unsigned long *range_count) +int find_new_sub_gids (gid_t *range_start, unsigned long *range_count) { unsigned long min, max; unsigned long count; @@ -61,18 +39,18 @@ int find_new_sub_gids (const char *owner, count = getdef_ulong ("SUB_GID_COUNT", 65536); if (min > max || count >= max || (min + count - 1) > max) { - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: Invalid configuration: SUB_GID_MIN (%lu)," " SUB_GID_MAX (%lu), SUB_GID_COUNT (%lu)\n"), - Prog, min, max, count); + log_get_progname(), min, max, count); return -1; } start = sub_gid_find_free_range(min, max, count); if (start == (gid_t)-1) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique subordinate GID range\n"), - Prog); + log_get_progname()); SYSLOG ((LOG_WARN, "no more available subordinate GIDs on the system")); return -1; } diff --git a/libmisc/find_new_sub_uids.c b/libmisc/find_new_sub_uids.c index 12cb2d2e..a86b311a 100644 --- a/libmisc/find_new_sub_uids.c +++ b/libmisc/find_new_sub_uids.c @@ -1,29 +1,7 @@ /* - * Copyright (c) 2012 Eric Biederman + * SPDX-FileCopyrightText: 2012 Eric Biederman * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -37,17 +15,17 @@ #include "prototypes.h" #include "subordinateio.h" #include "getdef.h" +#include "shadowlog.h" /* * find_new_sub_uids - Find a new unused range of UIDs. * * If successful, find_new_sub_uids provides a range of unused * user IDs in the [SUB_UID_MIN:SUB_UID_MAX] range. - * + * * Return 0 on success, -1 if no unused UIDs are available. */ -int find_new_sub_uids (const char *owner, - uid_t *range_start, unsigned long *range_count) +int find_new_sub_uids (uid_t *range_start, unsigned long *range_count) { unsigned long min, max; unsigned long count; @@ -61,18 +39,18 @@ int find_new_sub_uids (const char *owner, count = getdef_ulong ("SUB_UID_COUNT", 65536); if (min > max || count >= max || (min + count - 1) > max) { - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: Invalid configuration: SUB_UID_MIN (%lu)," " SUB_UID_MAX (%lu), SUB_UID_COUNT (%lu)\n"), - Prog, min, max, count); + log_get_progname(), min, max, count); return -1; } start = sub_uid_find_free_range(min, max, count); if (start == (uid_t)-1) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique subordinate UID range\n"), - Prog); + log_get_progname()); SYSLOG ((LOG_WARN, "no more available subordinate UIDs on the system")); return -1; } diff --git a/libmisc/find_new_uid.c b/libmisc/find_new_uid.c index 743cf0a5..41b6c1d1 100644 --- a/libmisc/find_new_uid.c +++ b/libmisc/find_new_uid.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 2008 - 2011, Nicolas François - * Copyright (c) 2014, Red Hat, Inc. - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François + * SPDX-FileCopyrightText: 2014, Red Hat, Inc. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -38,6 +15,7 @@ #include "prototypes.h" #include "pwio.h" #include "getdef.h" +#include "shadowlog.h" /* * get_ranges - Get the minimum and maximum ID ranges for the search @@ -74,10 +52,10 @@ static int get_ranges (bool sys_user, uid_t *min_id, uid_t *max_id, /* Check that the ranges make sense */ if (*max_id < *min_id) { - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: Invalid configuration: SYS_UID_MIN (%lu), " "UID_MIN (%lu), SYS_UID_MAX (%lu)\n"), - Prog, (unsigned long) *min_id, + log_get_progname(), (unsigned long) *min_id, getdef_ulong ("UID_MIN", 1000UL), (unsigned long) *max_id); return EINVAL; @@ -97,10 +75,10 @@ static int get_ranges (bool sys_user, uid_t *min_id, uid_t *max_id, /* Check that the ranges make sense */ if (*max_id < *min_id) { - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: Invalid configuration: UID_MIN (%lu), " "UID_MAX (%lu)\n"), - Prog, (unsigned long) *min_id, + log_get_progname(), (unsigned long) *min_id, (unsigned long) *max_id); return EINVAL; } @@ -157,7 +135,7 @@ static int check_uid(const uid_t uid, * [UID_MIN:UID_MAX] range. * This ID should be higher than all the used UID, but if not possible, * the lowest unused ID in the range will be returned. - * + * * Return 0 on success, -1 if no unused UIDs are available. */ int find_new_uid(bool sys_user, @@ -213,10 +191,10 @@ int find_new_uid(bool sys_user, * more likely to want to stop and address the * issue. */ - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Encountered error attempting to use " "preferred UID: %s\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); return -1; } } @@ -243,9 +221,9 @@ int find_new_uid(bool sys_user, /* Create an array to hold all of the discovered UIDs */ used_uids = malloc (sizeof (bool) * (uid_max +1)); if (NULL == used_uids) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: failed to allocate memory: %s\n"), - Prog, strerror (errno)); + log_get_progname(), strerror (errno)); return -1; } memset (used_uids, false, sizeof (bool) * (uid_max + 1)); @@ -323,10 +301,10 @@ int find_new_uid(bool sys_user, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique system UID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG ((LOG_ERR, "Error checking available UIDs: %s", strerror (result))); @@ -366,10 +344,10 @@ int find_new_uid(bool sys_user, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique system UID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG((LOG_ERR, "Error checking available UIDs: %s", strerror (result))); @@ -426,10 +404,10 @@ int find_new_uid(bool sys_user, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique UID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG ((LOG_ERR, "Error checking available UIDs: %s", strerror (result))); @@ -469,10 +447,10 @@ int find_new_uid(bool sys_user, * */ if (!nospam) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique UID (%s). " "Suppressing additional messages.\n"), - Prog, strerror (result)); + log_get_progname(), strerror (result)); SYSLOG ((LOG_ERR, "Error checking available UIDs: %s", strerror (result))); @@ -488,9 +466,9 @@ int find_new_uid(bool sys_user, } /* The code reached here and found no available IDs in the range */ - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: Can't get unique UID (no more available UIDs)\n"), - Prog); + log_get_progname()); SYSLOG ((LOG_WARN, "no more available UIDs on the system")); free (used_uids); return -1; diff --git a/libmisc/getdate.c b/libmisc/getdate.c index b36188f6..af6424e7 100644 --- a/libmisc/getdate.c +++ b/libmisc/getdate.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -130,7 +130,7 @@ /* Some old versions of bison generate parsers that use bcopy. That loses on systems that don't provide the function, so we have to redefine it here. */ -#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy) +#if !defined (HAVE_BCOPY) && !defined (bcopy) # define bcopy(from, to, len) memcpy ((to), (from), (len)) #endif @@ -239,6 +239,15 @@ static int yyRelYear; #line 241 "getdate.c" +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -318,7 +327,7 @@ union YYSTYPE int Number; enum _MERIDIAN Meridian; -#line 322 "getdate.c" +#line 331 "getdate.c" }; typedef union YYSTYPE YYSTYPE; @@ -339,36 +348,83 @@ int yyparse (void); # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #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 \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -376,7 +432,19 @@ typedef short yytype_int16; # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + +/* Stored state numbers (used for stacks). */ +typedef yytype_int8 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -390,22 +458,20 @@ typedef short yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -417,11 +483,11 @@ typedef short yytype_int16; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -434,6 +500,18 @@ typedef short yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + #define YY_ASSERT(E) ((void) (0 && (E))) @@ -512,17 +590,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -535,11 +613,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -551,12 +629,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -582,14 +660,15 @@ union yyalloc #define YYUNDEFTOK 2 #define YYMAXUTOK 273 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint8 yytranslate[] = +static const yytype_int8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -623,7 +702,7 @@ static const yytype_uint8 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { 0, 188, 188, 189, 192, 195, 198, 201, 204, 207, 210, 216, 222, 231, 237, 249, 252, 256, 261, 265, @@ -650,7 +729,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 58, @@ -658,14 +737,14 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -20 +#define YYPACT_NINF (-20) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-20))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -684,7 +763,7 @@ static const yytype_int8 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint8 yydefact[] = +static const yytype_int8 yydefact[] = { 2, 0, 1, 18, 39, 16, 42, 45, 0, 36, 48, 0, 49, 33, 15, 3, 4, 5, 7, 6, @@ -712,7 +791,7 @@ static const yytype_int8 yydefgoto[] = /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint8 yytable[] = +static const yytype_int8 yytable[] = { 2, 23, 52, 24, 3, 4, 5, 59, 6, 46, 47, 7, 8, 9, 10, 11, 12, 13, 14, 31, @@ -722,7 +801,7 @@ static const yytype_uint8 yytable[] = 60 }; -static const yytype_uint8 yycheck[] = +static const yytype_int8 yycheck[] = { 0, 20, 10, 16, 4, 5, 6, 15, 8, 15, 16, 11, 12, 13, 14, 15, 16, 17, 18, 4, @@ -734,7 +813,7 @@ static const yytype_uint8 yycheck[] = /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_int8 yystos[] = { 0, 23, 0, 4, 5, 6, 8, 11, 12, 13, 14, 15, 16, 17, 18, 24, 25, 26, 27, 28, @@ -746,7 +825,7 @@ static const yytype_uint8 yystos[] = }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_int8 yyr1[] = { 0, 22, 23, 23, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 26, 26, 26, 27, 27, @@ -757,7 +836,7 @@ static const yytype_uint8 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 1, 1, 1, 1, 1, 1, 2, 4, 4, 6, 6, 1, 1, 2, 1, 2, @@ -850,7 +929,9 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -874,7 +955,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -897,19 +978,19 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], + yystos[+yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -954,13 +1035,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -996,12 +1077,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) @@ -1032,10 +1113,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -1048,19 +1129,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + yy_state_t *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ + /* Actual size of YYARG. */ int yycount = 0; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -1087,7 +1168,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[*yyssp]; + int yyn = yypact[+*yyssp]; + YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -1112,7 +1195,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -1139,7 +1223,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + /* Don't count the "%s"s in the final size, but reserve room for + the terminator. */ + YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -1169,8 +1255,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } else { - yyp++; - yyformat++; + ++yyp; + ++yyformat; } } return 0; @@ -1213,7 +1299,7 @@ int yynerrs; int yyparse (void) { - int yystate; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -1225,16 +1311,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYSIZE_T yystacksize; + YYPTRDIFF_T yystacksize; int yyn; int yyresult; @@ -1248,7 +1334,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -1280,12 +1366,14 @@ yynewstate: /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -1293,23 +1381,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -1323,9 +1411,10 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -1339,8 +1428,10 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -1406,14 +1497,13 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -1450,69 +1540,69 @@ yyreduce: { case 4: #line 192 "getdate.y" - { + { yyHaveTime++; } -#line 1457 "getdate.c" +#line 1547 "getdate.c" break; case 5: #line 195 "getdate.y" - { + { yyHaveZone++; } -#line 1465 "getdate.c" +#line 1555 "getdate.c" break; case 6: #line 198 "getdate.y" - { + { yyHaveDate++; } -#line 1473 "getdate.c" +#line 1563 "getdate.c" break; case 7: #line 201 "getdate.y" - { + { yyHaveDay++; } -#line 1481 "getdate.c" +#line 1571 "getdate.c" break; case 8: #line 204 "getdate.y" - { + { yyHaveRel++; } -#line 1489 "getdate.c" +#line 1579 "getdate.c" break; case 10: #line 210 "getdate.y" - { + { yyHour = (yyvsp[-1].Number); yyMinutes = 0; yySeconds = 0; yyMeridian = (yyvsp[0].Meridian); } -#line 1500 "getdate.c" +#line 1590 "getdate.c" break; case 11: #line 216 "getdate.y" - { + { yyHour = (yyvsp[-3].Number); yyMinutes = (yyvsp[-1].Number); yySeconds = 0; yyMeridian = (yyvsp[0].Meridian); } -#line 1511 "getdate.c" +#line 1601 "getdate.c" break; case 12: #line 222 "getdate.y" - { + { yyHour = (yyvsp[-3].Number); yyMinutes = (yyvsp[-1].Number); yyMeridian = MER24; @@ -1521,23 +1611,23 @@ yyreduce: ? -(yyvsp[0].Number) % 100 + (-(yyvsp[0].Number) / 100) * 60 : - ((yyvsp[0].Number) % 100 + ((yyvsp[0].Number) / 100) * 60)); } -#line 1525 "getdate.c" +#line 1615 "getdate.c" break; case 13: #line 231 "getdate.y" - { + { yyHour = (yyvsp[-5].Number); yyMinutes = (yyvsp[-3].Number); yySeconds = (yyvsp[-1].Number); yyMeridian = (yyvsp[0].Meridian); } -#line 1536 "getdate.c" +#line 1626 "getdate.c" break; case 14: #line 237 "getdate.y" - { + { yyHour = (yyvsp[-5].Number); yyMinutes = (yyvsp[-3].Number); yySeconds = (yyvsp[-1].Number); @@ -1547,72 +1637,72 @@ yyreduce: ? -(yyvsp[0].Number) % 100 + (-(yyvsp[0].Number) / 100) * 60 : - ((yyvsp[0].Number) % 100 + ((yyvsp[0].Number) / 100) * 60)); } -#line 1551 "getdate.c" +#line 1641 "getdate.c" break; case 15: #line 249 "getdate.y" - { + { yyTimezone = (yyvsp[0].Number); } -#line 1559 "getdate.c" +#line 1649 "getdate.c" break; case 16: #line 252 "getdate.y" - { + { yyTimezone = (yyvsp[0].Number) - 60; } -#line 1567 "getdate.c" +#line 1657 "getdate.c" break; case 17: #line 256 "getdate.y" - { + { yyTimezone = (yyvsp[-1].Number) - 60; } -#line 1575 "getdate.c" +#line 1665 "getdate.c" break; case 18: #line 261 "getdate.y" - { + { yyDayOrdinal = 1; yyDayNumber = (yyvsp[0].Number); } -#line 1584 "getdate.c" +#line 1674 "getdate.c" break; case 19: #line 265 "getdate.y" - { + { yyDayOrdinal = 1; yyDayNumber = (yyvsp[-1].Number); } -#line 1593 "getdate.c" +#line 1683 "getdate.c" break; case 20: #line 269 "getdate.y" - { + { yyDayOrdinal = (yyvsp[-1].Number); yyDayNumber = (yyvsp[0].Number); } -#line 1602 "getdate.c" +#line 1692 "getdate.c" break; case 21: #line 275 "getdate.y" - { + { yyMonth = (yyvsp[-2].Number); yyDay = (yyvsp[0].Number); } -#line 1611 "getdate.c" +#line 1701 "getdate.c" break; case 22: #line 279 "getdate.y" - { + { /* Interpret as YYYY/MM/DD if $1 >= 1000, otherwise as MM/DD/YY. The goal in recognizing YYYY/MM/DD is solely to support legacy machine-generated dates like those in an RCS log listing. If @@ -1630,72 +1720,72 @@ yyreduce: yyYear = (yyvsp[0].Number); } } -#line 1634 "getdate.c" +#line 1724 "getdate.c" break; case 23: #line 297 "getdate.y" - { + { /* ISO 8601 format. yyyy-mm-dd. */ yyYear = (yyvsp[-2].Number); yyMonth = -(yyvsp[-1].Number); yyDay = -(yyvsp[0].Number); } -#line 1645 "getdate.c" +#line 1735 "getdate.c" break; case 24: #line 303 "getdate.y" - { + { /* e.g. 17-JUN-1992. */ yyDay = (yyvsp[-2].Number); yyMonth = (yyvsp[-1].Number); yyYear = -(yyvsp[0].Number); } -#line 1656 "getdate.c" +#line 1746 "getdate.c" break; case 25: #line 309 "getdate.y" - { + { yyMonth = (yyvsp[-1].Number); yyDay = (yyvsp[0].Number); } -#line 1665 "getdate.c" +#line 1755 "getdate.c" break; case 26: #line 313 "getdate.y" - { + { yyMonth = (yyvsp[-3].Number); yyDay = (yyvsp[-2].Number); yyYear = (yyvsp[0].Number); } -#line 1675 "getdate.c" +#line 1765 "getdate.c" break; case 27: #line 318 "getdate.y" - { + { yyMonth = (yyvsp[0].Number); yyDay = (yyvsp[-1].Number); } -#line 1684 "getdate.c" +#line 1774 "getdate.c" break; case 28: #line 322 "getdate.y" - { + { yyMonth = (yyvsp[-1].Number); yyDay = (yyvsp[-2].Number); yyYear = (yyvsp[0].Number); } -#line 1694 "getdate.c" +#line 1784 "getdate.c" break; case 29: #line 329 "getdate.y" - { + { yyRelSeconds = -yyRelSeconds; yyRelMinutes = -yyRelMinutes; yyRelHour = -yyRelHour; @@ -1703,156 +1793,156 @@ yyreduce: yyRelMonth = -yyRelMonth; yyRelYear = -yyRelYear; } -#line 1707 "getdate.c" +#line 1797 "getdate.c" break; case 31: #line 340 "getdate.y" - { + { yyRelYear += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1715 "getdate.c" +#line 1805 "getdate.c" break; case 32: #line 343 "getdate.y" - { + { yyRelYear += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1723 "getdate.c" +#line 1813 "getdate.c" break; case 33: #line 346 "getdate.y" - { + { yyRelYear++; } -#line 1731 "getdate.c" +#line 1821 "getdate.c" break; case 34: #line 349 "getdate.y" - { + { yyRelMonth += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1739 "getdate.c" +#line 1829 "getdate.c" break; case 35: #line 352 "getdate.y" - { + { yyRelMonth += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1747 "getdate.c" +#line 1837 "getdate.c" break; case 36: #line 355 "getdate.y" - { + { yyRelMonth++; } -#line 1755 "getdate.c" +#line 1845 "getdate.c" break; case 37: #line 358 "getdate.y" - { + { yyRelDay += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1763 "getdate.c" +#line 1853 "getdate.c" break; case 38: #line 361 "getdate.y" - { + { yyRelDay += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1771 "getdate.c" +#line 1861 "getdate.c" break; case 39: #line 364 "getdate.y" - { + { yyRelDay++; } -#line 1779 "getdate.c" +#line 1869 "getdate.c" break; case 40: #line 367 "getdate.y" - { + { yyRelHour += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1787 "getdate.c" +#line 1877 "getdate.c" break; case 41: #line 370 "getdate.y" - { + { yyRelHour += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1795 "getdate.c" +#line 1885 "getdate.c" break; case 42: #line 373 "getdate.y" - { + { yyRelHour++; } -#line 1803 "getdate.c" +#line 1893 "getdate.c" break; case 43: #line 376 "getdate.y" - { + { yyRelMinutes += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1811 "getdate.c" +#line 1901 "getdate.c" break; case 44: #line 379 "getdate.y" - { + { yyRelMinutes += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1819 "getdate.c" +#line 1909 "getdate.c" break; case 45: #line 382 "getdate.y" - { + { yyRelMinutes++; } -#line 1827 "getdate.c" +#line 1917 "getdate.c" break; case 46: #line 385 "getdate.y" - { + { yyRelSeconds += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1835 "getdate.c" +#line 1925 "getdate.c" break; case 47: #line 388 "getdate.y" - { + { yyRelSeconds += (yyvsp[-1].Number) * (yyvsp[0].Number); } -#line 1843 "getdate.c" +#line 1933 "getdate.c" break; case 48: #line 391 "getdate.y" - { + { yyRelSeconds++; } -#line 1851 "getdate.c" +#line 1941 "getdate.c" break; case 49: #line 397 "getdate.y" - { + { if ((yyHaveTime != 0) && (yyHaveDate != 0) && (yyHaveRel == 0)) yyYear = (yyvsp[0].Number); else @@ -1882,27 +1972,27 @@ yyreduce: } } } -#line 1886 "getdate.c" +#line 1976 "getdate.c" break; case 50: #line 430 "getdate.y" - { + { (yyval.Meridian) = MER24; } -#line 1894 "getdate.c" +#line 1984 "getdate.c" break; case 51: #line 434 "getdate.y" - { + { (yyval.Meridian) = (yyvsp[0].Meridian); } -#line 1902 "getdate.c" +#line 1992 "getdate.c" break; -#line 1906 "getdate.c" +#line 1996 "getdate.c" default: break; } @@ -1966,7 +2056,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (!yymsg) { yymsg = yymsgbuf; @@ -2121,7 +2211,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[+*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow diff --git a/libmisc/getdate.h b/libmisc/getdate.h index d1bb176d..eae56f64 100644 --- a/libmisc/getdate.h +++ b/libmisc/getdate.h @@ -1,32 +1,9 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1997 - 2000, Marek Michałkiewicz - * Copyright (c) 2005 , Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #ifndef _GETDATE_H_ diff --git a/libmisc/getdate.y b/libmisc/getdate.y index 5a8bde2e..7afa995b 100644 --- a/libmisc/getdate.y +++ b/libmisc/getdate.y @@ -61,7 +61,7 @@ /* Some old versions of bison generate parsers that use bcopy. That loses on systems that don't provide the function, so we have to redefine it here. */ -#if !defined (HAVE_BCOPY) && defined (HAVE_MEMCPY) && !defined (bcopy) +#if !defined (HAVE_BCOPY) && !defined (bcopy) # define bcopy(from, to, len) memcpy ((to), (from), (len)) #endif diff --git a/libmisc/getgr_nam_gid.c b/libmisc/getgr_nam_gid.c index 027280a5..5294f509 100644 --- a/libmisc/getgr_nam_gid.c +++ b/libmisc/getgr_nam_gid.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/getrange.c b/libmisc/getrange.c index 9b5e6117..d620c126 100644 --- a/libmisc/getrange.c +++ b/libmisc/getrange.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/gettime.c b/libmisc/gettime.c index 0e25a4b7..b2884022 100644 --- a/libmisc/gettime.c +++ b/libmisc/gettime.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2017, Chris Lamb - * All rights reserved. + * SPDX-FileCopyrightText: 2017, Chris Lamb * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -36,6 +13,7 @@ #include #include "defines.h" #include "prototypes.h" +#include "shadowlog.h" /* * gettime() returns the time as the number of seconds since the Epoch @@ -50,6 +28,7 @@ char *source_date_epoch; time_t fallback; unsigned long long epoch; + FILE *shadow_logfd = log_get_logfd(); fallback = time (NULL); source_date_epoch = shadow_getenv ("SOURCE_DATE_EPOCH"); @@ -61,23 +40,23 @@ epoch = strtoull (source_date_epoch, &endptr, 10); if ((errno == ERANGE && (epoch == ULLONG_MAX || epoch == 0)) || (errno != 0 && epoch == 0)) { - fprintf (stderr, + fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: strtoull: %s\n"), strerror(errno)); } else if (endptr == source_date_epoch) { - fprintf (stderr, + fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: No digits were found: %s\n"), endptr); } else if (*endptr != '\0') { - fprintf (stderr, + fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: Trailing garbage: %s\n"), endptr); } else if (epoch > ULONG_MAX) { - fprintf (stderr, + fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to %lu but was found to be: %llu\n"), ULONG_MAX, epoch); } else if (epoch > fallback) { - fprintf (stderr, + fprintf (shadow_logfd, _("Environment variable $SOURCE_DATE_EPOCH: value must be smaller than or equal to the current time (%lu) but was found to be: %llu\n"), fallback, epoch); } else { diff --git a/libmisc/hushed.c b/libmisc/hushed.c index b71b99ce..84b2f550 100644 --- a/libmisc/hushed.c +++ b/libmisc/hushed.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1991 - 1993, Julianne Frances Haugh - * Copyright (c) 1991 - 1993, Chip Rosenthal - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1991 - 1993, Chip Rosenthal + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -90,7 +67,7 @@ bool hushed (const char *username) return false; } for (found = false; !found && (fgets (buf, (int) sizeof buf, fp) == buf);) { - buf[strlen (buf) - 1] = '\0'; + buf[strcspn (buf, "\n")] = '\0'; found = (strcmp (buf, pw->pw_shell) == 0) || (strcmp (buf, pw->pw_name) == 0); } diff --git a/libmisc/idmapping.c b/libmisc/idmapping.c index aea94936..8b64a26a 100644 --- a/libmisc/idmapping.c +++ b/libmisc/idmapping.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2013 Eric Biederman - * All rights reserved. + * SPDX-FileCopyrightText: 2013 Eric Biederman * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -36,10 +13,11 @@ #include #include "prototypes.h" #include "idmapping.h" -#include #if HAVE_SYS_CAPABILITY_H +#include #include #endif +#include "shadowlog.h" struct map_range *get_map_ranges(int ranges, int argc, char **argv) { @@ -47,28 +25,28 @@ struct map_range *get_map_ranges(int ranges, int argc, char **argv) int idx, argidx; if (ranges < 0 || argc < 0) { - fprintf(stderr, "%s: error calculating number of arguments\n", Prog); + fprintf(log_get_logfd(), "%s: error calculating number of arguments\n", log_get_progname()); return NULL; } if (ranges != ((argc + 2) / 3)) { - fprintf(stderr, "%s: ranges: %u is wrong for argc: %d\n", Prog, ranges, argc); + fprintf(log_get_logfd(), "%s: ranges: %u is wrong for argc: %d\n", log_get_progname(), ranges, argc); return NULL; } if ((ranges * 3) > argc) { - fprintf(stderr, "ranges: %u argc: %d\n", + fprintf(log_get_logfd(), "ranges: %u argc: %d\n", ranges, argc); - fprintf(stderr, + fprintf(log_get_logfd(), _( "%s: Not enough arguments to form %u mappings\n"), - Prog, ranges); + log_get_progname(), ranges); return NULL; } mappings = calloc(ranges, sizeof(*mappings)); if (!mappings) { - fprintf(stderr, _( "%s: Memory allocation failure\n"), - Prog); + fprintf(log_get_logfd(), _( "%s: Memory allocation failure\n"), + log_get_progname()); exit(EXIT_FAILURE); } @@ -88,24 +66,24 @@ struct map_range *get_map_ranges(int ranges, int argc, char **argv) return NULL; } if (ULONG_MAX - mapping->upper <= mapping->count || ULONG_MAX - mapping->lower <= mapping->count) { - fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog); + fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); exit(EXIT_FAILURE); } if (mapping->upper > UINT_MAX || mapping->lower > UINT_MAX || mapping->count > UINT_MAX) { - fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog); + fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); exit(EXIT_FAILURE); } if (mapping->lower + mapping->count > UINT_MAX || mapping->upper + mapping->count > UINT_MAX) { - fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog); + fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); exit(EXIT_FAILURE); } if (mapping->lower + mapping->count < mapping->lower || mapping->upper + mapping->count < mapping->upper) { /* this one really shouldn't be possible given previous checks */ - fprintf(stderr, _( "%s: subuid overflow detected.\n"), Prog); + fprintf(log_get_logfd(), _( "%s: subuid overflow detected.\n"), log_get_progname()); exit(EXIT_FAILURE); } } @@ -123,6 +101,25 @@ struct map_range *get_map_ranges(int ranges, int argc, char **argv) */ #define ULONG_DIGITS ((((sizeof(unsigned long) * CHAR_BIT) + 9)/10)*3) +#if HAVE_SYS_CAPABILITY_H +static inline bool maps_lower_root(int cap, int ranges, struct map_range *mappings) +{ + int idx; + struct map_range *mapping; + + if (cap != CAP_SETUID) + return false; + + mapping = mappings; + for (idx = 0; idx < ranges; idx++, mapping++) { + if (mapping->lower == 0) + return true; + } + + return false; +} +#endif + /* * The ruid refers to the caller's uid and is used to reset the effective uid * back to the callers real uid. @@ -157,19 +154,19 @@ void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings, } else if (strcmp(map_file, "gid_map") == 0) { cap = CAP_SETGID; } else { - fprintf(stderr, _("%s: Invalid map file %s specified\n"), Prog, map_file); + fprintf(log_get_logfd(), _("%s: Invalid map file %s specified\n"), log_get_progname(), map_file); exit(EXIT_FAILURE); } /* Align setuid- and fscaps-based new{g,u}idmap behavior. */ if (geteuid() == 0 && geteuid() != ruid) { if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0) < 0) { - fprintf(stderr, _("%s: Could not prctl(PR_SET_KEEPCAPS)\n"), Prog); + fprintf(log_get_logfd(), _("%s: Could not prctl(PR_SET_KEEPCAPS)\n"), log_get_progname()); exit(EXIT_FAILURE); } if (seteuid(ruid) < 0) { - fprintf(stderr, _("%s: Could not seteuid to %d\n"), Prog, ruid); + fprintf(log_get_logfd(), _("%s: Could not seteuid to %d\n"), log_get_progname(), ruid); exit(EXIT_FAILURE); } } @@ -177,14 +174,20 @@ void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings, /* Lockdown new{g,u}idmap by dropping all unneeded capabilities. */ memset(data, 0, sizeof(data)); data[0].effective = CAP_TO_MASK(cap); + /* + * When uid 0 from the ancestor userns is supposed to be mapped into + * the child userns we need to retain CAP_SETFCAP. + */ + if (maps_lower_root(cap, ranges, mappings)) + data[0].effective |= CAP_TO_MASK(CAP_SETFCAP); data[0].permitted = data[0].effective; if (capset(&hdr, data) < 0) { - fprintf(stderr, _("%s: Could not set caps\n"), Prog); + fprintf(log_get_logfd(), _("%s: Could not set caps\n"), log_get_progname()); exit(EXIT_FAILURE); } #endif - bufsize = ranges * ((ULONG_DIGITS + 1) * 3); + bufsize = ranges * ((ULONG_DIGITS + 1) * 3); pos = buf = xmalloc(bufsize); /* Build the mapping command */ @@ -197,7 +200,7 @@ void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings, mapping->lower, mapping->count); if ((written <= 0) || (written >= (bufsize - (pos - buf)))) { - fprintf(stderr, _("%s: snprintf failed!\n"), Prog); + fprintf(log_get_logfd(), _("%s: snprintf failed!\n"), log_get_progname()); exit(EXIT_FAILURE); } pos += written; @@ -206,14 +209,15 @@ void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings, /* Write the mapping to the mapping file */ fd = openat(proc_dir_fd, map_file, O_WRONLY); if (fd < 0) { - fprintf(stderr, _("%s: open of %s failed: %s\n"), - Prog, map_file, strerror(errno)); + fprintf(log_get_logfd(), _("%s: open of %s failed: %s\n"), + log_get_progname(), map_file, strerror(errno)); exit(EXIT_FAILURE); } if (write(fd, buf, pos - buf) != (pos - buf)) { - fprintf(stderr, _("%s: write to %s failed: %s\n"), - Prog, map_file, strerror(errno)); + fprintf(log_get_logfd(), _("%s: write to %s failed: %s\n"), + log_get_progname(), map_file, strerror(errno)); exit(EXIT_FAILURE); } close(fd); + free(buf); } diff --git a/libmisc/idmapping.h b/libmisc/idmapping.h index 3f32db68..e3527606 100644 --- a/libmisc/idmapping.h +++ b/libmisc/idmapping.h @@ -1,30 +1,7 @@ /* - * Copyright (c) 2013 Eric Biederman - * All rights reserved. + * SPDX-FileCopyrightText: 2013 Eric Biederman * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #ifndef _IDMAPPING_H_ @@ -40,5 +17,7 @@ extern struct map_range *get_map_ranges(int ranges, int argc, char **argv); extern void write_mapping(int proc_dir_fd, int ranges, struct map_range *mappings, const char *map_file, uid_t ruid); +extern void nss_init(char *nsswitch_path); + #endif /* _ID_MAPPING_H_ */ diff --git a/libmisc/isexpired.c b/libmisc/isexpired.c index 8e8a645f..ff203967 100644 --- a/libmisc/isexpired.c +++ b/libmisc/isexpired.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/limits.c b/libmisc/limits.c index f40e1716..fea85fe5 100644 --- a/libmisc/limits.c +++ b/libmisc/limits.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -50,6 +27,7 @@ #include "defines.h" #include #include "getdef.h" +#include "shadowlog.h" #ifdef HAVE_SYS_RESOURCE_H #include #define LIMITS @@ -202,7 +180,7 @@ static int check_logins (const char *name, const char *maxlogins) return 0; } -/* Function setup_user_limits - checks/set limits for the curent login +/* Function setup_user_limits - checks/set limits for the current login * Original idea from Joel Katz's lshell. Ported to shadow-login * by Cristian Gafton - gafton@sorosis.ro * @@ -404,7 +382,7 @@ static bool user_in_group (const char *uname, const char *gname) { struct group *groupdata; - if (uname == NULL || gname == NULL){ + if (uname == NULL || gname == NULL) { return false; } @@ -548,7 +526,7 @@ void setup_limits (const struct passwd *info) #ifdef LIMITS if (info->pw_uid != 0) { if ((setup_user_limits (info->pw_name) & LOGIN_ERROR_LOGIN) != 0) { - (void) fputs (_("Too many logins.\n"), stderr); + (void) fputs (_("Too many logins.\n"), log_get_logfd()); (void) sleep (2); /* XXX: Should be FAIL_DELAY */ exit (EXIT_FAILURE); } diff --git a/libmisc/list.c b/libmisc/list.c index 2da734a7..9d7ec77b 100644 --- a/libmisc/list.c +++ b/libmisc/list.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -241,6 +218,7 @@ bool is_on_list (char *const *list, const char *member) if ('\0' == *members) { *array = (char *) 0; + free (members); return array; } diff --git a/libmisc/log.c b/libmisc/log.c index eb84859e..a220be0d 100644 --- a/libmisc/log.c +++ b/libmisc/log.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -42,7 +19,7 @@ #include #include "prototypes.h" -/* +/* * dolastlog - create lastlog entry * * A "last login" entry is created for the user being logged in. The @@ -100,9 +77,9 @@ void dolastlog ( ll_time = newlog.ll_time; (void) time (&ll_time); newlog.ll_time = ll_time; - strncpy (newlog.ll_line, line, sizeof newlog.ll_line); + strncpy (newlog.ll_line, line, sizeof (newlog.ll_line) - 1); #if HAVE_LL_HOST - strncpy (newlog.ll_host, host, sizeof newlog.ll_host); + strncpy (newlog.ll_host, host, sizeof (newlog.ll_host) - 1); #endif if ( (lseek (fd, offset, SEEK_SET) != offset) || (write (fd, (const void *) &newlog, sizeof newlog) != (ssize_t) sizeof newlog) diff --git a/libmisc/loginprompt.c b/libmisc/loginprompt.c index b008e2a2..35856463 100644 --- a/libmisc/loginprompt.c +++ b/libmisc/loginprompt.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -103,7 +80,7 @@ void login_prompt (const char *prompt, char *name, int namesize) (void) fflush (stdout); } - /* + /* * Read the user's response. The trailing newline will be * removed. */ diff --git a/libmisc/mail.c b/libmisc/mail.c index 1c53c310..647f879c 100644 --- a/libmisc/mail.c +++ b/libmisc/mail.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1991, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/motd.c b/libmisc/motd.c index 6ba7e128..23e27f24 100644 --- a/libmisc/motd.c +++ b/libmisc/motd.c @@ -1,35 +1,12 @@ /* - * Copyright (c) 1989 - 1991, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2010 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2010 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ - + #include #ident "$Id$" diff --git a/libmisc/myname.c b/libmisc/myname.c index 05efdad3..1b026179 100644 --- a/libmisc/myname.c +++ b/libmisc/myname.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -62,6 +39,9 @@ if ((NULL != pw) && (pw->pw_uid == ruid)) { return pw; } + if (NULL != pw) { + pw_free (pw); + } } return xgetpwuid (ruid); diff --git a/libmisc/obscure.c b/libmisc/obscure.c index 15da7603..3daaa958 100644 --- a/libmisc/obscure.c +++ b/libmisc/obscure.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -271,6 +248,9 @@ static /*@observer@*//*@null@*/const char *obscure_msg ( #endif #ifdef USE_BCRYPT || (strcmp (result, "BCRYPT") == 0) +#endif +#ifdef USE_YESCRYPT + || (strcmp (result, "YESCRYPT") == 0) #endif ) { return NULL; diff --git a/libmisc/pam_pass.c b/libmisc/pam_pass.c index a89bb2c5..166a42ef 100644 --- a/libmisc/pam_pass.c +++ b/libmisc/pam_pass.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1997 - 1999, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1997 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -46,11 +23,13 @@ #include "defines.h" #include "pam_defs.h" #include "prototypes.h" +#include "shadowlog.h" void do_pam_passwd (const char *user, bool silent, bool change_expired) { pam_handle_t *pamh = NULL; int flags = 0, ret; + FILE *shadow_logfd = log_get_logfd(); if (silent) flags |= PAM_SILENT; @@ -59,20 +38,20 @@ void do_pam_passwd (const char *user, bool silent, bool change_expired) ret = pam_start ("passwd", user, &conv, &pamh); if (ret != PAM_SUCCESS) { - fprintf (stderr, + fprintf (shadow_logfd, _("passwd: pam_start() failed, error %d\n"), ret); exit (10); /* XXX */ } ret = pam_chauthtok (pamh, flags); if (ret != PAM_SUCCESS) { - fprintf (stderr, _("passwd: %s\n"), pam_strerror (pamh, ret)); - fputs (_("passwd: password unchanged\n"), stderr); + fprintf (shadow_logfd, _("passwd: %s\n"), pam_strerror (pamh, ret)); + fputs (_("passwd: password unchanged\n"), shadow_logfd); pam_end (pamh, ret); exit (10); /* XXX */ } - fputs (_("passwd: password updated successfully\n"), stderr); + fputs (_("passwd: password updated successfully\n"), shadow_logfd); (void) pam_end (pamh, PAM_SUCCESS); } #else /* !USE_PAM */ diff --git a/libmisc/pam_pass_non_interactive.c b/libmisc/pam_pass_non_interactive.c index ded5c69e..d031284a 100644 --- a/libmisc/pam_pass_non_interactive.c +++ b/libmisc/pam_pass_non_interactive.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2009 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2009 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -38,6 +15,7 @@ #include #include #include "prototypes.h" +#include "shadowlog.h" /*@null@*/ /*@only@*/static const char *non_interactive_password = NULL; static int ni_conv (int num_msg, @@ -76,9 +54,9 @@ static int ni_conv (int num_msg, switch (msg[count]->msg_style) { case PAM_PROMPT_ECHO_ON: - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: PAM modules requesting echoing are not supported.\n"), - Prog); + log_get_progname()); goto failed_conversation; case PAM_PROMPT_ECHO_OFF: responses[count].resp = strdup (non_interactive_password); @@ -88,7 +66,7 @@ static int ni_conv (int num_msg, break; case PAM_ERROR_MSG: if ( (NULL == msg[count]->msg) - || (fprintf (stderr, "%s\n", msg[count]->msg) <0)) { + || (fprintf (log_get_logfd(), "%s\n", msg[count]->msg) <0)) { goto failed_conversation; } responses[count].resp = NULL; @@ -101,9 +79,9 @@ static int ni_conv (int num_msg, responses[count].resp = NULL; break; default: - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: conversation type %d not supported.\n"), - Prog, msg[count]->msg_style); + log_get_progname(), msg[count]->msg_style); goto failed_conversation; } } @@ -143,19 +121,19 @@ int do_pam_passwd_non_interactive (const char *pam_service, ret = pam_start (pam_service, username, &non_interactive_pam_conv, &pamh); if (ret != PAM_SUCCESS) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: (user %s) pam_start failure %d\n"), - Prog, username, ret); + log_get_progname(), username, ret); return 1; } non_interactive_password = password; ret = pam_chauthtok (pamh, 0); if (ret != PAM_SUCCESS) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: (user %s) pam_chauthtok() failed, error:\n" "%s\n"), - Prog, username, pam_strerror (pamh, ret)); + log_get_progname(), username, pam_strerror (pamh, ret)); } (void) pam_end (pamh, PAM_SUCCESS); diff --git a/libmisc/prefix_flag.c b/libmisc/prefix_flag.c index d72f7e39..d4dfbc20 100644 --- a/libmisc/prefix_flag.c +++ b/libmisc/prefix_flag.c @@ -1,31 +1,8 @@ /* - * Copyright (c) 2011 , Julian Pidancet - * Copyright (c) 2011 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2011 , Julian Pidancet + * SPDX-FileCopyrightText: 2011 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -48,6 +25,7 @@ #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ #include "getdef.h" +#include "shadowlog.h" static char *passwd_db_file = NULL; static char *spw_db_file = NULL; @@ -74,25 +52,31 @@ extern const char* process_prefix_flag (const char* short_opt, int argc, char ** * Parse the command line options. */ int i; - const char *prefix = NULL; + const char *prefix = NULL, *val; for (i = 0; i < argc; i++) { + val = NULL; if ( (strcmp (argv[i], "--prefix") == 0) + || ((strncmp (argv[i], "--prefix=", 9) == 0) + && (val = argv[i] + 9)) || (strcmp (argv[i], short_opt) == 0)) { if (NULL != prefix) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: multiple --prefix options\n"), - Prog); + log_get_progname()); exit (E_BAD_ARG); } - if (i + 1 == argc) { - fprintf (stderr, + if (val) { + prefix = val; + } else if (i + 1 == argc) { + fprintf (log_get_logfd(), _("%s: option '%s' requires an argument\n"), - Prog, argv[i]); + log_get_progname(), argv[i]); exit (E_BAD_ARG); + } else { + prefix = argv[++ i]; } - prefix = argv[i + 1]; } } @@ -103,6 +87,12 @@ extern const char* process_prefix_flag (const char* short_opt, int argc, char ** return ""; /* if prefix is "/" then we ignore the flag option */ /* should we prevent symbolic link from being used as a prefix? */ + if ( prefix[0] != '/') { + fprintf (log_get_logfd(), + _("%s: prefix must be an absolute path\n"), + log_get_progname()); + exit (E_BAD_ARG); + } size_t len; len = strlen(prefix) + strlen(PASSWD_FILE) + 2; passwd_db_file = xmalloc(len); @@ -164,10 +154,10 @@ extern struct group *prefix_getgrnam(const char *name) struct group * grp = NULL; fg = fopen(group_db_file, "rt"); - if(!fg) + if (!fg) return NULL; - while((grp = fgetgrent(fg)) != NULL) { - if(!strcmp(name, grp->gr_name)) + while ((grp = fgetgrent(fg)) != NULL) { + if (!strcmp(name, grp->gr_name)) break; } fclose(fg); @@ -184,10 +174,10 @@ extern struct group *prefix_getgrgid(gid_t gid) struct group * grp = NULL; fg = fopen(group_db_file, "rt"); - if(!fg) + if (!fg) return NULL; - while((grp = fgetgrent(fg)) != NULL) { - if(gid == grp->gr_gid) + while ((grp = fgetgrent(fg)) != NULL) { + if (gid == grp->gr_gid) break; } fclose(fg); @@ -204,10 +194,10 @@ extern struct passwd *prefix_getpwuid(uid_t uid) struct passwd *pwd = NULL; fg = fopen(passwd_db_file, "rt"); - if(!fg) + if (!fg) return NULL; - while((pwd = fgetpwent(fg)) != NULL) { - if(uid == pwd->pw_uid) + while ((pwd = fgetpwent(fg)) != NULL) { + if (uid == pwd->pw_uid) break; } fclose(fg); @@ -224,10 +214,10 @@ extern struct passwd *prefix_getpwnam(const char* name) struct passwd *pwd = NULL; fg = fopen(passwd_db_file, "rt"); - if(!fg) + if (!fg) return NULL; - while((pwd = fgetpwent(fg)) != NULL) { - if(!strcmp(name, pwd->pw_name)) + while ((pwd = fgetpwent(fg)) != NULL) { + if (!strcmp(name, pwd->pw_name)) break; } fclose(fg); @@ -244,10 +234,10 @@ extern struct spwd *prefix_getspnam(const char* name) struct spwd *sp = NULL; fg = fopen(spw_db_file, "rt"); - if(!fg) + if (!fg) return NULL; - while((sp = fgetspent(fg)) != NULL) { - if(!strcmp(name, sp->sp_namp)) + while ((sp = fgetspent(fg)) != NULL) { + if (!strcmp(name, sp->sp_namp)) break; } fclose(fg); @@ -260,7 +250,7 @@ extern struct spwd *prefix_getspnam(const char* name) extern void prefix_setpwent() { - if(!passwd_db_file) { + if (!passwd_db_file) { setpwent(); return; } @@ -268,19 +258,22 @@ extern void prefix_setpwent() fclose (fp_pwent); fp_pwent = fopen(passwd_db_file, "rt"); - if(!fp_pwent) + if (!fp_pwent) return; } extern struct passwd* prefix_getpwent() { - if(!passwd_db_file) { + if (!passwd_db_file) { return getpwent(); } + if (!fp_pwent) { + return NULL; + } return fgetpwent(fp_pwent); } extern void prefix_endpwent() { - if(!passwd_db_file) { + if (!passwd_db_file) { endpwent(); return; } @@ -291,7 +284,7 @@ extern void prefix_endpwent() extern void prefix_setgrent() { - if(!group_db_file) { + if (!group_db_file) { setgrent(); return; } @@ -299,19 +292,19 @@ extern void prefix_setgrent() fclose (fp_grent); fp_grent = fopen(group_db_file, "rt"); - if(!fp_grent) + if (!fp_grent) return; } extern struct group* prefix_getgrent() { - if(!group_db_file) { + if (!group_db_file) { return getgrent(); } return fgetgrent(fp_grent); } extern void prefix_endgrent() { - if(!group_db_file) { + if (!group_db_file) { endgrent(); return; } diff --git a/libmisc/pwd2spwd.c b/libmisc/pwd2spwd.c index 6799dd50..139a0240 100644 --- a/libmisc/pwd2spwd.c +++ b/libmisc/pwd2spwd.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/pwd_init.c b/libmisc/pwd_init.c index 774ba9b1..63c71e28 100644 --- a/libmisc/pwd_init.c +++ b/libmisc/pwd_init.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1997 , Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1997 , Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/pwdcheck.c b/libmisc/pwdcheck.c index ec1f4744..15fc3a33 100644 --- a/libmisc/pwdcheck.c +++ b/libmisc/pwdcheck.c @@ -1,31 +1,8 @@ /* - * Copyright (c) 2000 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2000 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -39,6 +16,7 @@ #include "prototypes.h" #include "defines.h" #include "pwauth.h" +#include "shadowlog.h" void passwd_check (const char *user, const char *passwd, unused const char *progname) { @@ -51,7 +29,7 @@ void passwd_check (const char *user, const char *passwd, unused const char *prog if (pw_auth (passwd, user, PW_LOGIN, (char *) 0) != 0) { SYSLOG ((LOG_WARN, "incorrect password for `%s'", user)); (void) sleep (1); - fprintf (stderr, _("Incorrect password for %s.\n"), user); + fprintf (log_get_logfd(), _("Incorrect password for %s.\n"), user); exit (EXIT_FAILURE); } } diff --git a/libmisc/remove_tree.c b/libmisc/remove_tree.c index b2794ab4..c3aa8131 100644 --- a/libmisc/remove_tree.c +++ b/libmisc/remove_tree.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2001, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/rlogin.c b/libmisc/rlogin.c index b19f5e8f..fa67dc34 100644 --- a/libmisc/rlogin.c +++ b/libmisc/rlogin.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/root_flag.c b/libmisc/root_flag.c index 7f5e6110..530f32b9 100644 --- a/libmisc/root_flag.c +++ b/libmisc/root_flag.c @@ -1,31 +1,8 @@ /* - * Copyright (c) 2011 , Julian Pidancet - * Copyright (c) 2011 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2011 , Julian Pidancet + * SPDX-FileCopyrightText: 2011 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -38,6 +15,7 @@ #include "prototypes.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" static void change_root (const char* newroot); @@ -56,25 +34,31 @@ extern void process_root_flag (const char* short_opt, int argc, char **argv) * Parse the command line options. */ int i; - const char *newroot = NULL; + const char *newroot = NULL, *val; for (i = 0; i < argc; i++) { + val = NULL; if ( (strcmp (argv[i], "--root") == 0) + || ((strncmp (argv[i], "--root=", 7) == 0) + && (val = argv[i] + 7)) || (strcmp (argv[i], short_opt) == 0)) { if (NULL != newroot) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: multiple --root options\n"), - Prog); + log_get_progname()); exit (E_BAD_ARG); } - if (i + 1 == argc) { - fprintf (stderr, + if (val) { + newroot = val; + } else if (i + 1 == argc) { + fprintf (log_get_logfd(), _("%s: option '%s' requires an argument\n"), - Prog, argv[i]); + log_get_progname(), argv[i]); exit (E_BAD_ARG); + } else { + newroot = argv[++ i]; } - newroot = argv[i + 1]; } } @@ -88,36 +72,36 @@ static void change_root (const char* newroot) /* Drop privileges */ if ( (setregid (getgid (), getgid ()) != 0) || (setreuid (getuid (), getuid ()) != 0)) { - fprintf (stderr, _("%s: failed to drop privileges (%s)\n"), - Prog, strerror (errno)); + fprintf (log_get_logfd(), _("%s: failed to drop privileges (%s)\n"), + log_get_progname(), strerror (errno)); exit (EXIT_FAILURE); } if ('/' != newroot[0]) { - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: invalid chroot path '%s'\n"), - Prog, newroot); + log_get_progname(), newroot); exit (E_BAD_ARG); } if (access (newroot, F_OK) != 0) { - fprintf(stderr, + fprintf(log_get_logfd(), _("%s: cannot access chroot directory %s: %s\n"), - Prog, newroot, strerror (errno)); + log_get_progname(), newroot, strerror (errno)); exit (E_BAD_ARG); } if (chdir (newroot) != 0) { - fprintf(stderr, + fprintf(log_get_logfd(), _("%s: cannot chdir to chroot directory %s: %s\n"), - Prog, newroot, strerror (errno)); + log_get_progname(), newroot, strerror (errno)); exit (E_BAD_ARG); } if (chroot (newroot) != 0) { - fprintf(stderr, + fprintf(log_get_logfd(), _("%s: unable to chroot to directory %s: %s\n"), - Prog, newroot, strerror (errno)); + log_get_progname(), newroot, strerror (errno)); exit (E_BAD_ARG); } } diff --git a/libmisc/salt.c b/libmisc/salt.c index e1a7ac80..f8ac5669 100644 --- a/libmisc/salt.c +++ b/libmisc/salt.c @@ -1,3 +1,10 @@ +/* + * SPDX-FileCopyrightText: Marek Michalkiewicz + * SPDX-FileCopyrightText: J.T. Conklin + * + * SPDX-License-Identifier: Unlicense + */ + /* * salt.c - generate a random salt string for crypt() * @@ -11,30 +18,101 @@ #ident "$Id$" -#include -#include -#include #include +#include +#include +#include +#if HAVE_SYS_RANDOM_H +#include +#endif #include "prototypes.h" #include "defines.h" #include "getdef.h" +#include "shadowlog.h" + +#if (defined CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY && \ + CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY) +#define USE_XCRYPT_GENSALT 1 +#else +#define USE_XCRYPT_GENSALT 0 +#endif + +/* Add the salt prefix. */ +#define MAGNUM(array,ch) (array)[0]=(array)[2]='$',(array)[1]=(ch),(array)[3]='\0' + +#ifdef USE_BCRYPT +/* Use $2b$ as prefix for compatibility with OpenBSD's bcrypt. */ +#define BCRYPTMAGNUM(array) (array)[0]=(array)[3]='$',(array)[1]='2',(array)[2]='b',(array)[4]='\0' +#define BCRYPT_SALT_SIZE 22 +/* Default number of rounds if not explicitly specified. */ +#define B_ROUNDS_DEFAULT 13 +/* Minimum number of rounds. */ +#define B_ROUNDS_MIN 4 +/* Maximum number of rounds. */ +#define B_ROUNDS_MAX 31 +#endif /* USE_BCRYPT */ + +#ifdef USE_SHA_CRYPT +/* Fixed salt len for sha{256,512}crypt. */ +#define SHA_CRYPT_SALT_SIZE 16 +/* Default number of rounds if not explicitly specified. */ +#define SHA_ROUNDS_DEFAULT 5000 +/* Minimum number of rounds. */ +#define SHA_ROUNDS_MIN 1000 +/* Maximum number of rounds. */ +#define SHA_ROUNDS_MAX 999999999 +#endif + +#ifdef USE_YESCRYPT +/* + * Default number of base64 characters used for the salt. + * 24 characters gives a 144 bits (18 bytes) salt. Unlike the more + * traditional 128 bits (16 bytes) salt, this 144 bits salt is always + * represented by the same number of base64 characters without padding + * issue, even with a non-standard base64 encoding scheme. + */ +#define YESCRYPT_SALT_SIZE 24 +/* Default cost if not explicitly specified. */ +#define Y_COST_DEFAULT 5 +/* Minimum cost. */ +#define Y_COST_MIN 1 +/* Maximum cost. */ +#define Y_COST_MAX 11 +#endif + +/* Fixed salt len for md5crypt. */ +#define MD5_CRYPT_SALT_SIZE 8 + +/* Generate salt of size salt_size. */ +#define MAX_SALT_SIZE 44 +#define MIN_SALT_SIZE 8 + +/* Maximum size of the generated salt string. */ +#define GENSALT_SETTING_SIZE 100 /* local function prototypes */ -static void seedRNG (void); +static long read_random_bytes (void); +#if !USE_XCRYPT_GENSALT static /*@observer@*/const char *gensalt (size_t salt_size); +#endif /* !USE_XCRYPT_GENSALT */ #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) static long shadow_random (long min, long max); #endif /* USE_SHA_CRYPT || USE_BCRYPT */ #ifdef USE_SHA_CRYPT -static /*@observer@*/const char *SHA_salt_rounds (/*@null@*/int *prefered_rounds); +static /*@observer@*/const unsigned long SHA_get_salt_rounds (/*@null@*/int *prefered_rounds); +static /*@observer@*/void SHA_salt_rounds_to_buf (char *buf, unsigned long rounds); #endif /* USE_SHA_CRYPT */ #ifdef USE_BCRYPT -static /*@observer@*/const char *gensalt_bcrypt (void); -static /*@observer@*/const char *BCRYPT_salt_rounds (/*@null@*/int *prefered_rounds); +static /*@observer@*/const unsigned long BCRYPT_get_salt_rounds (/*@null@*/int *prefered_rounds); +static /*@observer@*/void BCRYPT_salt_rounds_to_buf (char *buf, unsigned long rounds); #endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT +static /*@observer@*/const unsigned long YESCRYPT_get_salt_cost (/*@null@*/int *prefered_cost); +static /*@observer@*/void YESCRYPT_salt_cost_to_buf (char *buf, unsigned long cost); +#endif /* USE_YESCRYPT */ -#ifndef HAVE_L64A -static /*@observer@*/char *l64a(long value) +#if !USE_XCRYPT_GENSALT && !defined(HAVE_L64A) +static /*@observer@*/char *l64a (long value) { static char buf[8]; char *s = buf; @@ -65,40 +143,58 @@ static /*@observer@*/char *l64a(long value) *s = '\0'; - return(buf); + return buf; } -#endif /* !HAVE_L64A */ +#endif /* !USE_XCRYPT_GENSALT && !defined(HAVE_L64A) */ -static void seedRNG (void) +/* Read sizeof (long) random bytes from /dev/urandom. */ +static long read_random_bytes (void) { - struct timeval tv; - static int seeded = 0; + long randval = 0; - if (0 == seeded) { - (void) gettimeofday (&tv, NULL); - srandom (tv.tv_sec ^ tv.tv_usec ^ getpid ()); - seeded = 1; +#ifdef HAVE_ARC4RANDOM_BUF + /* arc4random_buf, if it exists, can never fail. */ + arc4random_buf (&randval, sizeof (randval)); + goto end; + +#elif defined(HAVE_GETENTROPY) + /* getentropy may exist but lack kernel support. */ + if (getentropy (&randval, sizeof (randval))) { + goto fail; } -} -/* - * Add the salt prefix. - */ -#define MAGNUM(array,ch) (array)[0]=(array)[2]='$',(array)[1]=(ch),(array)[3]='\0' -#ifdef USE_BCRYPT -/* - * Using the Prefix $2a$ to enable an anti-collision safety measure in musl libc. - * Negatively affects a subset of passwords containing the '\xff' character, - * which is not valid UTF-8 (so "unlikely to cause much annoyance"). - */ -#define BCRYPTMAGNUM(array) (array)[0]=(array)[3]='$',(array)[1]='2',(array)[2]='a',(array)[4]='\0' -#endif /* USE_BCRYPT */ + goto end; + +#elif defined(HAVE_GETRANDOM) + /* Likewise getrandom. */ + if ((size_t) getrandom (&randval, sizeof (randval), 0) != sizeof (randval)) { + goto fail; + } + + goto end; + +#else + FILE *f = fopen ("/dev/urandom", "r"); + + if (fread (&randval, sizeof (randval), 1, f) != 1) { + fclose(f); + goto fail; + } + + fclose(f); + goto end; +#endif + +fail: + fprintf (log_get_logfd(), + _("Unable to obtain random bytes.\n")); + exit (1); + +end: + return randval; +} #if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) -/* It is not clear what is the maximum value of random(). - * We assume 2^31-1.*/ -#define RANDOM_MAX 0x7FFFFFFF - /* * Return a random number between min and max (both included). * @@ -108,8 +204,9 @@ static long shadow_random (long min, long max) { double drand; long ret; - seedRNG (); - drand = (double) (max - min + 1) * random () / RANDOM_MAX; + + drand = (double) (read_random_bytes () & RAND_MAX) / (double) RAND_MAX; + drand *= (double) (max - min + 1); /* On systems were this is not random() range is lower, we favor * higher numbers of salt. */ ret = (long) (max + 1 - drand); @@ -122,171 +219,234 @@ static long shadow_random (long min, long max) #endif /* USE_SHA_CRYPT || USE_BCRYPT */ #ifdef USE_SHA_CRYPT -/* Default number of rounds if not explicitly specified. */ -#define ROUNDS_DEFAULT 5000 -/* Minimum number of rounds. */ -#define ROUNDS_MIN 1000 -/* Maximum number of rounds. */ -#define ROUNDS_MAX 999999999 -/* - * Return a salt prefix specifying the rounds number for the SHA crypt methods. - */ -static /*@observer@*/const char *SHA_salt_rounds (/*@null@*/int *prefered_rounds) +/* Return the the rounds number for the SHA crypt methods. */ +static /*@observer@*/const unsigned long SHA_get_salt_rounds (/*@null@*/int *prefered_rounds) { - static char rounds_prefix[18]; /* Max size: rounds=999999999$ */ - long rounds; + unsigned long rounds; if (NULL == prefered_rounds) { long min_rounds = getdef_long ("SHA_CRYPT_MIN_ROUNDS", -1); long max_rounds = getdef_long ("SHA_CRYPT_MAX_ROUNDS", -1); if ((-1 == min_rounds) && (-1 == max_rounds)) { - return ""; - } - - if (-1 == min_rounds) { - min_rounds = max_rounds; - } - - if (-1 == max_rounds) { - max_rounds = min_rounds; - } - - if (min_rounds > max_rounds) { - max_rounds = min_rounds; - } - - rounds = shadow_random (min_rounds, max_rounds); - } else if (0 == *prefered_rounds) { - return ""; - } else { - rounds = *prefered_rounds; - } - - /* Sanity checks. The libc should also check this, but this - * protects against a rounds_prefix overflow. */ - if (rounds < ROUNDS_MIN) { - rounds = ROUNDS_MIN; - } - - if (rounds > ROUNDS_MAX) { - rounds = ROUNDS_MAX; - } - - (void) snprintf (rounds_prefix, sizeof rounds_prefix, - "rounds=%ld$", rounds); - - return rounds_prefix; -} -#endif /* USE_SHA_CRYPT */ - -#ifdef USE_BCRYPT -/* Default number of rounds if not explicitly specified. */ -#define B_ROUNDS_DEFAULT 13 -/* Minimum number of rounds. */ -#define B_ROUNDS_MIN 4 -/* Maximum number of rounds. */ -#define B_ROUNDS_MAX 31 -/* - * Return a salt prefix specifying the rounds number for the BCRYPT method. - */ -static /*@observer@*/const char *BCRYPT_salt_rounds (/*@null@*/int *prefered_rounds) -{ - static char rounds_prefix[4]; /* Max size: 31$ */ - long rounds; - - if (NULL == prefered_rounds) { - long min_rounds = getdef_long ("BCRYPT_MIN_ROUNDS", -1); - long max_rounds = getdef_long ("BCRYPT_MAX_ROUNDS", -1); - - if (((-1 == min_rounds) && (-1 == max_rounds)) || (0 == *prefered_rounds)) { - rounds = B_ROUNDS_DEFAULT; + rounds = SHA_ROUNDS_DEFAULT; } else { if (-1 == min_rounds) { min_rounds = max_rounds; } - + if (-1 == max_rounds) { max_rounds = min_rounds; } - + if (min_rounds > max_rounds) { max_rounds = min_rounds; } - - rounds = shadow_random (min_rounds, max_rounds); + + rounds = (unsigned long) shadow_random (min_rounds, max_rounds); } + } else if (0 == *prefered_rounds) { + rounds = SHA_ROUNDS_DEFAULT; } else { - rounds = *prefered_rounds; + rounds = (unsigned long) *prefered_rounds; } - /* - * Sanity checks. - * Use 19 as an upper bound for now, - * because musl doesn't allow rounds >= 20. + /* Sanity checks. The libc should also check this, but this + * protects against a rounds_prefix overflow. */ + if (rounds < SHA_ROUNDS_MIN) { + rounds = SHA_ROUNDS_MIN; + } + + if (rounds > SHA_ROUNDS_MAX) { + rounds = SHA_ROUNDS_MAX; + } + + return rounds; +} + +/* + * Fill a salt prefix specifying the rounds number for the SHA crypt methods + * to a buffer. + */ +static /*@observer@*/void SHA_salt_rounds_to_buf (char *buf, unsigned long rounds) +{ + const size_t buf_begin = strlen (buf); + + /* Nothing to do here if SHA_ROUNDS_DEFAULT is used. */ + if (rounds == SHA_ROUNDS_DEFAULT) { + return; + } + + /* + * Check if the result buffer is long enough. + * We are going to write a maximum of 17 bytes, + * plus one byte for the terminator. + * rounds=XXXXXXXXX$ + * 00000000011111111 + * 12345678901234567 */ + assert (GENSALT_SETTING_SIZE > buf_begin + 17); + + (void) snprintf (buf + buf_begin, 18, "rounds=%lu$", rounds); +} +#endif /* USE_SHA_CRYPT */ + +#ifdef USE_BCRYPT +/* Return the the rounds number for the BCRYPT method. */ +static /*@observer@*/const unsigned long BCRYPT_get_salt_rounds (/*@null@*/int *prefered_rounds) +{ + unsigned long rounds; + + if (NULL == prefered_rounds) { + long min_rounds = getdef_long ("BCRYPT_MIN_ROUNDS", -1); + long max_rounds = getdef_long ("BCRYPT_MAX_ROUNDS", -1); + + if ((-1 == min_rounds) && (-1 == max_rounds)) { + rounds = B_ROUNDS_DEFAULT; + } else { + if (-1 == min_rounds) { + min_rounds = max_rounds; + } + + if (-1 == max_rounds) { + max_rounds = min_rounds; + } + + if (min_rounds > max_rounds) { + max_rounds = min_rounds; + } + + rounds = (unsigned long) shadow_random (min_rounds, max_rounds); + } + } else if (0 == *prefered_rounds) { + rounds = B_ROUNDS_DEFAULT; + } else { + rounds = (unsigned long) *prefered_rounds; + } + + /* Sanity checks. */ if (rounds < B_ROUNDS_MIN) { rounds = B_ROUNDS_MIN; } +#if USE_XCRYPT_GENSALT + if (rounds > B_ROUNDS_MAX) { + rounds = B_ROUNDS_MAX; + } +#else /* USE_XCRYPT_GENSALT */ + /* + * Use 19 as an upper bound for now, + * because musl doesn't allow rounds >= 20. + */ if (rounds > 19) { /* rounds = B_ROUNDS_MAX; */ rounds = 19; } +#endif /* USE_XCRYPT_GENSALT */ - (void) snprintf (rounds_prefix, sizeof rounds_prefix, - "%2.2ld$", rounds); - - return rounds_prefix; + return rounds; } -#define BCRYPT_SALT_SIZE 22 /* - * Generate a 22 character salt string for bcrypt. + * Fill a salt prefix specifying the rounds number for the BCRYPT method + * to a buffer. */ -static /*@observer@*/const char *gensalt_bcrypt (void) +static /*@observer@*/void BCRYPT_salt_rounds_to_buf (char *buf, unsigned long rounds) { - static char salt[32]; + const size_t buf_begin = strlen (buf); - salt[0] = '\0'; + /* + * Check if the result buffer is long enough. + * We are going to write three bytes, + * plus one byte for the terminator. + * XX$ + * 000 + * 123 + */ + assert (GENSALT_SETTING_SIZE > buf_begin + 3); - seedRNG (); - strcat (salt, l64a (random())); - do { - strcat (salt, l64a (random())); - } while (strlen (salt) < BCRYPT_SALT_SIZE); - - salt[BCRYPT_SALT_SIZE] = '\0'; - - return salt; + (void) snprintf (buf + buf_begin, 4, "%2.2lu$", rounds); } #endif /* USE_BCRYPT */ -/* - * Generate salt of size salt_size. - */ -#define MAX_SALT_SIZE 16 -#define MIN_SALT_SIZE 8 +#ifdef USE_YESCRYPT +/* Return the the cost number for the YESCRYPT method. */ +static /*@observer@*/const unsigned long YESCRYPT_get_salt_cost (/*@null@*/int *prefered_cost) +{ + unsigned long cost; + if (NULL == prefered_cost) { + cost = getdef_num ("YESCRYPT_COST_FACTOR", Y_COST_DEFAULT); + } else if (0 == *prefered_cost) { + cost = Y_COST_DEFAULT; + } else { + cost = (unsigned long) *prefered_cost; + } + + /* Sanity checks. */ + if (cost < Y_COST_MIN) { + cost = Y_COST_MIN; + } + + if (cost > Y_COST_MAX) { + cost = Y_COST_MAX; + } + + return cost; +} + +/* + * Fill a salt prefix specifying the cost for the YESCRYPT method + * to a buffer. + */ +static /*@observer@*/void YESCRYPT_salt_cost_to_buf (char *buf, unsigned long cost) +{ + const size_t buf_begin = strlen (buf); + + /* + * Check if the result buffer is long enough. + * We are going to write four bytes, + * plus one byte for the terminator. + * jXX$ + * 0000 + * 1234 + */ + assert (GENSALT_SETTING_SIZE > buf_begin + 4); + + buf[buf_begin + 0] = 'j'; + if (cost < 3) { + buf[buf_begin + 1] = 0x36 + cost; + } else if (cost < 6) { + buf[buf_begin + 1] = 0x34 + cost; + } else { + buf[buf_begin + 1] = 0x3b + cost; + } + buf[buf_begin + 2] = cost >= 3 ? 'T' : '5'; + buf[buf_begin + 3] = '$'; + buf[buf_begin + 4] = '\0'; +} +#endif /* USE_YESCRYPT */ + +#if !USE_XCRYPT_GENSALT static /*@observer@*/const char *gensalt (size_t salt_size) { - static char salt[32]; + static char salt[MAX_SALT_SIZE + 6]; - salt[0] = '\0'; + memset (salt, '\0', MAX_SALT_SIZE + 6); assert (salt_size >= MIN_SALT_SIZE && salt_size <= MAX_SALT_SIZE); - seedRNG (); - strcat (salt, l64a (random())); + strcat (salt, l64a (read_random_bytes ())); do { - strcat (salt, l64a (random())); + strcat (salt, l64a (read_random_bytes ())); } while (strlen (salt) < salt_size); salt[salt_size] = '\0'; return salt; } +#endif /* !USE_XCRYPT_GENSALT */ /* * Generate 8 base64 ASCII characters of random salt. If MD5_CRYPT_ENAB @@ -296,26 +456,23 @@ static /*@observer@*/const char *gensalt (size_t salt_size) * Other methods can be set with ENCRYPT_METHOD * * The method can be forced with the meth parameter. - * If NULL, the method will be defined according to the MD5_CRYPT_ENAB and - * ENCRYPT_METHOD login.defs variables. + * If NULL, the method will be defined according to the ENCRYPT_METHOD + * variable, and if not set according to the MD5_CRYPT_ENAB variable, + * which can both be set inside the login.defs file. * * If meth is specified, an additional parameter can be provided. * * For the SHA256 and SHA512 method, this specifies the number of rounds * (if not NULL). + * * For the YESCRYPT method, this specifies the cost factor (if not NULL). */ /*@observer@*/const char *crypt_make_salt (/*@null@*//*@observer@*/const char *meth, /*@null@*/void *arg) { - /* Max result size for the SHA methods: - * +3 $5$ - * +17 rounds=999999999$ - * +16 salt - * +1 \0 - */ - static char result[40]; - size_t salt_len = 8; + static char result[GENSALT_SETTING_SIZE]; + size_t salt_len = MAX_SALT_SIZE; const char *method; + unsigned long rounds = 0; - result[0] = '\0'; + memset (result, '\0', GENSALT_SETTING_SIZE); if (NULL != meth) method = meth; @@ -328,46 +485,80 @@ static /*@observer@*/const char *gensalt (size_t salt_size) if (0 == strcmp (method, "MD5")) { MAGNUM(result, '1'); + salt_len = MD5_CRYPT_SALT_SIZE; + rounds = 0; #ifdef USE_BCRYPT } else if (0 == strcmp (method, "BCRYPT")) { BCRYPTMAGNUM(result); - strcat(result, BCRYPT_salt_rounds((int *)arg)); + salt_len = BCRYPT_SALT_SIZE; + rounds = BCRYPT_get_salt_rounds ((int *) arg); + BCRYPT_salt_rounds_to_buf (result, rounds); #endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT + } else if (0 == strcmp (method, "YESCRYPT")) { + MAGNUM(result, 'y'); + salt_len = YESCRYPT_SALT_SIZE; + rounds = YESCRYPT_get_salt_cost ((int *) arg); + YESCRYPT_salt_cost_to_buf (result, rounds); +#endif /* USE_YESCRYPT */ #ifdef USE_SHA_CRYPT } else if (0 == strcmp (method, "SHA256")) { MAGNUM(result, '5'); - strcat(result, SHA_salt_rounds((int *)arg)); - salt_len = (size_t) shadow_random (8, 16); + salt_len = SHA_CRYPT_SALT_SIZE; + rounds = SHA_get_salt_rounds ((int *) arg); + SHA_salt_rounds_to_buf (result, rounds); } else if (0 == strcmp (method, "SHA512")) { MAGNUM(result, '6'); - strcat(result, SHA_salt_rounds((int *)arg)); - salt_len = (size_t) shadow_random (8, 16); + salt_len = SHA_CRYPT_SALT_SIZE; + rounds = SHA_get_salt_rounds ((int *) arg); + SHA_salt_rounds_to_buf (result, rounds); #endif /* USE_SHA_CRYPT */ } else if (0 != strcmp (method, "DES")) { - fprintf (stderr, + fprintf (log_get_logfd(), _("Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n"), method); - result[0] = '\0'; + salt_len = MAX_SALT_SIZE; + rounds = 0; + memset (result, '\0', GENSALT_SETTING_SIZE); } +#if USE_XCRYPT_GENSALT /* - * Concatenate a pseudo random salt. + * Prepare DES setting for crypt_gensalt(), if result + * has not been filled with anything previously. */ - assert (sizeof (result) > strlen (result) + salt_len); -#ifdef USE_BCRYPT - if (0 == strcmp (method, "BCRYPT")) { - strncat (result, gensalt_bcrypt (), - sizeof (result) - strlen (result) - 1); - return result; - } else { -#endif /* USE_BCRYPT */ - strncat (result, gensalt (salt_len), - sizeof (result) - strlen (result) - 1); -#ifdef USE_BCRYPT + if ('\0' == result[0]) { + /* Avoid -Wunused-but-set-variable. */ + salt_len = GENSALT_SETTING_SIZE - 1; + rounds = 0; + memset (result, '.', salt_len); + result[salt_len] = '\0'; } -#endif /* USE_BCRYPT */ + + char *retval = crypt_gensalt (result, rounds, NULL, 0); + + /* Should not happen, but... */ + if (NULL == retval) { + fprintf (log_get_logfd(), + _("Unable to generate a salt from setting " + "\"%s\", check your settings in " + "ENCRYPT_METHOD and the corresponding " + "configuration for your selected hash " + "method.\n"), result); + + exit (1); + } + + return retval; +#else /* USE_XCRYPT_GENSALT */ + /* Check if the result buffer is long enough. */ + assert (GENSALT_SETTING_SIZE > strlen (result) + salt_len); + + /* Concatenate a pseudo random salt. */ + strncat (result, gensalt (salt_len), + GENSALT_SETTING_SIZE - strlen (result) - 1); return result; +#endif /* USE_XCRYPT_GENSALT */ } - diff --git a/libmisc/setugid.c b/libmisc/setugid.c index 9bb62af9..6dbe38ee 100644 --- a/libmisc/setugid.c +++ b/libmisc/setugid.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/setupenv.c b/libmisc/setupenv.c index 24c6e678..5d7aefa2 100644 --- a/libmisc/setupenv.c +++ b/libmisc/setupenv.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -47,6 +24,7 @@ #include "defines.h" #include #include "getdef.h" +#include "shadowlog.h" #ifndef USE_PAM static void @@ -219,7 +197,7 @@ void setup_env (struct passwd *info) static char temp_pw_dir[] = "/"; if (!getdef_bool ("DEFAULT_HOME") || chdir ("/") == -1) { - fprintf (stderr, _("Unable to cd to '%s'\n"), + fprintf (log_get_logfd(), _("Unable to cd to '%s'\n"), info->pw_dir); SYSLOG ((LOG_WARN, "unable to cd to `%s' for user `%s'\n", diff --git a/libmisc/shell.c b/libmisc/shell.c index 92bfc2bc..29724063 100644 --- a/libmisc/shell.c +++ b/libmisc/shell.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1991, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * Copyright (c) 2009 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2009 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/strtoday.c b/libmisc/strtoday.c index 860f06d4..7a60ea3d 100644 --- a/libmisc/strtoday.c +++ b/libmisc/strtoday.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #if !defined(__GLIBC__) diff --git a/libmisc/sub.c b/libmisc/sub.c index b0e32d11..d30c4c76 100644 --- a/libmisc/sub.c +++ b/libmisc/sub.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1989 - 1991, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1991, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/sulog.c b/libmisc/sulog.c index 4068acdf..3e956134 100644 --- a/libmisc/sulog.c +++ b/libmisc/sulog.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1992, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1992, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/ttytype.c b/libmisc/ttytype.c index 06e79444..f72d9573 100644 --- a/libmisc/ttytype.c +++ b/libmisc/ttytype.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/tz.c b/libmisc/tz.c index bcf4f7ff..16d92ade 100644 --- a/libmisc/tz.c +++ b/libmisc/tz.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1991 - 1994, Chip Rosenthal - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1991 - 1994, Chip Rosenthal + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/ulimit.c b/libmisc/ulimit.c index 30255a5d..e331d46c 100644 --- a/libmisc/ulimit.c +++ b/libmisc/ulimit.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1997, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/user_busy.c b/libmisc/user_busy.c index 324bb946..c03feb29 100644 --- a/libmisc/user_busy.c +++ b/libmisc/user_busy.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -45,6 +22,7 @@ #ifdef ENABLE_SUBIDS #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ +#include "shadowlog.h" #ifdef __linux__ static int check_status (const char *name, const char *sname, uid_t uid); @@ -96,9 +74,9 @@ static int user_busy_utmp (const char *name) continue; } - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: user %s is currently logged in\n"), - Prog, name); + log_get_progname(), name); return 1; } @@ -249,9 +227,9 @@ static int user_busy_processes (const char *name, uid_t uid) #ifdef ENABLE_SUBIDS sub_uid_close(); #endif - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: user %s is currently used by process %d\n"), - Prog, name, pid); + log_get_progname(), name, pid); return 1; } @@ -269,12 +247,13 @@ static int user_busy_processes (const char *name, uid_t uid) } if (check_status (name, task_path+6, uid) != 0) { (void) closedir (proc); + (void) closedir (task_dir); #ifdef ENABLE_SUBIDS sub_uid_close(); #endif - fprintf (stderr, + fprintf (log_get_logfd(), _("%s: user %s is currently used by process %d\n"), - Prog, name, pid); + log_get_progname(), name, pid); return 1; } } diff --git a/libmisc/utmp.c b/libmisc/utmp.c index ba69cf61..d2b65ac7 100644 --- a/libmisc/utmp.c +++ b/libmisc/utmp.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -257,25 +234,25 @@ static void updwtmpx (const char *filename, const struct utmpx *utx) utent->ut_type = USER_PROCESS; #endif /* HAVE_STRUCT_UTMP_UT_TYPE */ utent->ut_pid = getpid (); - strncpy (utent->ut_line, line, sizeof (utent->ut_line)); + strncpy (utent->ut_line, line, sizeof (utent->ut_line) - 1); #ifdef HAVE_STRUCT_UTMP_UT_ID if (NULL != ut) { strncpy (utent->ut_id, ut->ut_id, sizeof (utent->ut_id)); } else { /* XXX - assumes /dev/tty?? */ - strncpy (utent->ut_id, line + 3, sizeof (utent->ut_id)); + strncpy (utent->ut_id, line + 3, sizeof (utent->ut_id) - 1); } #endif /* HAVE_STRUCT_UTMP_UT_ID */ #ifdef HAVE_STRUCT_UTMP_UT_NAME strncpy (utent->ut_name, name, sizeof (utent->ut_name)); #endif /* HAVE_STRUCT_UTMP_UT_NAME */ #ifdef HAVE_STRUCT_UTMP_UT_USER - strncpy (utent->ut_user, name, sizeof (utent->ut_user)); + strncpy (utent->ut_user, name, sizeof (utent->ut_user) - 1); #endif /* HAVE_STRUCT_UTMP_UT_USER */ if (NULL != hostname) { struct addrinfo *info = NULL; #ifdef HAVE_STRUCT_UTMP_UT_HOST - strncpy (utent->ut_host, hostname, sizeof (utent->ut_host)); + strncpy (utent->ut_host, hostname, sizeof (utent->ut_host) - 1); #endif /* HAVE_STRUCT_UTMP_UT_HOST */ #ifdef HAVE_STRUCT_UTMP_UT_SYSLEN utent->ut_syslen = MIN (strlen (hostname), diff --git a/libmisc/valid.c b/libmisc/valid.c index 4b85d67c..326635ff 100644 --- a/libmisc/valid.c +++ b/libmisc/valid.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 1999, Marek Michałkiewicz - * Copyright (c) 2003 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1999, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include diff --git a/libmisc/xgetXXbyYY.c b/libmisc/xgetXXbyYY.c index 1b0b0013..db010224 100644 --- a/libmisc/xgetXXbyYY.c +++ b/libmisc/xgetXXbyYY.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -54,6 +31,7 @@ #include #include #include "prototypes.h" +#include "shadowlog.h" #define XFUNCTION_NAME XPREFIX (FUNCTION_NAME) #define XPREFIX(name) XPREFIX1 (name) @@ -74,7 +52,7 @@ result = malloc(sizeof(LOOKUP_TYPE)); if (NULL == result) { - fprintf (stderr, _("%s: out of memory\n"), + fprintf (log_get_logfd(), _("%s: out of memory\n"), "x" STRINGIZE(FUNCTION_NAME)); exit (13); } @@ -84,7 +62,7 @@ LOOKUP_TYPE *resbuf = NULL; buffer = (char *)realloc (buffer, length); if (NULL == buffer) { - fprintf (stderr, _("%s: out of memory\n"), + fprintf (log_get_logfd(), _("%s: out of memory\n"), "x" STRINGIZE(FUNCTION_NAME)); exit (13); } @@ -132,7 +110,7 @@ if (result) { result = DUP_FUNCTION(result); if (NULL == result) { - fprintf (stderr, _("%s: out of memory\n"), + fprintf (log_get_logfd(), _("%s: out of memory\n"), "x" STRINGIZE(FUNCTION_NAME)); exit (13); } diff --git a/libmisc/xgetgrgid.c b/libmisc/xgetgrgid.c index 2ef171d1..fe99929b 100644 --- a/libmisc/xgetgrgid.c +++ b/libmisc/xgetgrgid.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/xgetgrnam.c b/libmisc/xgetgrnam.c index a07d0c33..66d6f933 100644 --- a/libmisc/xgetgrnam.c +++ b/libmisc/xgetgrnam.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/xgetpwnam.c b/libmisc/xgetpwnam.c index db65abb7..74eb9721 100644 --- a/libmisc/xgetpwnam.c +++ b/libmisc/xgetpwnam.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/xgetpwuid.c b/libmisc/xgetpwuid.c index 89241344..23b2d0c3 100644 --- a/libmisc/xgetpwuid.c +++ b/libmisc/xgetpwuid.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2007 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2007 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/xgetspnam.c b/libmisc/xgetspnam.c index 287e97f2..148185f4 100644 --- a/libmisc/xgetspnam.c +++ b/libmisc/xgetspnam.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2008 - 2009, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2008 - 2009, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libmisc/xmalloc.c b/libmisc/xmalloc.c index 41a3343c..9329e674 100644 --- a/libmisc/xmalloc.c +++ b/libmisc/xmalloc.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 1998, Marek Michałkiewicz - * Copyright (c) 2003 - 2006, Tomasz Kłoczko - * Copyright (c) 2008 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2003 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* Replacements for malloc and strdup with error checking. Too trivial @@ -47,6 +24,7 @@ #include #include "defines.h" #include "prototypes.h" +#include "shadowlog.h" /*@maynotreturn@*/ /*@only@*//*@out@*//*@notnull@*/char *xmalloc (size_t size) { @@ -54,9 +32,9 @@ ptr = (char *) malloc (size); if (NULL == ptr) { - (void) fprintf (stderr, + (void) fprintf (log_get_logfd(), _("%s: failed to allocate memory: %s\n"), - Prog, strerror (errno)); + log_get_progname(), strerror (errno)); exit (13); } return ptr; @@ -66,3 +44,10 @@ { return strcpy (xmalloc (strlen (str) + 1), str); } + +void xfree(void *ap) +{ + if (ap) { + free(ap); + } +} diff --git a/libmisc/yesno.c b/libmisc/yesno.c index a2eb9530..cfbe6ecc 100644 --- a/libmisc/yesno.c +++ b/libmisc/yesno.c @@ -1,31 +1,8 @@ /* - * Copyright (c) 1992 - 1994, Julianne Frances Haugh - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1992 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* diff --git a/libsubid/Makefile.am b/libsubid/Makefile.am new file mode 100644 index 00000000..09ec3416 --- /dev/null +++ b/libsubid/Makefile.am @@ -0,0 +1,30 @@ +lib_LTLIBRARIES = libsubid.la +libsubid_la_SOURCES = api.c +libsubid_la_LDFLAGS = -version-info @LIBSUBID_ABI_MAJOR@ -export-symbols-regex '^subid_' + +pkginclude_HEADERS = subid.h + +MISCLIBS = \ + $(LIBAUDIT) \ + $(LIBSELINUX) \ + $(LIBSEMANAGE) \ + $(LIBCRACK) \ + $(LIBCRYPT_NOPAM) \ + $(LIBSKEY) \ + $(LIBMD) \ + $(LIBECONF) \ + $(LIBCRYPT) \ + $(LIBACL) \ + $(LIBATTR) \ + $(LIBTCB) \ + $(LIBPAM) + +libsubid_la_LIBADD = \ + $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la \ + $(MISCLIBS) -ldl + +AM_CPPFLAGS = \ + -I${top_srcdir}/lib \ + -I${top_srcdir}/libmisc \ + -DLOCALEDIR=\"$(datadir)/locale\" diff --git a/libsubid/Makefile.in b/libsubid/Makefile.in new file mode 100644 index 00000000..8d11b158 --- /dev/null +++ b/libsubid/Makefile.in @@ -0,0 +1,761 @@ +# Makefile.in generated by automake 1.16.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2018 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = libsubid +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(pkginclude_HEADERS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = subid.h +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +libsubid_la_DEPENDENCIES = $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la $(am__DEPENDENCIES_2) +am_libsubid_la_OBJECTS = api.lo +libsubid_la_OBJECTS = $(am_libsubid_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libsubid_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libsubid_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/api.Plo +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libsubid_la_SOURCES) +DIST_SOURCES = $(libsubid_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(pkginclude_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/subid.h.in \ + $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GMSGFMT = @GMSGFMT@ +GMSGFMT_015 = @GMSGFMT_015@ +GREP = @GREP@ +GROUP_NAME_MAX_LENGTH = @GROUP_NAME_MAX_LENGTH@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +INTLLIBS = @INTLLIBS@ +INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBACL = @LIBACL@ +LIBATTR = @LIBATTR@ +LIBAUDIT = @LIBAUDIT@ +LIBCRACK = @LIBCRACK@ +LIBCRYPT = @LIBCRYPT@ +LIBECONF = @LIBECONF@ +LIBICONV = @LIBICONV@ +LIBINTL = @LIBINTL@ +LIBMD = @LIBMD@ +LIBOBJS = @LIBOBJS@ +LIBPAM = @LIBPAM@ +LIBS = @LIBS@ +LIBSELINUX = @LIBSELINUX@ +LIBSEMANAGE = @LIBSEMANAGE@ +LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ +LIBTCB = @LIBTCB@ +LIBTOOL = @LIBTOOL@ +LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ +LN_S = @LN_S@ +LTLIBICONV = @LTLIBICONV@ +LTLIBINTL = @LTLIBINTL@ +LTLIBOBJS = @LTLIBOBJS@ +LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +MSGFMT = @MSGFMT@ +MSGFMT_015 = @MSGFMT_015@ +MSGMERGE = @MSGMERGE@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POSUB = @POSUB@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +USE_NLS = @USE_NLS@ +VENDORDIR = @VENDORDIR@ +VERSION = @VERSION@ +XGETTEXT = @XGETTEXT@ +XGETTEXT_015 = @XGETTEXT_015@ +XMLCATALOG = @XMLCATALOG@ +XML_CATALOG_FILE = @XML_CATALOG_FILE@ +XSLTPROC = @XSLTPROC@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +capcmd = @capcmd@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +lib_LTLIBRARIES = libsubid.la +libsubid_la_SOURCES = api.c +libsubid_la_LDFLAGS = -version-info @LIBSUBID_ABI_MAJOR@ -export-symbols-regex '^subid_' +pkginclude_HEADERS = subid.h +MISCLIBS = \ + $(LIBAUDIT) \ + $(LIBSELINUX) \ + $(LIBSEMANAGE) \ + $(LIBCRACK) \ + $(LIBCRYPT_NOPAM) \ + $(LIBSKEY) \ + $(LIBMD) \ + $(LIBECONF) \ + $(LIBCRYPT) \ + $(LIBACL) \ + $(LIBATTR) \ + $(LIBTCB) \ + $(LIBPAM) + +libsubid_la_LIBADD = \ + $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la \ + $(MISCLIBS) -ldl + +AM_CPPFLAGS = \ + -I${top_srcdir}/lib \ + -I${top_srcdir}/libmisc \ + -DLOCALEDIR=\"$(datadir)/locale\" + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign libsubid/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign libsubid/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +subid.h: $(top_builddir)/config.status $(srcdir)/subid.h.in + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libsubid.la: $(libsubid_la_OBJECTS) $(libsubid_la_DEPENDENCIES) $(EXTRA_libsubid_la_DEPENDENCIES) + $(AM_V_CCLD)$(libsubid_la_LINK) -rpath $(libdir) $(libsubid_la_OBJECTS) $(libsubid_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/api.Plo@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-pkgincludeHEADERS: $(pkginclude_HEADERS) + @$(NORMAL_INSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \ + $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \ + done + +uninstall-pkgincludeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgincludedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/api.Plo + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-pkgincludeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/api.Plo + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES uninstall-pkgincludeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-libLTLIBRARIES clean-libtool cscopelist-am \ + ctags ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-libLTLIBRARIES install-man install-pdf \ + install-pdf-am install-pkgincludeHEADERS install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-libLTLIBRARIES \ + uninstall-pkgincludeHEADERS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/libsubid/api.c b/libsubid/api.c new file mode 100644 index 00000000..00da74f6 --- /dev/null +++ b/libsubid/api.c @@ -0,0 +1,108 @@ +/* + * SPDX-FileCopyrightText: 2020 Serge Hallyn + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include "subordinateio.h" +#include "idmapping.h" +#include "subid.h" +#include "shadowlog.h" + +bool subid_init(const char *progname, FILE * logfd) +{ + FILE *shadow_logfd; + if (progname) { + progname = strdup(progname); + if (!progname) + return false; + log_set_progname(progname); + } else { + log_set_progname("(libsubid)"); + } + + if (logfd) { + log_set_logfd(logfd); + return true; + } + shadow_logfd = fopen("/dev/null", "w"); + if (!shadow_logfd) { + log_set_logfd(stderr); + return false; + } + log_set_logfd(shadow_logfd); + return true; +} + +static +int get_subid_ranges(const char *owner, enum subid_type id_type, struct subid_range **ranges) +{ + return list_owner_ranges(owner, id_type, ranges); +} + +int subid_get_uid_ranges(const char *owner, struct subid_range **ranges) +{ + return get_subid_ranges(owner, ID_TYPE_UID, ranges); +} + +int subid_get_gid_ranges(const char *owner, struct subid_range **ranges) +{ + return get_subid_ranges(owner, ID_TYPE_GID, ranges); +} + +static +int get_subid_owner(unsigned long id, enum subid_type id_type, uid_t **owner) +{ + return find_subid_owners(id, id_type, owner); +} + +int subid_get_uid_owners(uid_t uid, uid_t **owner) +{ + return get_subid_owner((unsigned long)uid, ID_TYPE_UID, owner); +} + +int subid_get_gid_owners(gid_t gid, uid_t **owner) +{ + return get_subid_owner((unsigned long)gid, ID_TYPE_GID, owner); +} + +static +bool grant_subid_range(struct subordinate_range *range, bool reuse, + enum subid_type id_type) +{ + return new_subid_range(range, id_type, reuse); +} + +bool subid_grant_uid_range(struct subordinate_range *range, bool reuse) +{ + return grant_subid_range(range, reuse, ID_TYPE_UID); +} + +bool subid_grant_gid_range(struct subordinate_range *range, bool reuse) +{ + return grant_subid_range(range, reuse, ID_TYPE_GID); +} + +static +bool ungrant_subid_range(struct subordinate_range *range, enum subid_type id_type) +{ + return release_subid_range(range, id_type); +} + +bool subid_ungrant_uid_range(struct subordinate_range *range) +{ + return ungrant_subid_range(range, ID_TYPE_UID); +} + +bool subid_ungrant_gid_range(struct subordinate_range *range) +{ + return ungrant_subid_range(range, ID_TYPE_GID); +} diff --git a/libsubid/subid.h b/libsubid/subid.h new file mode 100644 index 00000000..01476713 --- /dev/null +++ b/libsubid/subid.h @@ -0,0 +1,155 @@ +#include +#include +#include + +#ifndef SUBID_RANGE_DEFINED +#define SUBID_RANGE_DEFINED 1 +#define SUBID_ABI_VERSION 4.0.0 +#define SUBID_ABI_MAJOR 4 +#define SUBID_ABI_MINOR 0 +#define SUBID_ABI_MICRO 0 + +/* subid_range is just a starting point and size of a range */ +struct subid_range { + unsigned long start; + unsigned long count; +}; + +/* subordinage_range is a subid_range plus an owner, representing + * a range in /etc/subuid or /etc/subgid */ +struct subordinate_range { + const char *owner; + unsigned long start; + unsigned long count; +}; + +enum subid_type { + ID_TYPE_UID = 1, + ID_TYPE_GID = 2 +}; + +enum subid_status { + SUBID_STATUS_SUCCESS = 0, + SUBID_STATUS_UNKNOWN_USER = 1, + SUBID_STATUS_ERROR_CONN = 2, + SUBID_STATUS_ERROR = 3, +}; + +/* + * subid_init: initialize libsubid + * + * @progname: Name to display as program. If NULL, then "(libsubid)" will be + * shown in error messages. + * @logfd: Open file pointer to pass error messages to. If NULL, then + * /dev/null will be opened and messages will be sent there. The + * default if libsubid_init() is not called is stderr (2). + * + * This function does not need to be called. If not called, then the defaults + * will be used. + * + * Returns false if an error occurred. + */ +bool subid_init(const char *progname, FILE *logfd); + +/* + * subid_get_uid_ranges: return a list of UID ranges for a user + * + * @owner: username being queried + * @ranges: a pointer to an array of subid_range structs in which the result + * will be returned. + * + * The caller must free(ranges) when done. + * + * returns: number of ranges found, ir < 0 on error. + */ +int subid_get_uid_ranges(const char *owner, struct subid_range **ranges); + +/* + * subid_get_gid_ranges: return a list of GID ranges for a user + * + * @owner: username being queried + * @ranges: a pointer to an array of subid_range structs in which the result + * will be returned. + * + * The caller must free(ranges) when done. + * + * returns: number of ranges found, ir < 0 on error. + */ +int subid_get_gid_ranges(const char *owner, struct subid_range **ranges); + +/* + * subid_get_uid_owners: return a list of uids to which the given uid has been + * delegated. + * + * @uid: The subuid being queried + * @owners: a pointer to an array of uids into which the results are placed. + * The returned array must be freed by the caller. + * + * Returns the number of uids returned, or < 0 on error. + */ +int subid_get_uid_owners(uid_t uid, uid_t **owner); + +/* + * subid_get_gid_owners: return a list of uids to which the given gid has been + * delegated. + * + * @uid: The subgid being queried + * @owners: a pointer to an array of uids into which the results are placed. + * The returned array must be freed by the caller. + * + * Returns the number of uids returned, or < 0 on error. + */ +int subid_get_gid_owners(gid_t gid, uid_t **owner); + +/* + * subid_grant_uid_range: assign a subuid range to a user + * + * @range: pointer to a struct subordinate_range detailing the UID range + * to allocate. ->owner must be the username, and ->count must be + * filled in. ->start is ignored, and will contain the start + * of the newly allocated range, upon success. + * + * Returns true if the delegation succeeded, false otherwise. If true, + * then the range from (range->start, range->start + range->count) will + * be delegated to range->owner. + */ +bool subid_grant_uid_range(struct subordinate_range *range, bool reuse); + +/* + * subid_grant_gid_range: assign a subgid range to a user + * + * @range: pointer to a struct subordinate_range detailing the GID range + * to allocate. ->owner must be the username, and ->count must be + * filled in. ->start is ignored, and will contain the start + * of the newly allocated range, upon success. + * + * Returns true if the delegation succeeded, false otherwise. If true, + * then the range from (range->start, range->start + range->count) will + * be delegated to range->owner. + */ +bool subid_grant_gid_range(struct subordinate_range *range, bool reuse); + +/* + * subid_ungrant_uid_range: remove a subuid allocation. + * + * @range: pointer to a struct subordinate_range detailing the UID allocation + * to remove. + * + * Returns true if successful, false if it failed, for instance if the + * delegation did not exist. + */ +bool subid_ungrant_uid_range(struct subordinate_range *range); + +/* + * subid_ungrant_gid_range: remove a subgid allocation. + * + * @range: pointer to a struct subordinate_range detailing the GID allocation + * to remove. + * + * Returns true if successful, false if it failed, for instance if the + * delegation did not exist. + */ +bool subid_ungrant_gid_range(struct subordinate_range *range); + +#define SUBID_NFIELDS 3 +#endif diff --git a/libsubid/subid.h.in b/libsubid/subid.h.in new file mode 100644 index 00000000..21b22a26 --- /dev/null +++ b/libsubid/subid.h.in @@ -0,0 +1,155 @@ +#include +#include +#include + +#ifndef SUBID_RANGE_DEFINED +#define SUBID_RANGE_DEFINED 1 +#define SUBID_ABI_VERSION @LIBSUBID_ABI_MAJOR@.@LIBSUBID_ABI_MINOR@.@LIBSUBID_ABI_MICRO@ +#define SUBID_ABI_MAJOR @LIBSUBID_ABI_MAJOR@ +#define SUBID_ABI_MINOR @LIBSUBID_ABI_MINOR@ +#define SUBID_ABI_MICRO @LIBSUBID_ABI_MICRO@ + +/* subid_range is just a starting point and size of a range */ +struct subid_range { + unsigned long start; + unsigned long count; +}; + +/* subordinage_range is a subid_range plus an owner, representing + * a range in /etc/subuid or /etc/subgid */ +struct subordinate_range { + const char *owner; + unsigned long start; + unsigned long count; +}; + +enum subid_type { + ID_TYPE_UID = 1, + ID_TYPE_GID = 2 +}; + +enum subid_status { + SUBID_STATUS_SUCCESS = 0, + SUBID_STATUS_UNKNOWN_USER = 1, + SUBID_STATUS_ERROR_CONN = 2, + SUBID_STATUS_ERROR = 3, +}; + +/* + * subid_init: initialize libsubid + * + * @progname: Name to display as program. If NULL, then "(libsubid)" will be + * shown in error messages. + * @logfd: Open file pointer to pass error messages to. If NULL, then + * /dev/null will be opened and messages will be sent there. The + * default if libsubid_init() is not called is stderr (2). + * + * This function does not need to be called. If not called, then the defaults + * will be used. + * + * Returns false if an error occurred. + */ +bool subid_init(const char *progname, FILE *logfd); + +/* + * subid_get_uid_ranges: return a list of UID ranges for a user + * + * @owner: username being queried + * @ranges: a pointer to an array of subid_range structs in which the result + * will be returned. + * + * The caller must free(ranges) when done. + * + * returns: number of ranges found, ir < 0 on error. + */ +int subid_get_uid_ranges(const char *owner, struct subid_range **ranges); + +/* + * subid_get_gid_ranges: return a list of GID ranges for a user + * + * @owner: username being queried + * @ranges: a pointer to an array of subid_range structs in which the result + * will be returned. + * + * The caller must free(ranges) when done. + * + * returns: number of ranges found, ir < 0 on error. + */ +int subid_get_gid_ranges(const char *owner, struct subid_range **ranges); + +/* + * subid_get_uid_owners: return a list of uids to which the given uid has been + * delegated. + * + * @uid: The subuid being queried + * @owners: a pointer to an array of uids into which the results are placed. + * The returned array must be freed by the caller. + * + * Returns the number of uids returned, or < 0 on error. + */ +int subid_get_uid_owners(uid_t uid, uid_t **owner); + +/* + * subid_get_gid_owners: return a list of uids to which the given gid has been + * delegated. + * + * @uid: The subgid being queried + * @owners: a pointer to an array of uids into which the results are placed. + * The returned array must be freed by the caller. + * + * Returns the number of uids returned, or < 0 on error. + */ +int subid_get_gid_owners(gid_t gid, uid_t **owner); + +/* + * subid_grant_uid_range: assign a subuid range to a user + * + * @range: pointer to a struct subordinate_range detailing the UID range + * to allocate. ->owner must be the username, and ->count must be + * filled in. ->start is ignored, and will contain the start + * of the newly allocated range, upon success. + * + * Returns true if the delegation succeeded, false otherwise. If true, + * then the range from (range->start, range->start + range->count) will + * be delegated to range->owner. + */ +bool subid_grant_uid_range(struct subordinate_range *range, bool reuse); + +/* + * subid_grant_gid_range: assign a subgid range to a user + * + * @range: pointer to a struct subordinate_range detailing the GID range + * to allocate. ->owner must be the username, and ->count must be + * filled in. ->start is ignored, and will contain the start + * of the newly allocated range, upon success. + * + * Returns true if the delegation succeeded, false otherwise. If true, + * then the range from (range->start, range->start + range->count) will + * be delegated to range->owner. + */ +bool subid_grant_gid_range(struct subordinate_range *range, bool reuse); + +/* + * subid_ungrant_uid_range: remove a subuid allocation. + * + * @range: pointer to a struct subordinate_range detailing the UID allocation + * to remove. + * + * Returns true if successful, false if it failed, for instance if the + * delegation did not exist. + */ +bool subid_ungrant_uid_range(struct subordinate_range *range); + +/* + * subid_ungrant_gid_range: remove a subgid allocation. + * + * @range: pointer to a struct subordinate_range detailing the GID allocation + * to remove. + * + * Returns true if successful, false if it failed, for instance if the + * delegation did not exist. + */ +bool subid_ungrant_gid_range(struct subordinate_range *range); + +#define SUBID_NFIELDS 3 +#endif diff --git a/ltmain.sh b/ltmain.sh index d11f1e02..0cb7f90d 100644 --- a/ltmain.sh +++ b/ltmain.sh @@ -31,7 +31,7 @@ PROGRAM=libtool PACKAGE=libtool -VERSION="2.4.6 Debian-2.4.6-11" +VERSION="2.4.6 Debian-2.4.6-14" package_revision=2.4.6 @@ -387,7 +387,7 @@ EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # -# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name +# debug_cmd='echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: @@ -2141,7 +2141,7 @@ include the following information: compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) - version: $progname $scriptversion Debian-2.4.6-11 + version: $progname $scriptversion Debian-2.4.6-14 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` @@ -7368,10 +7368,12 @@ func_mode_link () # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer # -fuse-ld=* Linker select flags for GCC + # -static-* direct GCC to link specific libraries statically + # -fcilkplus Cilk Plus language extension features for C/C++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ - -specs=*|-fsanitize=*|-fuse-ld=*) + -specs=*|-fsanitize=*|-fuse-ld=*|-static-*|-fcilkplus) func_quote_for_eval "$arg" arg=$func_quote_for_eval_result func_append compile_command " $arg" diff --git a/m4/gettext.m4 b/m4/gettext.m4 new file mode 100644 index 00000000..b5ce322f --- /dev/null +++ b/m4/gettext.m4 @@ -0,0 +1,417 @@ +# gettext.m4 serial 58 (gettext-0.16) +dnl Copyright (C) 1995-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2006. + +dnl Macro to add for using GNU gettext. + +dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). +dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The +dnl default (if it is not specified or empty) is 'no-libtool'. +dnl INTLSYMBOL should be 'external' for packages with no intl directory, +dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. +dnl If INTLSYMBOL is 'use-libtool', then a libtool library +dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, +dnl depending on --{enable,disable}-{shared,static} and on the presence of +dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library +dnl $(top_builddir)/intl/libintl.a will be created. +dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext +dnl implementations (in libc or libintl) without the ngettext() function +dnl will be ignored. If NEEDSYMBOL is specified and is +dnl 'need-formatstring-macros', then GNU gettext implementations that don't +dnl support the ISO C 99 formatstring macros will be ignored. +dnl INTLDIR is used to find the intl libraries. If empty, +dnl the value `$(top_builddir)/intl/' is used. +dnl +dnl The result of the configuration is one of three cases: +dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled +dnl and used. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 2) GNU gettext has been found in the system's C library. +dnl Catalog format: GNU --> install in $(datadir) +dnl Catalog extension: .mo after installation, .gmo in source tree +dnl 3) No internationalization, always use English msgid. +dnl Catalog format: none +dnl Catalog extension: none +dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. +dnl The use of .gmo is historical (it was needed to avoid overwriting the +dnl GNU format catalogs when building on a platform with an X/Open gettext), +dnl but we keep it in order not to force irrelevant filename changes on the +dnl maintainers. +dnl +AC_DEFUN([AM_GNU_GETTEXT], +[ + dnl Argument checking. + ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , + [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT +])])])])]) + ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , + [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT +])])])]) + define([gt_included_intl], + ifelse([$1], [external], + ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]), + [yes])) + define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], [])) + gt_NEEDS_INIT + AM_GNU_GETTEXT_NEED([$2]) + + AC_REQUIRE([AM_PO_SUBDIRS])dnl + ifelse(gt_included_intl, yes, [ + AC_REQUIRE([AM_INTL_SUBDIR])dnl + ]) + + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Sometimes libintl requires libiconv, so first search for libiconv. + dnl Ideally we would do this search only after the + dnl if test "$USE_NLS" = "yes"; then + dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT + dnl the configure script would need to contain the same shell code + dnl again, outside any 'if'. There are two solutions: + dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. + dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. + dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not + dnl documented, we avoid it. + ifelse(gt_included_intl, yes, , [ + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + ]) + + dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation. + gt_INTL_MACOSX + + dnl Set USE_NLS. + AC_REQUIRE([AM_NLS]) + + ifelse(gt_included_intl, yes, [ + BUILD_INCLUDED_LIBINTL=no + USE_INCLUDED_LIBINTL=no + ]) + LIBINTL= + LTLIBINTL= + POSUB= + + dnl Add a version number to the cache macros. + case " $gt_needs " in + *" need-formatstring-macros "*) gt_api_version=3 ;; + *" need-ngettext "*) gt_api_version=2 ;; + *) gt_api_version=1 ;; + esac + gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc" + gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl" + + dnl If we use NLS figure out what method + if test "$USE_NLS" = "yes"; then + gt_use_preinstalled_gnugettext=no + ifelse(gt_included_intl, yes, [ + AC_MSG_CHECKING([whether included gettext is requested]) + AC_ARG_WITH(included-gettext, + [ --with-included-gettext use the GNU gettext library included here], + nls_cv_force_use_gnu_gettext=$withval, + nls_cv_force_use_gnu_gettext=no) + AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) + + nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" + if test "$nls_cv_force_use_gnu_gettext" != "yes"; then + ]) + dnl User does not insist on using GNU NLS library. Figure out what + dnl to use. If GNU gettext is available we use this. Else we have + dnl to fall back to GNU NLS library. + + if test $gt_api_version -ge 3; then + gt_revision_test_code='[[ +#ifndef __GNU_GETTEXT_SUPPORTED_REVISION +#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) +#endif +typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; +]]' + else + gt_revision_test_code= + fi + if test $gt_api_version -ge 2; then + gt_expression_test_code=' + * ngettext ("", "", 0)' + else + gt_expression_test_code= + fi + + AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc], + [AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern int *_nl_domain_bindings;], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings], + [eval "$gt_func_gnugettext_libc=yes"], + [eval "$gt_func_gnugettext_libc=no"])]) + + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then + dnl Sometimes libintl requires libiconv, so first search for libiconv. + ifelse(gt_included_intl, yes, , [ + AM_ICONV_LINK + ]) + dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL + dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) + dnl because that would add "-liconv" to LIBINTL and LTLIBINTL + dnl even if libiconv doesn't exist. + AC_LIB_LINKFLAGS_BODY([intl]) + AC_CACHE_CHECK([for GNU gettext in libintl], + [$gt_func_gnugettext_libintl], + [gt_save_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $INCINTL" + gt_save_LIBS="$LIBS" + LIBS="$LIBS $LIBINTL" + dnl Now see whether libintl exists and does not depend on libiconv. + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [eval "$gt_func_gnugettext_libintl=yes"], + [eval "$gt_func_gnugettext_libintl=no"]) + dnl Now see whether libintl exists and depends on libiconv. + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +$gt_revision_test_code +extern int _nl_msg_cat_cntr; +extern +#ifdef __cplusplus +"C" +#endif +const char *_nl_expand_alias (const char *);], + [bindtextdomain ("", ""); +return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")], + [LIBINTL="$LIBINTL $LIBICONV" + LTLIBINTL="$LTLIBINTL $LTLIBICONV" + eval "$gt_func_gnugettext_libintl=yes" + ]) + fi + CPPFLAGS="$gt_save_CPPFLAGS" + LIBS="$gt_save_LIBS"]) + fi + + dnl If an already present or preinstalled GNU gettext() is found, + dnl use it. But if this macro is used in GNU gettext, and GNU + dnl gettext is already preinstalled in libintl, we update this + dnl libintl. (Cf. the install rule in intl/Makefile.in.) + if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \ + || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \ + && test "$PACKAGE" != gettext-runtime \ + && test "$PACKAGE" != gettext-tools; }; then + gt_use_preinstalled_gnugettext=yes + else + dnl Reset the values set by searching for libintl. + LIBINTL= + LTLIBINTL= + INCINTL= + fi + + ifelse(gt_included_intl, yes, [ + if test "$gt_use_preinstalled_gnugettext" != "yes"; then + dnl GNU gettext is not found in the C library. + dnl Fall back on included GNU gettext library. + nls_cv_use_gnu_gettext=yes + fi + fi + + if test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions used to generate GNU NLS library. + BUILD_INCLUDED_LIBINTL=yes + USE_INCLUDED_LIBINTL=yes + LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD" + LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD" + LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` + fi + + CATOBJEXT= + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Mark actions to use GNU gettext tools. + CATOBJEXT=.gmo + fi + ]) + + if test -n "$INTL_MACOSX_LIBS"; then + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + dnl Some extra flags are needed during linking. + LIBINTL="$LIBINTL $INTL_MACOSX_LIBS" + LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS" + fi + fi + + if test "$gt_use_preinstalled_gnugettext" = "yes" \ + || test "$nls_cv_use_gnu_gettext" = "yes"; then + AC_DEFINE(ENABLE_NLS, 1, + [Define to 1 if translation of program messages to the user's native language + is requested.]) + else + USE_NLS=no + fi + fi + + AC_MSG_CHECKING([whether to use NLS]) + AC_MSG_RESULT([$USE_NLS]) + if test "$USE_NLS" = "yes"; then + AC_MSG_CHECKING([where the gettext function comes from]) + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + gt_source="external libintl" + else + gt_source="libc" + fi + else + gt_source="included intl directory" + fi + AC_MSG_RESULT([$gt_source]) + fi + + if test "$USE_NLS" = "yes"; then + + if test "$gt_use_preinstalled_gnugettext" = "yes"; then + if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then + AC_MSG_CHECKING([how to link with libintl]) + AC_MSG_RESULT([$LIBINTL]) + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) + fi + + dnl For backward compatibility. Some packages may be using this. + AC_DEFINE(HAVE_GETTEXT, 1, + [Define if the GNU gettext() function is already present or preinstalled.]) + AC_DEFINE(HAVE_DCGETTEXT, 1, + [Define if the GNU dcgettext() function is already present or preinstalled.]) + fi + + dnl We need to process the po/ directory. + POSUB=po + fi + + ifelse(gt_included_intl, yes, [ + dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL + dnl to 'yes' because some of the testsuite requires it. + if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then + BUILD_INCLUDED_LIBINTL=yes + fi + + dnl Make all variables we use known to autoconf. + AC_SUBST(BUILD_INCLUDED_LIBINTL) + AC_SUBST(USE_INCLUDED_LIBINTL) + AC_SUBST(CATOBJEXT) + + dnl For backward compatibility. Some configure.ins may be using this. + nls_cv_header_intl= + nls_cv_header_libgt= + + dnl For backward compatibility. Some Makefiles may be using this. + DATADIRNAME=share + AC_SUBST(DATADIRNAME) + + dnl For backward compatibility. Some Makefiles may be using this. + INSTOBJEXT=.mo + AC_SUBST(INSTOBJEXT) + + dnl For backward compatibility. Some Makefiles may be using this. + GENCAT=gencat + AC_SUBST(GENCAT) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLOBJS= + if test "$USE_INCLUDED_LIBINTL" = yes; then + INTLOBJS="\$(GETTOBJS)" + fi + AC_SUBST(INTLOBJS) + + dnl Enable libtool support if the surrounding package wishes it. + INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix + AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) + ]) + + dnl For backward compatibility. Some Makefiles may be using this. + INTLLIBS="$LIBINTL" + AC_SUBST(INTLLIBS) + + dnl Make all documented variables known to autoconf. + AC_SUBST(LIBINTL) + AC_SUBST(LTLIBINTL) + AC_SUBST(POSUB) +]) + + +dnl Checks for special options needed on MacOS X. +dnl Defines INTL_MACOSX_LIBS. +AC_DEFUN([gt_INTL_MACOSX], +[ + dnl Check for API introduced in MacOS X 10.2. + AC_CACHE_CHECK([for CFPreferencesCopyAppValue], + gt_cv_func_CFPreferencesCopyAppValue, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include ], + [CFPreferencesCopyAppValue(NULL, NULL)], + [gt_cv_func_CFPreferencesCopyAppValue=yes], + [gt_cv_func_CFPreferencesCopyAppValue=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then + AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1, + [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.]) + fi + dnl Check for API introduced in MacOS X 10.3. + AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent, + [gt_save_LIBS="$LIBS" + LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation" + AC_TRY_LINK([#include ], [CFLocaleCopyCurrent();], + [gt_cv_func_CFLocaleCopyCurrent=yes], + [gt_cv_func_CFLocaleCopyCurrent=no]) + LIBS="$gt_save_LIBS"]) + if test $gt_cv_func_CFLocaleCopyCurrent = yes; then + AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1, + [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.]) + fi + INTL_MACOSX_LIBS= + if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then + INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation" + fi + AC_SUBST([INTL_MACOSX_LIBS]) +]) + + +dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized. +m4_define([gt_NEEDS_INIT], +[ + m4_divert_text([DEFAULTS], [gt_needs=]) + m4_define([gt_NEEDS_INIT], []) +]) + + +dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL]) +AC_DEFUN([AM_GNU_GETTEXT_NEED], +[ + m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"]) +]) + + +dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) +AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) diff --git a/m4/iconv.m4 b/m4/iconv.m4 new file mode 100644 index 00000000..654c4158 --- /dev/null +++ b/m4/iconv.m4 @@ -0,0 +1,101 @@ +# iconv.m4 serial AM4 (gettext-0.11.3) +dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], +[ + dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([iconv]) +]) + +AC_DEFUN([AM_ICONV_LINK], +[ + dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and + dnl those with the standalone portable GNU libiconv installed). + + dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV + dnl accordingly. + AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) + + dnl Add $INCICONV to CPPFLAGS before performing the following checks, + dnl because if the user has installed libiconv and not disabled its use + dnl via --without-libiconv-prefix, he wants to use it. The first + dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. + am_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) + + AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ + am_cv_func_iconv="no, consider installing GNU libiconv" + am_cv_lib_iconv=no + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_func_iconv=yes) + if test "$am_cv_func_iconv" != yes; then + am_save_LIBS="$LIBS" + LIBS="$LIBS $LIBICONV" + AC_TRY_LINK([#include +#include ], + [iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd);], + am_cv_lib_iconv=yes + am_cv_func_iconv=yes) + LIBS="$am_save_LIBS" + fi + ]) + if test "$am_cv_func_iconv" = yes; then + AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) + fi + if test "$am_cv_lib_iconv" = yes; then + AC_MSG_CHECKING([how to link with libiconv]) + AC_MSG_RESULT([$LIBICONV]) + else + dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV + dnl either. + CPPFLAGS="$am_save_CPPFLAGS" + LIBICONV= + LTLIBICONV= + fi + AC_SUBST(LIBICONV) + AC_SUBST(LTLIBICONV) +]) + +AC_DEFUN([AM_ICONV], +[ + AM_ICONV_LINK + if test "$am_cv_func_iconv" = yes; then + AC_MSG_CHECKING([for iconv declaration]) + AC_CACHE_VAL(am_cv_proto_iconv, [ + AC_TRY_COMPILE([ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) + am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` + AC_MSG_RESULT([$]{ac_t:- + }[$]am_cv_proto_iconv) + AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, + [Define as const if the declaration of iconv() needs const.]) + fi +]) diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4 new file mode 100644 index 00000000..96c4e2c3 --- /dev/null +++ b/m4/lib-ld.m4 @@ -0,0 +1,110 @@ +# lib-ld.m4 serial 3 (gettext-0.13) +dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl Subroutines of libtool.m4, +dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision +dnl with libtool.m4. + +dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. +AC_DEFUN([AC_LIB_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +case `$LD -v 2>&1 conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]* | [A-Za-z]:[\\/]*)] + [re_direlt='/[^/][^/]*/\.\./'] + # Canonicalize the path of ld + ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(acl_cv_path_LD, +[if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" + for ac_dir in $PATH; do + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + acl_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in + *GNU* | *'with BFD'*) + test "$with_gnu_ld" != no && break ;; + *) + test "$with_gnu_ld" != yes && break ;; + esac + fi + done + IFS="$ac_save_ifs" +else + acl_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$acl_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_LIB_PROG_LD_GNU +]) diff --git a/m4/lib-link.m4 b/m4/lib-link.m4 new file mode 100644 index 00000000..f95b7ba8 --- /dev/null +++ b/m4/lib-link.m4 @@ -0,0 +1,644 @@ +# lib-link.m4 serial 9 (gettext-0.16) +dnl Copyright (C) 2001-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +AC_PREREQ(2.50) + +dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and +dnl augments the CPPFLAGS variable. +AC_DEFUN([AC_LIB_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + ac_cv_lib[]Name[]_libs="$LIB[]NAME" + ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" + ac_cv_lib[]Name[]_cppflags="$INC[]NAME" + ]) + LIB[]NAME="$ac_cv_lib[]Name[]_libs" + LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" + INC[]NAME="$ac_cv_lib[]Name[]_cppflags" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the + dnl results of this search when this library appears as a dependency. + HAVE_LIB[]NAME=yes + undefine([Name]) + undefine([NAME]) +]) + +dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) +dnl searches for libname and the libraries corresponding to explicit and +dnl implicit dependencies, together with the specified include files and +dnl the ability to compile and link the specified testcode. If found, it +dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and +dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and +dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs +dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. +AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], +[ + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + AC_REQUIRE([AC_LIB_RPATH]) + define([Name],[translit([$1],[./-], [___])]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + + dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME + dnl accordingly. + AC_LIB_LINKFLAGS_BODY([$1], [$2]) + + dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, + dnl because if the user has installed lib[]Name and not disabled its use + dnl via --without-lib[]Name-prefix, he wants to use it. + ac_save_CPPFLAGS="$CPPFLAGS" + AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) + + AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ + ac_save_LIBS="$LIBS" + LIBS="$LIBS $LIB[]NAME" + AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) + LIBS="$ac_save_LIBS" + ]) + if test "$ac_cv_lib[]Name" = yes; then + HAVE_LIB[]NAME=yes + AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) + AC_MSG_CHECKING([how to link with lib[]$1]) + AC_MSG_RESULT([$LIB[]NAME]) + else + HAVE_LIB[]NAME=no + dnl If $LIB[]NAME didn't lead to a usable library, we don't need + dnl $INC[]NAME either. + CPPFLAGS="$ac_save_CPPFLAGS" + LIB[]NAME= + LTLIB[]NAME= + fi + AC_SUBST([HAVE_LIB]NAME) + AC_SUBST([LIB]NAME) + AC_SUBST([LTLIB]NAME) + undefine([Name]) + undefine([NAME]) +]) + +dnl Determine the platform dependent parameters needed to use rpath: +dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, +dnl hardcode_direct, hardcode_minus_L. +AC_DEFUN([AC_LIB_RPATH], +[ + dnl Tell automake >= 1.10 to complain if config.rpath is missing. + m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])]) + AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS + AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld + AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host + AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir + AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ + CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ + ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh + . ./conftest.sh + rm -f ./conftest.sh + acl_cv_rpath=done + ]) + wl="$acl_cv_wl" + libext="$acl_cv_libext" + shlibext="$acl_cv_shlibext" + hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" + hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" + hardcode_direct="$acl_cv_hardcode_direct" + hardcode_minus_L="$acl_cv_hardcode_minus_L" + dnl Determine whether the user wants rpath handling at all. + AC_ARG_ENABLE(rpath, + [ --disable-rpath do not hardcode runtime library paths], + :, enable_rpath=yes) +]) + +dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and +dnl the libraries corresponding to explicit and implicit dependencies. +dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. +AC_DEFUN([AC_LIB_LINKFLAGS_BODY], +[ + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], + [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib$1-prefix], +[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib + --without-lib$1-prefix don't search for lib$1 in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + dnl Search the library and its dependencies in $additional_libdir and + dnl $LDFLAGS. Using breadth-first-seach. + LIB[]NAME= + LTLIB[]NAME= + INC[]NAME= + rpathdirs= + ltrpathdirs= + names_already_handled= + names_next_round='$1 $2' + while test -n "$names_next_round"; do + names_this_round="$names_next_round" + names_next_round= + for name in $names_this_round; do + already_handled= + for n in $names_already_handled; do + if test "$n" = "$name"; then + already_handled=yes + break + fi + done + if test -z "$already_handled"; then + names_already_handled="$names_already_handled $name" + dnl See if it was already located by an earlier AC_LIB_LINKFLAGS + dnl or AC_LIB_HAVE_LINKFLAGS call. + uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` + eval value=\"\$HAVE_LIB$uppername\" + if test -n "$value"; then + if test "$value" = yes; then + eval value=\"\$LIB$uppername\" + test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" + eval value=\"\$LTLIB$uppername\" + test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" + else + dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined + dnl that this library doesn't exist. So just drop it. + : + fi + else + dnl Search the library lib$name in $additional_libdir and $LDFLAGS + dnl and the already constructed $LIBNAME/$LTLIBNAME. + found_dir= + found_la= + found_so= + found_a= + if test $use_additional = yes; then + if test -n "$shlibext" \ + && { test -f "$additional_libdir/lib$name.$shlibext" \ + || { test "$shlibext" = dll \ + && test -f "$additional_libdir/lib$name.dll.a"; }; }; then + found_dir="$additional_libdir" + if test -f "$additional_libdir/lib$name.$shlibext"; then + found_so="$additional_libdir/lib$name.$shlibext" + else + found_so="$additional_libdir/lib$name.dll.a" + fi + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + else + if test -f "$additional_libdir/lib$name.$libext"; then + found_dir="$additional_libdir" + found_a="$additional_libdir/lib$name.$libext" + if test -f "$additional_libdir/lib$name.la"; then + found_la="$additional_libdir/lib$name.la" + fi + fi + fi + fi + if test "X$found_dir" = "X"; then + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + case "$x" in + -L*) + dir=`echo "X$x" | sed -e 's/^X-L//'` + if test -n "$shlibext" \ + && { test -f "$dir/lib$name.$shlibext" \ + || { test "$shlibext" = dll \ + && test -f "$dir/lib$name.dll.a"; }; }; then + found_dir="$dir" + if test -f "$dir/lib$name.$shlibext"; then + found_so="$dir/lib$name.$shlibext" + else + found_so="$dir/lib$name.dll.a" + fi + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + else + if test -f "$dir/lib$name.$libext"; then + found_dir="$dir" + found_a="$dir/lib$name.$libext" + if test -f "$dir/lib$name.la"; then + found_la="$dir/lib$name.la" + fi + fi + fi + ;; + esac + if test "X$found_dir" != "X"; then + break + fi + done + fi + if test "X$found_dir" != "X"; then + dnl Found the library. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" + if test "X$found_so" != "X"; then + dnl Linking with a shared library. We attempt to hardcode its + dnl directory into the executable's runpath, unless it's the + dnl standard /usr/lib. + if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/$acl_libdirstem"; then + dnl No hardcoding is needed. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $found_dir" + fi + dnl The hardcoding into $LIBNAME is system dependent. + if test "$hardcode_direct" = yes; then + dnl Using DIR/libNAME.so during linking hardcodes DIR into the + dnl resulting binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode DIR into the resulting + dnl binary. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $found_dir" + fi + else + dnl Rely on "-L$found_dir". + dnl But don't add it if it's already contained in the LDFLAGS + dnl or the already constructed $LIBNAME + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$found_dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" + fi + if test "$hardcode_minus_L" != no; then + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" + else + dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH + dnl here, because this doesn't fit in flags passed to the + dnl compiler. So give up. No hardcoding. This affects only + dnl very old systems. + dnl FIXME: Not sure whether we should use + dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" + dnl here. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + fi + fi + fi + fi + else + if test "X$found_a" != "X"; then + dnl Linking with a static library. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" + else + dnl We shouldn't come here, but anyway it's good to have a + dnl fallback. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" + fi + fi + dnl Assume the include files are nearby. + additional_includedir= + case "$found_dir" in + */$acl_libdirstem | */$acl_libdirstem/) + basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'` + additional_includedir="$basedir/include" + ;; + esac + if test "X$additional_includedir" != "X"; then + dnl Potentially add $additional_includedir to $INCNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's /usr/local/include and we are using GCC on Linux, + dnl 3. if it's already present in $CPPFLAGS or the already + dnl constructed $INCNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + for x in $CPPFLAGS $INC[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $INCNAME. + INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" + fi + fi + fi + fi + fi + dnl Look for dependencies. + if test -n "$found_la"; then + dnl Read the .la file. It defines the variables + dnl dlname, library_names, old_library, dependency_libs, current, + dnl age, revision, installed, dlopen, dlpreopen, libdir. + save_libdir="$libdir" + case "$found_la" in + */* | *\\*) . "$found_la" ;; + *) . "./$found_la" ;; + esac + libdir="$save_libdir" + dnl We use only dependency_libs. + for dep in $dependency_libs; do + case "$dep" in + -L*) + additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` + dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's /usr/local/lib and we are using GCC on Linux, + dnl 3. if it's already present in $LDFLAGS or the already + dnl constructed $LIBNAME, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + haveit= + for x in $LDFLAGS $LIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LIBNAME. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" + fi + fi + haveit= + for x in $LDFLAGS $LTLIB[]NAME; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LTLIBNAME. + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" + fi + fi + fi + fi + ;; + -R*) + dir=`echo "X$dep" | sed -e 's/^X-R//'` + if test "$enable_rpath" != no; then + dnl Potentially add DIR to rpathdirs. + dnl The rpathdirs will be appended to $LIBNAME at the end. + haveit= + for x in $rpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + rpathdirs="$rpathdirs $dir" + fi + dnl Potentially add DIR to ltrpathdirs. + dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. + haveit= + for x in $ltrpathdirs; do + if test "X$x" = "X$dir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + ltrpathdirs="$ltrpathdirs $dir" + fi + fi + ;; + -l*) + dnl Handle this in the next round. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` + ;; + *.la) + dnl Handle this in the next round. Throw away the .la's + dnl directory; it is already contained in a preceding -L + dnl option. + names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` + ;; + *) + dnl Most likely an immediate library name. + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" + ;; + esac + done + fi + else + dnl Didn't find the library; assume it is in the system directories + dnl known to the linker and runtime loader. (All the system + dnl directories known to the linker should also be known to the + dnl runtime loader, otherwise the system is severely misconfigured.) + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" + fi + fi + fi + done + done + if test "X$rpathdirs" != "X"; then + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user must + dnl pass all path elements in one option. We can arrange that for a + dnl single library, but not when more than one $LIBNAMEs are used. + alldirs= + for found_dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" + done + dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + else + dnl The -rpath options are cumulative. + for found_dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$found_dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" + done + fi + fi + if test "X$ltrpathdirs" != "X"; then + dnl When using libtool, the option that works for both libraries and + dnl executables is -R. The -R options are cumulative. + for found_dir in $ltrpathdirs; do + LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" + done + fi +]) + +dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, +dnl unless already present in VAR. +dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes +dnl contains two or three consecutive elements that belong together. +AC_DEFUN([AC_LIB_APPENDTOVAR], +[ + for element in [$2]; do + haveit= + for x in $[$1]; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X$element"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + [$1]="${[$1]}${[$1]:+ }$element" + fi + done +]) + +dnl For those cases where a variable contains several -L and -l options +dnl referring to unknown libraries and directories, this macro determines the +dnl necessary additional linker options for the runtime path. +dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL]) +dnl sets LDADDVAR to linker options needed together with LIBSVALUE. +dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed, +dnl otherwise linking without libtool is assumed. +AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS], +[ + AC_REQUIRE([AC_LIB_RPATH]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + $1= + if test "$enable_rpath" != no; then + if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then + dnl Use an explicit option to hardcode directories into the resulting + dnl binary. + rpathdirs= + next= + for opt in $2; do + if test -n "$next"; then + dir="$next" + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= + else + case $opt in + -L) next=yes ;; + -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'` + dnl No need to hardcode the standard /usr/lib. + if test "X$dir" != "X/usr/$acl_libdirstem"; then + rpathdirs="$rpathdirs $dir" + fi + next= ;; + *) next= ;; + esac + fi + done + if test "X$rpathdirs" != "X"; then + if test -n ""$3""; then + dnl libtool is used for linking. Use -R options. + for dir in $rpathdirs; do + $1="${$1}${$1:+ }-R$dir" + done + else + dnl The linker is used for linking directly. + if test -n "$hardcode_libdir_separator"; then + dnl Weird platform: only the last -rpath option counts, the user + dnl must pass all path elements in one option. + alldirs= + for dir in $rpathdirs; do + alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$dir" + done + acl_save_libdir="$libdir" + libdir="$alldirs" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="$flag" + else + dnl The -rpath options are cumulative. + for dir in $rpathdirs; do + acl_save_libdir="$libdir" + libdir="$dir" + eval flag=\"$hardcode_libdir_flag_spec\" + libdir="$acl_save_libdir" + $1="${$1}${$1:+ }$flag" + done + fi + fi + fi + fi + fi + AC_SUBST([$1]) +]) diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4 new file mode 100644 index 00000000..a8684e17 --- /dev/null +++ b/m4/lib-prefix.m4 @@ -0,0 +1,185 @@ +# lib-prefix.m4 serial 5 (gettext-0.15) +dnl Copyright (C) 2001-2005 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. + +dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and +dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't +dnl require excessive bracketing. +ifdef([AC_HELP_STRING], +[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], +[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) + +dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed +dnl to access previously installed libraries. The basic assumption is that +dnl a user will want packages to use other packages he previously installed +dnl with the same --prefix option. +dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate +dnl libraries, but is otherwise very convenient. +AC_DEFUN([AC_LIB_PREFIX], +[ + AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) + AC_REQUIRE([AC_PROG_CC]) + AC_REQUIRE([AC_CANONICAL_HOST]) + AC_REQUIRE([AC_LIB_PREPARE_MULTILIB]) + AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) + dnl By default, look in $includedir and $libdir. + use_additional=yes + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + AC_LIB_ARG_WITH([lib-prefix], +[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib + --without-lib-prefix don't search for libraries in includedir and libdir], +[ + if test "X$withval" = "Xno"; then + use_additional=no + else + if test "X$withval" = "X"; then + AC_LIB_WITH_FINAL_PREFIX([ + eval additional_includedir=\"$includedir\" + eval additional_libdir=\"$libdir\" + ]) + else + additional_includedir="$withval/include" + additional_libdir="$withval/$acl_libdirstem" + fi + fi +]) + if test $use_additional = yes; then + dnl Potentially add $additional_includedir to $CPPFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/include, + dnl 2. if it's already present in $CPPFLAGS, + dnl 3. if it's /usr/local/include and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_includedir" != "X/usr/include"; then + haveit= + for x in $CPPFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-I$additional_includedir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_includedir" = "X/usr/local/include"; then + if test -n "$GCC"; then + case $host_os in + linux* | gnu* | k*bsd*-gnu) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_includedir"; then + dnl Really add $additional_includedir to $CPPFLAGS. + CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" + fi + fi + fi + fi + dnl Potentially add $additional_libdir to $LDFLAGS. + dnl But don't add it + dnl 1. if it's the standard /usr/lib, + dnl 2. if it's already present in $LDFLAGS, + dnl 3. if it's /usr/local/lib and we are using GCC on Linux, + dnl 4. if it doesn't exist as a directory. + if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then + haveit= + for x in $LDFLAGS; do + AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) + if test "X$x" = "X-L$additional_libdir"; then + haveit=yes + break + fi + done + if test -z "$haveit"; then + if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then + if test -n "$GCC"; then + case $host_os in + linux*) haveit=yes;; + esac + fi + fi + if test -z "$haveit"; then + if test -d "$additional_libdir"; then + dnl Really add $additional_libdir to $LDFLAGS. + LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" + fi + fi + fi + fi + fi +]) + +dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, +dnl acl_final_exec_prefix, containing the values to which $prefix and +dnl $exec_prefix will expand at the end of the configure script. +AC_DEFUN([AC_LIB_PREPARE_PREFIX], +[ + dnl Unfortunately, prefix and exec_prefix get only finally determined + dnl at the end of configure. + if test "X$prefix" = "XNONE"; then + acl_final_prefix="$ac_default_prefix" + else + acl_final_prefix="$prefix" + fi + if test "X$exec_prefix" = "XNONE"; then + acl_final_exec_prefix='${prefix}' + else + acl_final_exec_prefix="$exec_prefix" + fi + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the +dnl variables prefix and exec_prefix bound to the values they will have +dnl at the end of the configure script. +AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], +[ + acl_save_prefix="$prefix" + prefix="$acl_final_prefix" + acl_save_exec_prefix="$exec_prefix" + exec_prefix="$acl_final_exec_prefix" + $1 + exec_prefix="$acl_save_exec_prefix" + prefix="$acl_save_prefix" +]) + +dnl AC_LIB_PREPARE_MULTILIB creates a variable acl_libdirstem, containing +dnl the basename of the libdir, either "lib" or "lib64". +AC_DEFUN([AC_LIB_PREPARE_MULTILIB], +[ + dnl There is no formal standard regarding lib and lib64. The current + dnl practice is that on a system supporting 32-bit and 64-bit instruction + dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit + dnl libraries go under $prefix/lib. We determine the compiler's default + dnl mode by looking at the compiler's library search path. If at least + dnl of its elements ends in /lib64 or points to a directory whose absolute + dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the + dnl default, namely "lib". + acl_libdirstem=lib + searchpath=`(LC_ALL=C $CC -print-search-dirs) 2>/dev/null | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'` + if test -n "$searchpath"; then + acl_save_IFS="${IFS= }"; IFS=":" + for searchdir in $searchpath; do + if test -d "$searchdir"; then + case "$searchdir" in + */lib64/ | */lib64 ) acl_libdirstem=lib64 ;; + *) searchdir=`cd "$searchdir" && pwd` + case "$searchdir" in + */lib64 ) acl_libdirstem=lib64 ;; + esac ;; + esac + fi + done + IFS="$acl_save_IFS" + fi +]) diff --git a/m4/libtool.m4 b/m4/libtool.m4 new file mode 100644 index 00000000..a6d21ae5 --- /dev/null +++ b/m4/libtool.m4 @@ -0,0 +1,8394 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996-2001, 2003-2015 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +]) + +# serial 58 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_PREPARE_CC_BASENAME +# ----------------------- +m4_defun([_LT_PREPARE_CC_BASENAME], [ +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in @S|@*""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} +])# _LT_PREPARE_CC_BASENAME + + +# _LT_CC_BASENAME(CC) +# ------------------- +# It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, +# but that macro is also expanded into generated libtool script, which +# arranges for $SED and $ECHO to be set by different means. +m4_defun([_LT_CC_BASENAME], +[m4_require([_LT_PREPARE_CC_BASENAME])dnl +AC_REQUIRE([_LT_DECL_SED])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +func_cc_basename $1 +cc_basename=$func_cc_basename_result +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl +m4_require([_LT_CMD_TRUNCATE])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from 'configure', and 'config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# 'config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain=$ac_aux_dir/ltmain.sh +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the 'libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to 'config.status' so that its +# declaration there will have the same value as in 'configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags='_LT_TAGS'dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into 'config.status', and then the shell code to quote escape them in +# for loops in 'config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# '#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test 0 = "$lt_write_fail" && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +'$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test 0 != $[#] +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try '$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try '$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test yes = "$silent" && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +_LT_COPYING +_LT_LIBTOOL_TAGS + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +_LT_PREPARE_MUNGE_PATH_LIST +_LT_PREPARE_CC_BASENAME + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS=$save_LDFLAGS + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cr libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cr libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[[012]][[,.]]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test yes = "$lt_cv_ld_force_load"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + m4_if([$1], [CXX], +[ if test yes != "$lt_cv_apple_cc_single_mod"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script that will find a shell with a builtin +# printf (that we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case $ECHO in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], + [Search for dependent libraries within DIR (or the compiler's sysroot + if not specified).])], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([$with_sysroot]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and where our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cr} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test yes = "[$]$2"; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS +]) + +if test yes = "[$]$2"; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n "$lt_cv_sys_max_cmd_len"; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes = "$cross_compiling"; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen=shl_load], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen=dlopen], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links=nottested +if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test no = "$hard_links"; then + AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", + [Define to the sub-directory where libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then + + # We can hardcode non-existent directories. + if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && + test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || + test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_PREPARE_MUNGE_PATH_LIST +# --------------------------- +# Make sure func_munge_path_list() is defined correctly. +m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], +[[# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x@S|@2 in + x) + ;; + *:) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" + ;; + x:*) + eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" + ;; + *) + eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" + ;; + esac +} +]])# _LT_PREPARE_PATH_LIST + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +AC_ARG_VAR([LT_SYS_LIBRARY_PATH], +[User-defined run-time library search path.]) + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a[(]lib.so.V[)]' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsdelf*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='NetBSD ld.elf_so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], + [Detected run-time system search path for libraries]) +_LT_DECL([], [configure_time_lt_sys_library_path], [2], + [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program that can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$1"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac]) +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program that can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test no = "$withval" || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], +[if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi]) +rm -f conftest.i conftest2.i conftest.out]) +])# _LT_PATH_DD + + +# _LT_CMD_TRUNCATE +# ---------------- +# find command to truncate a binary pipe +m4_defun([_LT_CMD_TRUNCATE], +[m4_require([_LT_PATH_DD]) +AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], +[printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) +_LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], + [Command to truncate a binary pipe]) +])# _LT_CMD_TRUNCATE + + +# _LT_CHECK_MAGIC_METHOD +# ---------------------- +# how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_MAGIC_METHOD], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +AC_CACHE_CHECK([how to recognize dependent libraries], +lt_cv_deplibs_check_method, +[lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[[4-9]]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[[45]]*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi]) +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# _LT_DLL_DEF_P([FILE]) +# --------------------- +# True iff FILE is a Windows DLL '.def' file. +# Keep in sync with func_dll_def_p in the libtool script +AC_DEFUN([_LT_DLL_DEF_P], +[dnl + test DEF = "`$SED -n dnl + -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace + -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments + -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl + -e q dnl Only consider the first "real" line + $1`" dnl +])# _LT_DLL_DEF_P + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM=-lm) + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], + [Transform the output of nm into a list of symbols to manually relocate]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([nm_interface], [lt_cv_nm_interface], [1], + [The name lister interface]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64, which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd* | netbsdelf*-gnu) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test yes = "$GCC"; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + case $host_os in + os2*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # flang / f18. f95 an alias for gfortran or flang on Debian + flang* | f18* | f95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + linux* | k*bsd*-gnu | gnu*) + _LT_TAGVAR(link_all_deplibs, $1)=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS=$save_LDFLAGS]) + if test yes = "$lt_cv_irix_exported_symbol"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + _LT_TAGVAR(link_all_deplibs, $1)=no + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + _LT_TAGVAR(ld_shlibs, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd* | netbsdelf*-gnu) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + osf3*) + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting $shlibpath_var if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC=$CC +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report what library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC=$lt_save_CC +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test no != "$CXX" && + ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || + (test g++ != "$CXX"))); then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_caught_CXX_error"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test yes = "$GXX"; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test yes = "$GXX"; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test yes = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='$wl' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + ;; + esac + + if test yes = "$GXX"; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag=$shared_flag' $wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + # The "-G" linker flag allows undefined symbols. + _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared + # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + shrext_cmds=.dll + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test yes = "$GXX"; then + if test no = "$with_gnu_ld"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + if test yes = "$supports_anon_versioning"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test yes,no = "$GXX,$with_gnu_ld"; then + _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + else + # g++ 2.7 appears to require '-G' NOT '-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no + + _LT_TAGVAR(GCC, $1)=$GXX + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test yes != "$_lt_caught_CXX_error" + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case @S|@2 in + .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; + *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case $prev$p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test x-L = "$p" || + test x-R = "$p"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test no = "$pre_test_object_deps_done"; then + case $prev in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)=$prev$p + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test no = "$pre_test_object_deps_done"; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)=$p + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)=$p + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test no = "$F77"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_F77"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$G77 + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_F77" + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test no = "$FC"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test yes != "$_lt_disable_FC"; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu + _LT_TAGVAR(LD, $1)=$LD + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test yes != "$_lt_disable_FC" + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)=$LD +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to 'libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code=$lt_simple_compile_test_code + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f "$lt_ac_sed" && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test 10 -lt "$lt_ac_count" && break + lt_ac_count=`expr $lt_ac_count + 1` + if test "$lt_ac_count" -gt "$lt_ac_max"; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine what file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/m4/ltoptions.m4 b/m4/ltoptions.m4 new file mode 100644 index 00000000..94b08297 --- /dev/null +++ b/m4/ltoptions.m4 @@ -0,0 +1,437 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004-2005, 2007-2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 8 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option '$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl 'shared' nor 'disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], + [_LT_WITH_AIX_SONAME([aix])]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the 'shared' and +# 'disable-shared' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the 'static' and +# 'disable-static' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the 'fast-install' +# and 'disable-fast-install' LT_INIT options. +# DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the 'disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_AIX_SONAME([DEFAULT]) +# ---------------------------------- +# implement the --with-aix-soname flag, and support the `aix-soname=aix' +# and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT +# is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. +m4_define([_LT_WITH_AIX_SONAME], +[m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl +shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[[5-9]]*,yes) + AC_MSG_CHECKING([which variant of shared library versioning to provide]) + AC_ARG_WITH([aix-soname], + [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], + [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], + [case $withval in + aix|svr4|both) + ;; + *) + AC_MSG_ERROR([Unknown argument to --with-aix-soname]) + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname], + [AC_CACHE_VAL([lt_cv_with_aix_soname], + [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) + with_aix_soname=$lt_cv_with_aix_soname]) + AC_MSG_RESULT([$with_aix_soname]) + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + +_LT_DECL([], [shared_archive_member_spec], [0], + [Shared archive member basename, for filename based shared library versioning on AIX])dnl +])# _LT_WITH_AIX_SONAME + +LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) +LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the 'pic-only' and 'no-pic' +# LT_INIT options. +# MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac], + [pic_mode=m4_default([$1], [default])]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the 'pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/m4/ltsugar.m4 b/m4/ltsugar.m4 new file mode 100644 index 00000000..48bc9344 --- /dev/null +++ b/m4/ltsugar.m4 @@ -0,0 +1,124 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007-2008, 2011-2015 Free Software +# Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59, which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/m4/ltversion.m4 b/m4/ltversion.m4 new file mode 100644 index 00000000..fa04b52a --- /dev/null +++ b/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004, 2011-2015 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 4179 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.6]) +m4_define([LT_PACKAGE_REVISION], [2.4.6]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.6' +macro_revision='2.4.6' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/m4/lt~obsolete.m4 b/m4/lt~obsolete.m4 new file mode 100644 index 00000000..c6b26f88 --- /dev/null +++ b/m4/lt~obsolete.m4 @@ -0,0 +1,99 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004-2005, 2007, 2009, 2011-2015 Free Software +# Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/m4/nls.m4 b/m4/nls.m4 new file mode 100644 index 00000000..7967cc2f --- /dev/null +++ b/m4/nls.m4 @@ -0,0 +1,31 @@ +# nls.m4 serial 3 (gettext-0.15) +dnl Copyright (C) 1995-2003, 2005-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +AC_DEFUN([AM_NLS], +[ + AC_MSG_CHECKING([whether NLS is requested]) + dnl Default is enabled NLS + AC_ARG_ENABLE(nls, + [ --disable-nls do not use Native Language Support], + USE_NLS=$enableval, USE_NLS=yes) + AC_MSG_RESULT($USE_NLS) + AC_SUBST(USE_NLS) +]) diff --git a/m4/po.m4 b/m4/po.m4 new file mode 100644 index 00000000..00133ef3 --- /dev/null +++ b/m4/po.m4 @@ -0,0 +1,428 @@ +# po.m4 serial 13 (gettext-0.15) +dnl Copyright (C) 1995-2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. +dnl +dnl This file can can be used in projects which are not available under +dnl the GNU General Public License or the GNU Library General Public +dnl License but which still want to provide support for the GNU gettext +dnl functionality. +dnl Please note that the actual code of the GNU gettext library is covered +dnl by the GNU Library General Public License, and the rest of the GNU +dnl gettext package package is covered by the GNU General Public License. +dnl They are *not* in the public domain. + +dnl Authors: +dnl Ulrich Drepper , 1995-2000. +dnl Bruno Haible , 2000-2003. + +AC_PREREQ(2.50) + +dnl Checks for all prerequisites of the po subdirectory. +AC_DEFUN([AM_PO_SUBDIRS], +[ + AC_REQUIRE([AC_PROG_MAKE_SET])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl + AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake + AC_REQUIRE([AM_NLS])dnl + + dnl Perform the following tests also if --disable-nls has been given, + dnl because they are needed for "make dist" to work. + + dnl Search for GNU msgfmt in the PATH. + dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. + dnl The second test excludes FreeBSD msgfmt. + AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, + [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) + + dnl Test whether it is GNU msgfmt >= 0.15. +changequote(,)dnl + case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;; + *) MSGFMT_015=$MSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([MSGFMT_015]) +changequote(,)dnl + case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;; + *) GMSGFMT_015=$GMSGFMT ;; + esac +changequote([,])dnl + AC_SUBST([GMSGFMT_015]) + + dnl Search for GNU xgettext 0.12 or newer in the PATH. + dnl The first test excludes Solaris xgettext and early GNU xgettext versions. + dnl The second test excludes FreeBSD xgettext. + AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, + [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 && + (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], + :) + dnl Remove leftover from FreeBSD xgettext call. + rm -f messages.po + + dnl Test whether it is GNU xgettext >= 0.15. +changequote(,)dnl + case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in + '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;; + *) XGETTEXT_015=$XGETTEXT ;; + esac +changequote([,])dnl + AC_SUBST([XGETTEXT_015]) + + dnl Search for GNU msgmerge 0.11 or newer in the PATH. + AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, + [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :) + + dnl Installation directories. + dnl Autoconf >= 2.60 defines localedir. For older versions of autoconf, we + dnl have to define it here, so that it can be used in po/Makefile. + test -n "$localedir" || localedir='${datadir}/locale' + AC_SUBST([localedir]) + + AC_CONFIG_COMMANDS([po-directories], [[ + for ac_file in $CONFIG_FILES; do + # Support "outfile[:infile[:infile...]]" + case "$ac_file" in + *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; + esac + # PO directories have a Makefile.in generated from Makefile.in.in. + case "$ac_file" in */Makefile.in) + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + # Treat a directory as a PO directory if and only if it has a + # POTFILES.in file. This allows packages to have multiple PO + # directories under different names or in different locations. + if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then + rm -f "$ac_dir/POTFILES" + test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" + cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" + POMAKEFILEDEPS="POTFILES.in" + # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend + # on $ac_dir but don't depend on user-specified configuration + # parameters. + if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then + # The LINGUAS file contains the set of available languages. + if test -n "$OBSOLETE_ALL_LINGUAS"; then + test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" + fi + ALL_LINGUAS_=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"` + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$ALL_LINGUAS_' + POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" + else + # The set of available languages was given in configure.in. + # Hide the ALL_LINGUAS assigment from automake < 1.5. + eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' + fi + # Compute POFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) + # Compute UPDATEPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) + # Compute DUMMYPOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) + # Compute GMOFILES + # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) + case "$ac_given_srcdir" in + .) srcdirpre= ;; + *) srcdirpre='$(srcdir)/' ;; + esac + POFILES= + UPDATEPOFILES= + DUMMYPOFILES= + GMOFILES= + for lang in $ALL_LINGUAS; do + POFILES="$POFILES $srcdirpre$lang.po" + UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" + DUMMYPOFILES="$DUMMYPOFILES $lang.nop" + GMOFILES="$GMOFILES $srcdirpre$lang.gmo" + done + # CATALOGS depends on both $ac_dir and the user's LINGUAS + # environment variable. + INST_LINGUAS= + if test -n "$ALL_LINGUAS"; then + for presentlang in $ALL_LINGUAS; do + useit=no + if test "%UNSET%" != "$LINGUAS"; then + desiredlanguages="$LINGUAS" + else + desiredlanguages="$ALL_LINGUAS" + fi + for desiredlang in $desiredlanguages; do + # Use the presentlang catalog if desiredlang is + # a. equal to presentlang, or + # b. a variant of presentlang (because in this case, + # presentlang can be used as a fallback for messages + # which are not translated in the desiredlang catalog). + case "$desiredlang" in + "$presentlang"*) useit=yes;; + esac + done + if test $useit = yes; then + INST_LINGUAS="$INST_LINGUAS $presentlang" + fi + done + fi + CATALOGS= + if test -n "$INST_LINGUAS"; then + for lang in $INST_LINGUAS; do + CATALOGS="$CATALOGS $lang.gmo" + done + fi + test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" + sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" + for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do + if test -f "$f"; then + case "$f" in + *.orig | *.bak | *~) ;; + *) cat "$f" >> "$ac_dir/Makefile" ;; + esac + fi + done + fi + ;; + esac + done]], + [# Capture the value of obsolete ALL_LINGUAS because we need it to compute + # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it + # from automake < 1.5. + eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' + # Capture the value of LINGUAS because we need it to compute CATALOGS. + LINGUAS="${LINGUAS-%UNSET%}" + ]) +]) + +dnl Postprocesses a Makefile in a directory containing PO files. +AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], +[ + # When this code is run, in config.status, two variables have already been + # set: + # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, + # - LINGUAS is the value of the environment variable LINGUAS at configure + # time. + +changequote(,)dnl + # Adjust a relative srcdir. + ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` + ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" + ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` + # In autoconf-2.13 it is called $ac_given_srcdir. + # In autoconf-2.50 it is called $srcdir. + test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" + case "$ac_given_srcdir" in + .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; + /*) top_srcdir="$ac_given_srcdir" ;; + *) top_srcdir="$ac_dots$ac_given_srcdir" ;; + esac + + # Find a way to echo strings without interpreting backslash. + if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='echo' + else + if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then + gt_echo='printf %s\n' + else + echo_func () { + cat < "$ac_file.tmp" + if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` + cat >> "$ac_file.tmp" < /dev/null; then + # Add dependencies that cannot be formulated as a simple suffix rule. + for lang in $ALL_LINGUAS; do + frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'` + cat >> "$ac_file.tmp" <> "$ac_file.tmp" <, 1996. + +AC_PREREQ(2.50) + +# Search path for a program which passes the given test. + +dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, +dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) +AC_DEFUN([AM_PATH_PROG_WITH_TEST], +[ +# Prepare PATH_SEPARATOR. +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conf$$.sh + echo "exit 0" >>conf$$.sh + chmod +x conf$$.sh + if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conf$$.sh +fi + +# Find out how to test for executable files. Don't use a zero-byte file, +# as systems may use methods other than mode bits to determine executability. +cat >conf$$.file <<_ASEOF +#! /bin/sh +exit 0 +_ASEOF +chmod +x conf$$.file +if test -x conf$$.file >/dev/null 2>&1; then + ac_executable_p="test -x" +else + ac_executable_p="test -f" +fi +rm -f conf$$.file + +# Extract the first word of "$2", so it can be a program name with args. +set dummy $2; ac_word=[$]2 +AC_MSG_CHECKING([for $ac_word]) +AC_CACHE_VAL(ac_cv_path_$1, +[case "[$]$1" in + [[\\/]]* | ?:[[\\/]]*) + ac_cv_path_$1="[$]$1" # Let the user override the test with a path. + ;; + *) + ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in ifelse([$5], , $PATH, [$5]); do + IFS="$ac_save_IFS" + test -z "$ac_dir" && ac_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then + echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD + if [$3]; then + ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" + break 2 + fi + fi + done + done + IFS="$ac_save_IFS" +dnl If no 4th arg is given, leave the cache variable unset, +dnl so AC_PATH_PROGS will keep looking. +ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" +])dnl + ;; +esac])dnl +$1="$ac_cv_path_$1" +if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then + AC_MSG_RESULT([$]$1) +else + AC_MSG_RESULT(no) +fi +AC_SUBST($1)dnl +]) diff --git a/man/Makefile.am b/man/Makefile.am index 8b64feba..e9cab28a 100644 --- a/man/Makefile.am +++ b/man/Makefile.am @@ -62,6 +62,7 @@ man_MANS += $(man_nopam) endif man_subids = \ + man1/getsubids.1 \ man1/newgidmap.1 \ man1/newuidmap.1 \ man5/subgid.5 \ @@ -80,6 +81,7 @@ man_XMANS = \ expiry.1.xml \ faillog.5.xml \ faillog.8.xml \ + getsubids.1.xml \ gpasswd.1.xml \ groupadd.8.xml \ groupdel.8.xml \ @@ -136,6 +138,8 @@ login_defs_v = \ FAKE_SHELL.xml \ FTMP_FILE.xml \ GID_MAX.xml \ + HMAC_CRYPTO_ALGO.xml \ + HOME_MODE.xml \ HUSHLOGIN_FILE.xml \ ISSUE_FILE.xml \ KILLCHAR.xml \ @@ -152,6 +156,7 @@ login_defs_v = \ MD5_CRYPT_ENAB.xml \ MOTD_FILE.xml \ NOLOGINS_FILE.xml \ + NONEXISTENT.xml \ OBSCURE_CHECKS_ENAB.xml \ PASS_ALWAYS_WARN.xml \ PASS_CHANGE_TRIES.xml \ diff --git a/man/Makefile.in b/man/Makefile.in index dd886fb6..3e4de032 100644 --- a/man/Makefile.in +++ b/man/Makefile.in @@ -94,8 +94,14 @@ host_triplet = @host@ @ENABLE_SUBIDS_FALSE@am__append_5 = $(man_subids) subdir = man ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -248,7 +254,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -277,9 +282,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -317,7 +327,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ @@ -398,6 +407,7 @@ man_nopam = \ man5/porttime.5 man_subids = \ + man1/getsubids.1 \ man1/newgidmap.1 \ man1/newuidmap.1 \ man5/subgid.5 \ @@ -412,6 +422,7 @@ man_XMANS = \ expiry.1.xml \ faillog.5.xml \ faillog.8.xml \ + getsubids.1.xml \ gpasswd.1.xml \ groupadd.8.xml \ groupdel.8.xml \ @@ -468,6 +479,8 @@ login_defs_v = \ FAKE_SHELL.xml \ FTMP_FILE.xml \ GID_MAX.xml \ + HMAC_CRYPTO_ALGO.xml \ + HOME_MODE.xml \ HUSHLOGIN_FILE.xml \ ISSUE_FILE.xml \ KILLCHAR.xml \ @@ -484,6 +497,7 @@ login_defs_v = \ MD5_CRYPT_ENAB.xml \ MOTD_FILE.xml \ NOLOGINS_FILE.xml \ + NONEXISTENT.xml \ OBSCURE_CHECKS_ENAB.xml \ PASS_ALWAYS_WARN.xml \ PASS_CHANGE_TRIES.xml \ diff --git a/man/chage.1.xml b/man/chage.1.xml index 1e4cc539..51fa4e36 100644 --- a/man/chage.1.xml +++ b/man/chage.1.xml @@ -1,32 +1,8 @@ LAST_DAY is set to + 0 the user is forced to change his password + on the next log on. @@ -118,6 +97,13 @@ contact the system administrator before being able to use the system again. + + For example the following can be used to set an account to expire + in 180 days: + + + chage -E $(date -d +180days +%Y-%m-%d) + Passing the number -1 as the EXPIRE_DATE will remove an account @@ -239,6 +225,18 @@ The chage program requires a shadow password file to be available. + + The chage program will report only the information from the shadow + password file. This implies that configuration from other sources + (e.g. LDAP or empty password hash field from the passwd file) that + affect the user's login will not be shown in the chage output. + + + The chage program will also not report any + inconsistency between the shadow and passwd files (e.g. missing x in + the passwd file). The pwck can be used to check + for this kind of inconsistencies. + The chage command is restricted to the root user, except for the option, which may be used by an unprivileged user to determine when their password or account is due diff --git a/man/chfn.1.xml b/man/chfn.1.xml index 153d67e7..af5ad87a 100644 --- a/man/chfn.1.xml +++ b/man/chfn.1.xml @@ -1,32 +1,8 @@ -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "CHFN" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "CHFN" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man1/groups.1 b/man/da/man1/groups.1 index 88d46b0b..48a9a332 100644 --- a/man/da/man1/groups.1 +++ b/man/da/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "GROUPS" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "GROUPS" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man1/id.1 b/man/da/man1/id.1 index 507f1810..3955ef74 100644 --- a/man/da/man1/id.1 +++ b/man/da/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "ID" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "ID" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man1/newgrp.1 b/man/da/man1/newgrp.1 index d9b5b625..9948981e 100644 --- a/man/da/man1/newgrp.1 +++ b/man/da/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "NEWGRP" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "NEWGRP" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man1/sg.1 b/man/da/man1/sg.1 index 417eb025..7e90c3cf 100644 --- a/man/da/man1/sg.1 +++ b/man/da/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "SG" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "SG" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man5/gshadow.5 b/man/da/man5/gshadow.5 index a5f7a438..eec1889b 100644 --- a/man/da/man5/gshadow.5 +++ b/man/da/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "GSHADOW" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "GSHADOW" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/groupdel.8 b/man/da/man8/groupdel.8 index 33012e03..39986277 100644 --- a/man/da/man8/groupdel.8 +++ b/man/da/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "GROUPDEL" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Kommandoer for systemh\(oandterin" +.TH "GROUPDEL" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Kommandoer for systemh\(oandterin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -44,6 +44,11 @@ The options which apply to the \fBgroupdel\fR command are: .PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +This option forces the removal of the group, even if there\*(Aqs some user having the group as the primary one\&. +.RE +.PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Vis hj\(aelpeteksten og afslut\&. diff --git a/man/da/man8/logoutd.8 b/man/da/man8/logoutd.8 index 7876fc2c..a079b7c3 100644 --- a/man/da/man8/logoutd.8 +++ b/man/da/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "LOGOUTD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Kommandoer for systemh\(oandterin" +.TH "LOGOUTD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Kommandoer for systemh\(oandterin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/nologin.8 b/man/da/man8/nologin.8 index 5aeca9d7..913e1682 100644 --- a/man/da/man8/nologin.8 +++ b/man/da/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "NOLOGIN" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Kommandoer for systemh\(oandterin" +.TH "NOLOGIN" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Kommandoer for systemh\(oandterin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/da/man8/vipw.8 b/man/da/man8/vipw.8 index c075b103..ffac8ded 100644 --- a/man/da/man8/vipw.8 +++ b/man/da/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Kommandoer for systemh\(oandtering -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Danish .\" -.TH "VIPW" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Kommandoer for systemh\(oandterin" +.TH "VIPW" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Kommandoer for systemh\(oandterin" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/Makefile.in b/man/de/Makefile.in index 46602dc9..2b07d0d1 100644 --- a/man/de/Makefile.in +++ b/man/de/Makefile.in @@ -91,8 +91,14 @@ host_triplet = @host@ @USE_PAM_TRUE@am__append_2 = $(man_nopam) subdir = man/de ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -184,7 +190,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -213,9 +218,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -253,7 +263,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/man/de/man1/chage.1 b/man/de/man1/chage.1 index 5c02f8bb..4d6994ca 100644 --- a/man/de/man1/chage.1 +++ b/man/de/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "CHAGE" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "CHAGE" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,13 +45,30 @@ command are: .PP \fB\-d\fR, \fB\-\-lastday\fR\ \&\fILAST_DAY\fR .RS 4 -Legt die Anzahl der Tage, gerechnet ab dem 1\&. Januar 1970, fest, seit denen das Passwort das letzte Mal gewechselt wurde\&. Das Datum kann auch im Format JJJJ\-MM\-TT (oder in dem Format, das in Ihrer Region verbreitet ist) angegeben werden\&. +Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. If the +\fILAST_DAY\fR +is set to +\fI0\fR +the user is forced to change his password on the next log on\&. .RE .PP \fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 Setzt das Datum oder die Anzahl der Tage seit dem 1\&. Januar 1970, ab dem auf das Benutzerkonto nicht mehr zugegriffen werden kann\&. Das Datum kann auch im Format JJJJ\-MM\-TT (oder in dem Format, das in Ihrer Region verbreitet ist) angegeben werden\&. Ein Benutzer, dessen Konto gesperrt ist, muss sich mit dem Systemadministrator in Verbindung setzen, ehe er sich wieder am System anmelden kann\&. .sp +For example the following can be used to set an account to expire in 180 days: +.sp +.if n \{\ +.RS 4 +.\} +.nf + chage \-E $(date \-d +180days +%Y\-%m\-%d) + +.fi +.if n \{\ +.RE +.\} +.sp Passing the number \fI\-1\fR as the @@ -137,6 +154,14 @@ The \fBchage\fR program requires a shadow password file to be available\&. .PP +The chage program will report only the information from the shadow password file\&. This implies that configuration from other sources (e\&.g\&. LDAP or empty password hash field from the passwd file) that affect the user\*(Aqs login will not be shown in the chage output\&. +.PP +The +\fBchage\fR +program will also not report any inconsistency between the shadow and passwd files (e\&.g\&. missing x in the passwd file)\&. The +\fBpwck\fR +can be used to check for this kind of inconsistencies\&. +.PP The \fBchage\fR command is restricted to the root user, except for the diff --git a/man/de/man1/chfn.1 b/man/de/man1/chfn.1 index ce155d38..0c64c4ab 100644 --- a/man/de/man1/chfn.1 +++ b/man/de/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "CHFN" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "CHFN" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/chsh.1 b/man/de/man1/chsh.1 index 3d410532..ce25dbf7 100644 --- a/man/de/man1/chsh.1 +++ b/man/de/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "CHSH" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "CHSH" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -59,7 +59,7 @@ directory\&. .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -Der Name der neuen Anmelde\-Shell des Benutzers\&. Falls dieses Feld leer gelassen wird, verwendet das System die Standard\-Anmelde\-Shell\&. +The name of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. .RE .PP If the diff --git a/man/de/man1/expiry.1 b/man/de/man1/expiry.1 index e0161e56..533d7344 100644 --- a/man/de/man1/expiry.1 +++ b/man/de/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "EXPIRY" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "EXPIRY" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/gpasswd.1 b/man/de/man1/gpasswd.1 index 4b13b351..626890e6 100644 --- a/man/de/man1/gpasswd.1 +++ b/man/de/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GPASSWD" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "GPASSWD" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -147,7 +147,9 @@ Damit wird der standardm\(:a\(ssige Verschl\(:usselungsalgorithmus, mit dem Pass It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -196,7 +198,7 @@ or .sp Je mehr Runden Sie definieren, umso schwieriger ist es, das Passwort mit sturem Durchprobieren (brute force) zu knacken; umso mehr Rechenleistung wird jedoch auch f\(:ur die Anmeldung eines Benutzers ben\(:otigt\&. .sp -Falls Sie nichts angeben, wird libc die Standardanzahl der Runden festlegen (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Die Werte m\(:ussen zwischen 1000\-999\&.999\&.999 liegen\&. .sp diff --git a/man/de/man1/groups.1 b/man/de/man1/groups.1 index 583d7828..d3bfa701 100644 --- a/man/de/man1/groups.1 +++ b/man/de/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GROUPS" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "GROUPS" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/id.1 b/man/de/man1/id.1 index 91b285d2..6563869c 100644 --- a/man/de/man1/id.1 +++ b/man/de/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "ID" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "ID" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/login.1 b/man/de/man1/login.1 index abc3b502..b59a95bb 100644 --- a/man/de/man1/login.1 +++ b/man/de/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "LOGIN" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "LOGIN" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -319,7 +319,9 @@ Sie sollten dies abschalten, wenn schon die Startdateien der Shell die Mails pr\ .PP \fBMAIL_DIR\fR (string) .RS 4 -Das Verzeichnis des Mail\-Spools\&. Diese Angabe wird ben\(:otigt, um die Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto ver\(:andert oder gel\(:oscht wurde\&. Falls nicht angegeben, wird ein Standard verwendet, der beim Kompilieren festgelegt wurde\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/de/man1/newgrp.1 b/man/de/man1/newgrp.1 index ffa6a27d..df9e573c 100644 --- a/man/de/man1/newgrp.1 +++ b/man/de/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "NEWGRP" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "NEWGRP" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/passwd.1 b/man/de/man1/passwd.1 index aababb34..10727a9c 100644 --- a/man/de/man1/passwd.1 +++ b/man/de/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "PASSWD" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "PASSWD" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -223,7 +223,9 @@ Damit wird der standardm\(:a\(ssige Verschl\(:usselungsalgorithmus, mit dem Pass It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -282,7 +284,7 @@ or .sp Je mehr Runden Sie definieren, umso schwieriger ist es, das Passwort mit sturem Durchprobieren (brute force) zu knacken; umso mehr Rechenleistung wird jedoch auch f\(:ur die Anmeldung eines Benutzers ben\(:otigt\&. .sp -Falls Sie nichts angeben, wird libc die Standardanzahl der Runden festlegen (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Die Werte m\(:ussen zwischen 1000\-999\&.999\&.999 liegen\&. .sp diff --git a/man/de/man1/sg.1 b/man/de/man1/sg.1 index be4db9be..1df115b5 100644 --- a/man/de/man1/sg.1 +++ b/man/de/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "SG" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "SG" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man1/su.1 b/man/de/man1/su.1 index 748b696b..9a1524e7 100644 --- a/man/de/man1/su.1 +++ b/man/de/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Dienstprogramme f\(:ur Benutzer -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "SU" "1" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dienstprogramme f\(:ur Benutzer" +.TH "SU" "1" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Dienstprogramme f\(:ur Benutzer" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -312,7 +312,9 @@ Sie sollten dies abschalten, wenn schon die Startdateien der Shell die Mails pr\ .PP \fBMAIL_DIR\fR (string) .RS 4 -Das Verzeichnis des Mail\-Spools\&. Diese Angabe wird ben\(:otigt, um die Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto ver\(:andert oder gel\(:oscht wurde\&. Falls nicht angegeben, wird ein Standard verwendet, der beim Kompilieren festgelegt wurde\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/de/man3/shadow.3 b/man/de/man3/shadow.3 index e221491d..47a7d525 100644 --- a/man/de/man3/shadow.3 +++ b/man/de/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Bibliotheksaufrufe -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "SHADOW" "3" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Bibliotheksaufrufe" +.TH "SHADOW" "3" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Bibliotheksaufrufe" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/faillog.5 b/man/de/man5/faillog.5 index 042ff706..8dec9878 100644 --- a/man/de/man5/faillog.5 +++ b/man/de/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "FAILLOG" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "FAILLOG" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/gshadow.5 b/man/de/man5/gshadow.5 index 06e64765..98b59a38 100644 --- a/man/de/man5/gshadow.5 +++ b/man/de/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GSHADOW" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "GSHADOW" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/limits.5 b/man/de/man5/limits.5 index 8fef7057..2cbb5b65 100644 --- a/man/de/man5/limits.5 +++ b/man/de/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "LIMITS" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "LIMITS" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/login.access.5 b/man/de/man5/login.access.5 index 9eedaf36..43f367d7 100644 --- a/man/de/man5/login.access.5 +++ b/man/de/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "LOGIN\&.ACCESS" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "LOGIN\&.ACCESS" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/login.defs.5 b/man/de/man5/login.defs.5 index fb6ee098..b4e337a3 100644 --- a/man/de/man5/login.defs.5 +++ b/man/de/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "LOGIN\&.DEFS" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "LOGIN\&.DEFS" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -126,7 +126,9 @@ Damit wird der standardm\(:a\(ssige Verschl\(:usselungsalgorithmus, mit dem Pass It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -223,6 +225,15 @@ The default value for \fBGID_MAX\fR) is 1000 (resp\&. 60000)\&. .RE .PP +\fBHMAC_CRYPTO_ALGO\fR (string) +.RS 4 +Used to select the HMAC cryptography algorithm that the pam_timestamp module is going to use to calculate the keyed\-hash message authentication code\&. +.sp +Note: Check +hmac(3) +to see the possible algorithms that are available in your system\&. +.RE +.PP \fBHOME_MODE\fR (number) .RS 4 The mode for new home directories\&. If not specified, the @@ -307,7 +318,9 @@ Sie sollten dies abschalten, wenn schon die Startdateien der Shell die Mails pr\ .PP \fBMAIL_DIR\fR (string) .RS 4 -Das Verzeichnis des Mail\-Spools\&. Diese Angabe wird ben\(:otigt, um die Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto ver\(:andert oder gel\(:oscht wurde\&. Falls nicht angegeben, wird ein Standard verwendet, der beim Kompilieren festgelegt wurde\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -373,6 +386,11 @@ Falls angegeben, eine Aufz\(:ahlung von Dateien, welche die bei der Anmeldung an Falls angegeben, der Name einer Datei, deren Existenz Anmeldungen au\(sser von Root verhindert\&. Der Inhalt der Datei sollte die Gr\(:unde enthalten, weshalb Anmeldungen untersagt sind\&. .RE .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBOBSCURE_CHECKS_ENAB\fR (boolean) .RS 4 Aktiviert zus\(:atzliche Tests bei der Ver\(:anderung eines Passworts\&. @@ -395,7 +413,7 @@ Die maximale Anzahl von Tagen, f\(:ur die ein Passwort verwendet werden darf\&. .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Die Mindestanzahl von Tagen, bevor ein Wechsel des Passworts zugelassen wird\&. Ein vorheriger Versuch, das Passwort zu \(:andern, wird abgelehnt\&. Falls nicht angegeben, wird \-1 angenommen (was zur Folge hat, dass diese Beschr\(:ankung abgeschaltet ist)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -443,7 +461,7 @@ or .sp Je mehr Runden Sie definieren, umso schwieriger ist es, das Passwort mit sturem Durchprobieren (brute force) zu knacken; umso mehr Rechenleistung wird jedoch auch f\(:ur die Anmeldung eines Benutzers ben\(:otigt\&. .sp -Falls Sie nichts angeben, wird libc die Standardanzahl der Runden festlegen (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Die Werte m\(:ussen zwischen 1000\-999\&.999\&.999 liegen\&. .sp diff --git a/man/de/man5/passwd.5 b/man/de/man5/passwd.5 index e1e0b229..9299f53d 100644 --- a/man/de/man5/passwd.5 +++ b/man/de/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "PASSWD" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "PASSWD" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -145,8 +145,8 @@ for details on how this string is interpreted\&. If the password field contains some string that is not a valid result of \fBcrypt\fR(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in the system by other means)\&. .PP -The comment field is used by various system utilities, such as -\fBfinger\fR(1)\&. +The comment field, also known as the gecos field, is used by various system utilities, such as +\fBfinger\fR(1)\&. The use of an ampersand here will be replaced by the capitalised login name when the field is used or displayed by such system utilities\&. .PP The home directory field provides the name of the initial working directory\&. The \fBlogin\fR diff --git a/man/de/man5/porttime.5 b/man/de/man5/porttime.5 index 88b06110..e909273f 100644 --- a/man/de/man5/porttime.5 +++ b/man/de/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "PORTTIME" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "PORTTIME" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man5/shadow.5 b/man/de/man5/shadow.5 index 45769af3..6b688d28 100644 --- a/man/de/man5/shadow.5 +++ b/man/de/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "SHADOW" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "SHADOW" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -61,7 +61,7 @@ If the password field contains some string that is not a valid result of .PP \fBDatum, an dem das Passwort das letzte Mal ge\(:andert wurde\fR .RS 4 -Das Datum, als das Passwort das letzte Mal ge\(:andert wurde, wird als Anzahl der Tage seit dem 1\&. Januar 1970 ausgedr\(:uckt\&. +The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp The value 0 has a special meaning, which is that the user should change her password the next time she will log in the system\&. .sp @@ -72,7 +72,7 @@ Ein leeres Feld bedeutet, dass das Altern des Passworts abgeschaltet ist\&. .RS 4 Das Mindestalter des Passworts ist die Anzahl von Tagen, die ein Benutzer warten muss, bevor er sein Passwort wieder \(:andern darf\&. .sp -Eine leeres Feld oder der Wert 0 bedeuten, dass es kein Mindestalter eines Passworts gibt\&. +An empty field and value 0 mean that there is no minimum password age\&. .RE .PP \fBH\(:ochstalter des Passworts\fR @@ -97,14 +97,14 @@ Ein leeres Feld oder der Wert 0 bedeutet, dass es keine Vorwarnung gibt\&. .RS 4 Die Anzahl von Tagen, f\(:ur die ein Benutzer sein Passwort, nachdem es abgelaufen ist (vergleiche oben das H\(:ochstalter des Passworts), noch verwenden kann (und w\(:ahrend des n\(:achsten Logins \(:andern muss)\&. .sp -Nachdem das Passwort abgelaufen ist und auch die Dauer der Unt\(:atigkeit verstrichen ist, kann sich der Benutzer mit seinem Passwort nicht mehr anmelden\&. Er muss sich dann an den Administrator wenden\&. +After expiration of the password and this expiration period is elapsed, no login is possible for the user\&. The user should contact her administrator\&. .sp Ein leeres Feld bedeutet, dass es keine H\(:ochstdauer zwischen Ablauf des Passworts und erneuter Anmeldung des Benutzers gibt\&. .RE .PP \fBDatum des Verfalls des Kontos\fR .RS 4 -Das Datum, an dem das Konto verf\(:allt, wird als Anzahl der Tage seit dem 1\&. Januar 1970 ausgedr\(:uckt\&. +The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp Note that an account expiration differs from a password expiration\&. In case of an account expiration, the user shall not be allowed to login\&. In case of a password expiration, the user is not allowed to login using her password\&. .sp diff --git a/man/de/man5/suauth.5 b/man/de/man5/suauth.5 index 073f9424..7a4116e5 100644 --- a/man/de/man5/suauth.5 +++ b/man/de/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 -.\" Manual: Dateiformate und konvertierung -.\" Source: shadow-utils 4.8.1 +.\" Date: 02.01.2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "SUAUTH" "5" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Dateiformate und konvertierung" +.TH "SUAUTH" "5" "02.01.2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/chgpasswd.8 b/man/de/man8/chgpasswd.8 index 6e566459..75ba2da3 100644 --- a/man/de/man8/chgpasswd.8 +++ b/man/de/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "CHGPASSWD" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "CHGPASSWD" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -121,7 +121,9 @@ Damit wird der standardm\(:a\(ssige Verschl\(:usselungsalgorithmus, mit dem Pass It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -170,7 +172,7 @@ or .sp Je mehr Runden Sie definieren, umso schwieriger ist es, das Passwort mit sturem Durchprobieren (brute force) zu knacken; umso mehr Rechenleistung wird jedoch auch f\(:ur die Anmeldung eines Benutzers ben\(:otigt\&. .sp -Falls Sie nichts angeben, wird libc die Standardanzahl der Runden festlegen (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Die Werte m\(:ussen zwischen 1000\-999\&.999\&.999 liegen\&. .sp diff --git a/man/de/man8/chpasswd.8 b/man/de/man8/chpasswd.8 index d75c6d91..4022fbf6 100644 --- a/man/de/man8/chpasswd.8 +++ b/man/de/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "CHPASSWD" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "CHPASSWD" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,9 @@ Damit wird der standardm\(:a\(ssige Verschl\(:usselungsalgorithmus, mit dem Pass It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -173,7 +175,7 @@ or .sp Je mehr Runden Sie definieren, umso schwieriger ist es, das Passwort mit sturem Durchprobieren (brute force) zu knacken; umso mehr Rechenleistung wird jedoch auch f\(:ur die Anmeldung eines Benutzers ben\(:otigt\&. .sp -Falls Sie nichts angeben, wird libc die Standardanzahl der Runden festlegen (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Die Werte m\(:ussen zwischen 1000\-999\&.999\&.999 liegen\&. .sp diff --git a/man/de/man8/faillog.8 b/man/de/man8/faillog.8 index af253aa7..acd1e8ee 100644 --- a/man/de/man8/faillog.8 +++ b/man/de/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "FAILLOG" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "FAILLOG" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/groupadd.8 b/man/de/man8/groupadd.8 index 6743afa5..7be33aaf 100644 --- a/man/de/man8/groupadd.8 +++ b/man/de/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GROUPADD" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "GROUPADD" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -132,6 +132,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "KONFIGURATION" .PP The following configuration variables in @@ -229,14 +243,13 @@ invalid argument to option .PP \fI4\fR .RS 4 -GID not unique (when -\fB\-o\fR -not used) +GID is already used (when called without +\fB\-o\fR) .RE .PP \fI9\fR .RS 4 -group name not unique +group name is already used .RE .PP \fI10\fR diff --git a/man/de/man8/groupdel.8 b/man/de/man8/groupdel.8 index 5b414128..45141e4e 100644 --- a/man/de/man8/groupdel.8 +++ b/man/de/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GROUPDEL" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "GROUPDEL" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -44,6 +44,11 @@ The options which apply to the \fBgroupdel\fR command are: .PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +This option forces the removal of the group, even if there\*(Aqs some user having the group as the primary one\&. +.RE +.PP \fB\-h\fR, \fB\-\-help\fR .RS 4 zeigt die Hilfe an und beendet das Programm diff --git a/man/de/man8/groupmems.8 b/man/de/man8/groupmems.8 index 13a3d967..24126bc1 100644 --- a/man/de/man8/groupmems.8 +++ b/man/de/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GROUPMEMS" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "GROUPMEMS" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/groupmod.8 b/man/de/man8/groupmod.8 index 515d02ad..8fe8da0c 100644 --- a/man/de/man8/groupmod.8 +++ b/man/de/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GROUPMOD" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "GROUPMOD" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,6 +45,11 @@ The options which apply to the \fBgroupmod\fR command are: .PP +\fB\-a\fR, \fB\-\-append\fR\ \&\fIGID\fR +.RS 4 +If group members are specified with \-U, append them to the existing member list, rather than replacing it\&. +.RE +.PP \fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 The group ID of the given @@ -123,6 +128,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "KONFIGURATION" .PP The following configuration variables in @@ -187,7 +206,7 @@ E_BAD_ARG: invalid argument to option .PP \fI4\fR .RS 4 -E_GID_IN_USE: specified group doesn\*(Aqt exist +E_GID_IN_USE: group id already in use .RE .PP \fI6\fR diff --git a/man/de/man8/grpck.8 b/man/de/man8/grpck.8 index 295d84fa..fdacb2b4 100644 --- a/man/de/man8/grpck.8 +++ b/man/de/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "GRPCK" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "GRPCK" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -159,6 +159,14 @@ and /etc/gshadow by GID\&. .RE .PP +\fB\-S\fR, \fB\-\-silence\-warnings\fR +.RS 4 +Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in +/etc/group +and +/etc/ghadow\&. +.RE +.PP By default, \fBgrpck\fR operates on diff --git a/man/de/man8/lastlog.8 b/man/de/man8/lastlog.8 index ce3821fe..8f472eb6 100644 --- a/man/de/man8/lastlog.8 +++ b/man/de/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "LASTLOG" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "LASTLOG" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,3 +135,7 @@ Datenbank mit Zeiten der letzten Anmeldung der Benutzer .SH "WARNUNGEN" .PP Gro\(sse L\(:ucken in den UID\-Zahlen haben zur Folge, dass das Lastlog\-Programm l\(:angere Zeit ohne Bildschirmausgabe l\(:auft\&. Wenn sich z\&.B\&. in der Datenbank von Lastlog kein Eintrag f\(:ur Benutzer mit der UID zwischen 170 und 800 befindet, wird es scheinen, als ob lastlog stehen geblieben ist, w\(:ahrend es die Eintr\(:age mit der UID 171 bis 799 verarbeitet\&. +.PP +Having high UIDs can create problems when handling the + /var/log/lastlog +with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/de/man8/logoutd.8 b/man/de/man8/logoutd.8 index ea1d3da6..55cd6504 100644 --- a/man/de/man8/logoutd.8 +++ b/man/de/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "LOGOUTD" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "LOGOUTD" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/newusers.8 b/man/de/man8/newusers.8 index c81017cf..2edb20d4 100644 --- a/man/de/man8/newusers.8 +++ b/man/de/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "NEWUSERS" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "NEWUSERS" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -99,7 +99,9 @@ Dieses Feld wird in das GECOS\-Feld des Benutzers kopiert\&. .RS 4 Mit diesem Feld wird das Home\-Verzeichnis des Benutzers definiert\&. .sp -Wenn in diesem Feld ein Verzeichnis angegeben wird, das nicht vorhanden ist, wird es erstellt\&. Dieses geh\(:ort dem Benutzer, der gerade erstellt und aktualisiert wird, und dessen Hauptgruppe\&. +If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. Note that +\fInewusers does not create parent directories \fR +of the new user\*(Aqs home directory\&. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure\&. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified\&. .sp If the home directory of an existing user is changed, \fBnewusers\fR @@ -193,7 +195,9 @@ Damit wird der standardm\(:a\(ssige Verschl\(:usselungsalgorithmus, mit dem Pass It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -263,7 +267,7 @@ Die maximale Anzahl von Tagen, f\(:ur die ein Passwort verwendet werden darf\&. .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Die Mindestanzahl von Tagen, bevor ein Wechsel des Passworts zugelassen wird\&. Ein vorheriger Versuch, das Passwort zu \(:andern, wird abgelehnt\&. Falls nicht angegeben, wird \-1 angenommen (was zur Folge hat, dass diese Beschr\(:ankung abgeschaltet ist)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -282,7 +286,7 @@ or .sp Je mehr Runden Sie definieren, umso schwieriger ist es, das Passwort mit sturem Durchprobieren (brute force) zu knacken; umso mehr Rechenleistung wird jedoch auch f\(:ur die Anmeldung eines Benutzers ben\(:otigt\&. .sp -Falls Sie nichts angeben, wird libc die Standardanzahl der Runden festlegen (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Die Werte m\(:ussen zwischen 1000\-999\&.999\&.999 liegen\&. .sp diff --git a/man/de/man8/nologin.8 b/man/de/man8/nologin.8 index cb542ca5..59a583a9 100644 --- a/man/de/man8/nologin.8 +++ b/man/de/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "NOLOGIN" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "NOLOGIN" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/pwck.8 b/man/de/man8/pwck.8 index 92d37cc8..69544b10 100644 --- a/man/de/man8/pwck.8 +++ b/man/de/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "PWCK" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "PWCK" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -249,6 +249,11 @@ The following configuration variables in /etc/login\&.defs change the behavior of this tool: .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBPASS_MAX_DAYS\fR (number) .RS 4 Die maximale Anzahl von Tagen, f\(:ur die ein Passwort verwendet werden darf\&. Wenn das Passwort \(:alter ist, wird ein Wechsel des Passworts erzwungen\&. Falls nicht angegeben, wird \-1 angenommen (was zur Folge hat, dass diese Beschr\(:ankung abgeschaltet ist)\&. @@ -256,7 +261,7 @@ Die maximale Anzahl von Tagen, f\(:ur die ein Passwort verwendet werden darf\&. .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Die Mindestanzahl von Tagen, bevor ein Wechsel des Passworts zugelassen wird\&. Ein vorheriger Versuch, das Passwort zu \(:andern, wird abgelehnt\&. Falls nicht angegeben, wird \-1 angenommen (was zur Folge hat, dass diese Beschr\(:ankung abgeschaltet ist)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/de/man8/pwconv.8 b/man/de/man8/pwconv.8 index 33092eef..177bbf47 100644 --- a/man/de/man8/pwconv.8 +++ b/man/de/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "PWCONV" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "PWCONV" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -173,7 +173,7 @@ Die maximale Anzahl von Tagen, f\(:ur die ein Passwort verwendet werden darf\&. .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Die Mindestanzahl von Tagen, bevor ein Wechsel des Passworts zugelassen wird\&. Ein vorheriger Versuch, das Passwort zu \(:andern, wird abgelehnt\&. Falls nicht angegeben, wird \-1 angenommen (was zur Folge hat, dass diese Beschr\(:ankung abgeschaltet ist)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/de/man8/sulogin.8 b/man/de/man8/sulogin.8 index 4894f807..7bd6326f 100644 --- a/man/de/man8/sulogin.8 +++ b/man/de/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "SULOGIN" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "SULOGIN" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/de/man8/useradd.8 b/man/de/man8/useradd.8 index 16c43c79..76826c1c 100644 --- a/man/de/man8/useradd.8 +++ b/man/de/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "USERADD" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "USERADD" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -97,9 +97,11 @@ as the value for the user\*(Aqs login directory\&. The default is to append the \fILOGIN\fR name to \fIBASE_DIR\fR -and use that as the login directory name\&. The directory +and use that as the login directory name\&. If the directory \fIHOME_DIR\fR -does not have to exist but will not be created if it is missing\&. +does not exist, then it will be created unless the +\fB\-M\fR +option is specified\&. .RE .PP \fB\-D\fR, \fB\-\-defaults\fR @@ -211,6 +213,14 @@ options can be specified, e\&.g\&.: F\(:ugt den Benutzer nicht zu den Datenbanken lastlog und faillog hinzu\&. .sp By default, the user\*(Aqs entries in the lastlog and faillog databases are reset to avoid reusing the entry from a previously deleted user\&. +.sp +If this option is not specified, +\fBuseradd\fR +will also consult the variable +\fBLOG_INIT\fR +in the +/etc/default/useradd +if set to no the user will not be added to the lastlog and faillog databases\&. .RE .PP \fB\-m\fR, \fB\-\-create\-home\fR @@ -222,6 +232,8 @@ option) will be copied to the home directory\&. By default, if this option is not specified and \fBCREATE_HOME\fR is not enabled, no home directories are created\&. +.sp +The directory where the user\*(Aqs home directory is created must exist and have proper SELinux context and permissions\&. Otherwise the user\*(Aqs home directory cannot be created or accessed\&. .RE .PP \fB\-M\fR, \fB\-\-no\-create\-home\fR @@ -492,7 +504,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -Das Verzeichnis des Mail\-Spools\&. Diese Angabe wird ben\(:otigt, um die Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto ver\(:andert oder gel\(:oscht wurde\&. Falls nicht angegeben, wird ein Standard verwendet, der beim Kompilieren festgelegt wurde\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -539,7 +553,7 @@ Die maximale Anzahl von Tagen, f\(:ur die ein Passwort verwendet werden darf\&. .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Die Mindestanzahl von Tagen, bevor ein Wechsel des Passworts zugelassen wird\&. Ein vorheriger Versuch, das Passwort zu \(:andern, wird abgelehnt\&. Falls nicht angegeben, wird \-1 angenommen (was zur Folge hat, dass diese Beschr\(:ankung abgeschaltet ist)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -693,6 +707,20 @@ sichere Informationen zu den Gruppenkonten Standardwerte f\(:ur die Erstellung eines Kontos .RE .PP +/etc/shadow\-maint/useradd\-pre\&.d/*, /etc/shadow\-maint/useradd\-post\&.d/* +.RS 4 +Run\-part files to execute during user addition\&. The environment variable +\fBACTION\fR +will be populated with useradd and +\fBSUBJECT\fR +with the +\fBusername\fR\&. +useradd\-pre\&.d +will be executed prior to any user addition\&. +useradd\-post\&.d +will execute after user addition\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/skel/ .RS 4 Verzeichnis, das die Standarddateien enth\(:alt diff --git a/man/de/man8/userdel.8 b/man/de/man8/userdel.8 index 8de9e4e6..a702738b 100644 --- a/man/de/man8/userdel.8 +++ b/man/de/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "USERDEL" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "USERDEL" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -106,7 +106,9 @@ change the behavior of this tool: .PP \fBMAIL_DIR\fR (string) .RS 4 -Das Verzeichnis des Mail\-Spools\&. Diese Angabe wird ben\(:otigt, um die Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto ver\(:andert oder gel\(:oscht wurde\&. Falls nicht angegeben, wird ein Standard verwendet, der beim Kompilieren festgelegt wurde\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -221,6 +223,21 @@ Informationen zu den Benutzerkonten verschl\(:usselte Informationen zu den Benutzerkonten .RE .PP +/etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* +.RS 4 +Run\-part files to execute during user deletion\&. The environment variable +\fBACTION\fR +will be populated with +\fBuserdel\fR +and +\fBSUBJECT\fR +with the username\&. +userdel\-pre\&.d +will be executed prior to any user deletion\&. +userdel\-post\&.d +will execute after user deletion\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/subgid .RS 4 Per user subordinate group IDs\&. diff --git a/man/de/man8/usermod.8 b/man/de/man8/usermod.8 index 7183a397..0c06c205 100644 --- a/man/de/man8/usermod.8 +++ b/man/de/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "USERMOD" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "USERMOD" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,7 @@ das neue Home\-Verzeichnis des Benutzers .sp If the \fB\-m\fR -option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. +option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. If the current home directory does not exist the new home directory will not be created\&. .RE .PP \fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR @@ -107,6 +107,9 @@ Der Name oder die Zahl der anf\(:anglichen Anmeldegruppe eines neuen Benutzers\& Jede Datei im Home\-Verzeichnis des Benutzers, die der alten Hauptgruppe des Benutzers geh\(:orte, wird dieser neuen Gruppe geh\(:oren\&. .sp Die Gruppenzugeh\(:origkeit von Dateien au\(sserhalb des Home\-Verzeichnisses des Benutzers muss per Hand angepasst werden\&. +.sp +The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. .RE .PP \fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] @@ -143,7 +146,7 @@ to .PP \fB\-m\fR, \fB\-\-move\-home\fR .RS 4 -verschiebt den Inhalt des Home\-Verzeichnisses eines Benutzers zu dem neuen Ziel +Move the content of the user\*(Aqs home directory to the new location\&. If the current home directory does not exist the new home directory will not be created\&. .sp This option is only valid in combination with the \fB\-d\fR @@ -172,6 +175,13 @@ This option is not recommended because the password (or encrypted password) will Sie sollten sicherstellen, dass das Passwort den Passwortrichtlinien des Systems entspricht\&. .RE .PP +\fB\-r\fR, \fB\-\-remove\fR +.RS 4 +Remove the user from named supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. +.RE +.PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the @@ -192,7 +202,7 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -Der Name der neuen Anmelde\-Shell des Benutzers\&. Falls dieses Feld leer gelassen wird, verwendet das System die Standard\-Anmelde\-Shell\&. +Der Pfad der neuen Anmelde\-Shell des Benutzers\&. Falls dieses Feld leer gelassen wird, verwendet das System die Standard\-Anmelde\-Shell\&. .RE .PP \fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR @@ -207,6 +217,9 @@ F\(:ur die Mailbox des Benutzers und alle Dateien, die ihm geh\(:oren und sich i .sp Der Eigent\(:umer von Dateien au\(sserhalb des Home\-Verzeichnisses des Benutzers muss per Hand angepasst werden\&. .sp +The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. +.sp No checks will be performed with regard to the \fBUID_MIN\fR, \fBUID_MAX\fR, @@ -332,7 +345,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -Das Verzeichnis des Mail\-Spools\&. Diese Angabe wird ben\(:otigt, um die Mailbox zu bearbeiten, nachdem das entsprechende Benutzerkonto ver\(:andert oder gel\(:oscht wurde\&. Falls nicht angegeben, wird ein Standard verwendet, der beim Kompilieren festgelegt wurde\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/de/man8/vipw.8 b/man/de/man8/vipw.8 index c7c59e4e..26deda10 100644 --- a/man/de/man8/vipw.8 +++ b/man/de/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23.01.2020 +.\" Date: 02.01.2022 .\" Manual: Befehle zur Systemverwaltung -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: German .\" -.TH "VIPW" "8" "23.01.2020" "shadow\-utils 4\&.8\&.1" "Befehle zur Systemverwaltung" +.TH "VIPW" "8" "02.01.2022" "shadow\-utils 4\&.11\&.1" "Befehle zur Systemverwaltung" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/es/Makefile.in b/man/es/Makefile.in index 8e33044e..57fc87be 100644 --- a/man/es/Makefile.in +++ b/man/es/Makefile.in @@ -89,8 +89,14 @@ build_triplet = @build@ host_triplet = @host@ subdir = man/es ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -146,7 +152,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -175,9 +180,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -215,7 +225,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/man/expiry.1.xml b/man/expiry.1.xml index 63575b03..338b3bf7 100644 --- a/man/expiry.1.xml +++ b/man/expiry.1.xml @@ -1,33 +1,9 @@ faillog 5 - File Formats and Conversions + File Formats and Configuration Files shadow-utils &SHADOW_UTILS_VERSION; diff --git a/man/faillog.8.xml b/man/faillog.8.xml index a9132a8f..16f40090 100644 --- a/man/faillog.8.xml +++ b/man/faillog.8.xml @@ -1,32 +1,8 @@ -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "CHAGE" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "CHAGE" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,13 +45,30 @@ command are: .PP \fB\-d\fR, \fB\-\-lastday\fR\ \&\fILAST_DAY\fR .RS 4 -Configurer le nombre du jour, \(`a compter du 1er\ \&janvier\ \&1970, o\(`u le mot de passe a \('et\('e chang\('e la derni\(`ere fois\&. La date peut aussi \(^etre exprim\('ee dans le format AAAA\-MM\-JJ (ou le format utilis\('e plus commun\('ement dans votre r\('egion)\&. +Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. If the +\fILAST_DAY\fR +is set to +\fI0\fR +the user is forced to change his password on the next log on\&. .RE .PP \fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 Configurer la date, ou le nombre de jours \(`a compter du 1er\ \&janvier\ \&1970, \(`a partir de laquelle le compte de l\*(Aqutilisateur ne sera plus accessible\&. La date peut aussi \(^etre exprim\('ee dans le format AAAA\-MM\-JJ (ou le format plus commun\('ement utilis\('e dans votre r\('egion)\&. Un utilisateur dont le compte est bloqu\('e doit contacter l\*(Aqadministrateur syst\(`eme pour pouvoir utiliser \(`a nouveau le syst\(`eme\&. .sp +For example the following can be used to set an account to expire in 180 days: +.sp +.if n \{\ +.RS 4 +.\} +.nf + chage \-E $(date \-d +180days +%Y\-%m\-%d) + +.fi +.if n \{\ +.RE +.\} +.sp Passing the number \fI\-1\fR as the @@ -137,6 +154,14 @@ The \fBchage\fR program requires a shadow password file to be available\&. .PP +The chage program will report only the information from the shadow password file\&. This implies that configuration from other sources (e\&.g\&. LDAP or empty password hash field from the passwd file) that affect the user\*(Aqs login will not be shown in the chage output\&. +.PP +The +\fBchage\fR +program will also not report any inconsistency between the shadow and passwd files (e\&.g\&. missing x in the passwd file)\&. The +\fBpwck\fR +can be used to check for this kind of inconsistencies\&. +.PP The \fBchage\fR command is restricted to the root user, except for the diff --git a/man/fr/man1/chfn.1 b/man/fr/man1/chfn.1 index ae2622de..bc8e829e 100644 --- a/man/fr/man1/chfn.1 +++ b/man/fr/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "CHFN" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "CHFN" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/chsh.1 b/man/fr/man1/chsh.1 index a50d861c..656396ce 100644 --- a/man/fr/man1/chsh.1 +++ b/man/fr/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "CHSH" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "CHSH" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/expiry.1 b/man/fr/man1/expiry.1 index 9e95ce8a..bcdd4d31 100644 --- a/man/fr/man1/expiry.1 +++ b/man/fr/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "EXPIRY" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "EXPIRY" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/gpasswd.1 b/man/fr/man1/gpasswd.1 index f7f6ccc8..46bea474 100644 --- a/man/fr/man1/gpasswd.1 +++ b/man/fr/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: rafal Maszkowski .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GPASSWD" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "GPASSWD" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -147,7 +147,9 @@ D\('efinir les algorithmes de chiffrement par d\('efaut du syst\(`eme pour coder It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -196,7 +198,7 @@ or .sp Avec beaucoup de rounds, il est plus difficile de trouver le mot de passe avec une attaque par force brute\&. Veuillez remarquer que plus de ressources processeur seront n\('ecessaires pour authentifier les utilisateurs\&. .sp -Si non pr\('ecis\('ee, la libc utilisera le nombre de rounds par d\('efaut (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Les valeurs doivent \(^etre comprises dans l\*(Aqintervalle 1\ \&000\ \&\-\ \&999\ \&999\ \&999\&. .sp diff --git a/man/fr/man1/groups.1 b/man/fr/man1/groups.1 index f84e1078..dd4a2f7c 100644 --- a/man/fr/man1/groups.1 +++ b/man/fr/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GROUPS" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "GROUPS" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/id.1 b/man/fr/man1/id.1 index 52d93b7a..3cb5fffe 100644 --- a/man/fr/man1/id.1 +++ b/man/fr/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "ID" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "ID" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/login.1 b/man/fr/man1/login.1 index 07b70f83..c717319d 100644 --- a/man/fr/man1/login.1 +++ b/man/fr/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "LOGIN" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "LOGIN" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -318,7 +318,9 @@ Vous devriez le d\('esactiver si les fichiers de d\('emarrage de l\*(Aqinterpr\( .PP \fBMAIL_DIR\fR (string) .RS 4 -R\('epertoire d\*(Aqattente des courriels (\(Fo\ \&mail spool directory\ \&\(Fc)\&. Ce param\(`etre est n\('ecessaire pour manipuler les bo\(^ites \(`a lettres lorsque le compte d\*(Aqun utilisateur est modifi\('e ou supprim\('e\&. S\*(Aqil n\*(Aqest pas sp\('ecifi\('e, une valeur par d\('efaut d\('efinie \(`a la compilation est utilis\('ee\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/fr/man1/newgidmap.1 b/man/fr/man1/newgidmap.1 index 4c1fee32..25cc1db5 100644 --- a/man/fr/man1/newgidmap.1 +++ b/man/fr/man1/newgidmap.1 @@ -2,12 +2,12 @@ .\" Title: newgidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "NEWGIDMAP" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "NEWGIDMAP" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,8 +38,11 @@ The \fBnewgidmap\fR sets /proc/[pid]/gid_map -based on its command line arguments and the gids allowed in -/etc/subgid\&. Note that the root user is not exempted from the requirement for a valid +based on its command line arguments and the gids allowed\&. Subgid delegation can either be managed via +/etc/subgid +or through the configured NSS subid module\&. These options are mutually exclusive\&. +.PP +Note that the root group is not exempted from the requirement for a valid /etc/subgid entry\&. .PP @@ -65,7 +68,7 @@ Length of the ranges (both inside and outside the user namespace)\&. \fBnewgidmap\fR verifies that the caller is the owner of the process indicated by \fBpid\fR -and that for each of the above sets, each of the GIDs in the range [lowergid, lowergid+count] is allowed to the caller according to +and that for each of the above sets, each of the GIDs in the range [lowergid, lowergid+count) is allowed to the caller according to /etc/subgid before setting /proc/[pid]/gid_map\&. diff --git a/man/fr/man1/newgrp.1 b/man/fr/man1/newgrp.1 index e60a24d2..20271cb6 100644 --- a/man/fr/man1/newgrp.1 +++ b/man/fr/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "NEWGRP" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "NEWGRP" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/newuidmap.1 b/man/fr/man1/newuidmap.1 index 21e55e64..30ad5b26 100644 --- a/man/fr/man1/newuidmap.1 +++ b/man/fr/man1/newuidmap.1 @@ -2,12 +2,12 @@ .\" Title: newuidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "NEWUIDMAP" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "NEWUIDMAP" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,8 +38,11 @@ The \fBnewuidmap\fR sets /proc/[pid]/uid_map -based on its command line arguments and the uids allowed in -/etc/subuid\&. Note that the root user is not exempted from the requirement for a valid +based on its command line arguments and the uids allowed\&. Subuid delegation can either be managed via +/etc/subuid +or through the configured NSS subid module\&. These options are mutually exclusive\&. +.PP +Note that the root user is not exempted from the requirement for a valid /etc/subuid entry\&. .PP @@ -65,7 +68,7 @@ Length of the ranges (both inside and outside the user namespace)\&. \fBnewuidmap\fR verifies that the caller is the owner of the process indicated by \fBpid\fR -and that for each of the above sets, each of the UIDs in the range [loweruid, loweruid+count] is allowed to the caller according to +and that for each of the above sets, each of the UIDs in the range [loweruid, loweruid+count) is allowed to the caller according to /etc/subuid before setting /proc/[pid]/uid_map\&. diff --git a/man/fr/man1/passwd.1 b/man/fr/man1/passwd.1 index 446e85b1..d07db7c1 100644 --- a/man/fr/man1/passwd.1 +++ b/man/fr/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "PASSWD" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "PASSWD" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -223,7 +223,9 @@ D\('efinir les algorithmes de chiffrement par d\('efaut du syst\(`eme pour coder It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -282,7 +284,7 @@ or .sp Avec beaucoup de rounds, il est plus difficile de trouver le mot de passe avec une attaque par force brute\&. Veuillez remarquer que plus de ressources processeur seront n\('ecessaires pour authentifier les utilisateurs\&. .sp -Si non pr\('ecis\('ee, la libc utilisera le nombre de rounds par d\('efaut (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Les valeurs doivent \(^etre comprises dans l\*(Aqintervalle 1\ \&000\ \&\-\ \&999\ \&999\ \&999\&. .sp diff --git a/man/fr/man1/sg.1 b/man/fr/man1/sg.1 index 7cb27168..ce67aaa9 100644 --- a/man/fr/man1/sg.1 +++ b/man/fr/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SG" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "SG" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man1/su.1 b/man/fr/man1/su.1 index 72dcc40a..210a56cf 100644 --- a/man/fr/man1/su.1 +++ b/man/fr/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes utilisateur -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SU" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes utilisateur" +.TH "SU" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes utilisateur" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -312,7 +312,9 @@ Vous devriez le d\('esactiver si les fichiers de d\('emarrage de l\*(Aqinterpr\( .PP \fBMAIL_DIR\fR (string) .RS 4 -R\('epertoire d\*(Aqattente des courriels (\(Fo\ \&mail spool directory\ \&\(Fc)\&. Ce param\(`etre est n\('ecessaire pour manipuler les bo\(^ites \(`a lettres lorsque le compte d\*(Aqun utilisateur est modifi\('e ou supprim\('e\&. S\*(Aqil n\*(Aqest pas sp\('ecifi\('e, une valeur par d\('efaut d\('efinie \(`a la compilation est utilis\('ee\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/fr/man3/shadow.3 b/man/fr/man3/shadow.3 index 6ce492bf..2fd8f207 100644 --- a/man/fr/man3/shadow.3 +++ b/man/fr/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Appels de biblioth\(`eque -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SHADOW" "3" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Appels de biblioth\(`eque" +.TH "SHADOW" "3" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Appels de biblioth\(`eque" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/faillog.5 b/man/fr/man5/faillog.5 index 8901a5ab..7af4be49 100644 --- a/man/fr/man5/faillog.5 +++ b/man/fr/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "FAILLOG" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "FAILLOG" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/gshadow.5 b/man/fr/man5/gshadow.5 index b8b40ae8..e144b596 100644 --- a/man/fr/man5/gshadow.5 +++ b/man/fr/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GSHADOW" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "GSHADOW" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/limits.5 b/man/fr/man5/limits.5 index d59f36ec..f62ca033 100644 --- a/man/fr/man5/limits.5 +++ b/man/fr/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "LIMITS" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "LIMITS" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/login.access.5 b/man/fr/man5/login.access.5 index a13b46ce..fcdb95a7 100644 --- a/man/fr/man5/login.access.5 +++ b/man/fr/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "LOGIN\&.ACCESS" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "LOGIN\&.ACCESS" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/login.defs.5 b/man/fr/man5/login.defs.5 index d1f923bf..61043ca6 100644 --- a/man/fr/man5/login.defs.5 +++ b/man/fr/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "LOGIN\&.DEFS" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "LOGIN\&.DEFS" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -126,7 +126,9 @@ D\('efinir les algorithmes de chiffrement par d\('efaut du syst\(`eme pour coder It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -223,6 +225,15 @@ The default value for \fBGID_MAX\fR) is 1000 (resp\&. 60000)\&. .RE .PP +\fBHMAC_CRYPTO_ALGO\fR (string) +.RS 4 +Used to select the HMAC cryptography algorithm that the pam_timestamp module is going to use to calculate the keyed\-hash message authentication code\&. +.sp +Note: Check +hmac(3) +to see the possible algorithms that are available in your system\&. +.RE +.PP \fBHOME_MODE\fR (number) .RS 4 The mode for new home directories\&. If not specified, the @@ -306,7 +317,9 @@ Vous devriez le d\('esactiver si les fichiers de d\('emarrage de l\*(Aqinterpr\( .PP \fBMAIL_DIR\fR (string) .RS 4 -R\('epertoire d\*(Aqattente des courriels (\(Fo\ \&mail spool directory\ \&\(Fc)\&. Ce param\(`etre est n\('ecessaire pour manipuler les bo\(^ites \(`a lettres lorsque le compte d\*(Aqun utilisateur est modifi\('e ou supprim\('e\&. S\*(Aqil n\*(Aqest pas sp\('ecifi\('e, une valeur par d\('efaut d\('efinie \(`a la compilation est utilis\('ee\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -372,6 +385,11 @@ Si d\('efinie, liste d\('elimit\('ee par des \(Fo\ \&:\ \&\(Fc de fichiers de \( Si d\('efinie, nom de fichier dont la pr\('esence emp\(^echera les connexions de quelqu\*(Aqun d\*(Aqautre que le superutilisateur\&. Le contenu de ces fichiers doit \(^etre un message indiquant pourquoi les connexions sont d\('esactiv\('ees\&. .RE .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBOBSCURE_CHECKS_ENAB\fR (boolean) .RS 4 Activer des v\('erifications suppl\('ementaires lors des changements de mot de passe\&. @@ -394,7 +412,7 @@ Nombre maximum de jours de validit\('e d\*(Aqun mot de passe\&. Apr\(`es cette d .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Nombre minimum de jours autoris\('e avant la modification d\*(Aqun mot de passe\&. Toute tentative de modification du mot de passe avant cette dur\('ee est rejet\('ee\&. S\*(Aqil n\*(Aqest pas pr\('ecis\('e, la valeur de \-1 est utilis\('ee (ce qui enl\(`eve toute restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -442,7 +460,7 @@ or .sp Avec beaucoup de rounds, il est plus difficile de trouver le mot de passe avec une attaque par force brute\&. Veuillez remarquer que plus de ressources processeur seront n\('ecessaires pour authentifier les utilisateurs\&. .sp -Si non pr\('ecis\('ee, la libc utilisera le nombre de rounds par d\('efaut (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Les valeurs doivent \(^etre comprises dans l\*(Aqintervalle 1\ \&000\ \&\-\ \&999\ \&999\ \&999\&. .sp diff --git a/man/fr/man5/passwd.5 b/man/fr/man5/passwd.5 index 99cc56ee..9958bb20 100644 --- a/man/fr/man5/passwd.5 +++ b/man/fr/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "PASSWD" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "PASSWD" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -145,8 +145,8 @@ for details on how this string is interpreted\&. If the password field contains some string that is not a valid result of \fBcrypt\fR(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in the system by other means)\&. .PP -The comment field is used by various system utilities, such as -\fBfinger\fR(1)\&. +The comment field, also known as the gecos field, is used by various system utilities, such as +\fBfinger\fR(1)\&. The use of an ampersand here will be replaced by the capitalised login name when the field is used or displayed by such system utilities\&. .PP The home directory field provides the name of the initial working directory\&. The \fBlogin\fR diff --git a/man/fr/man5/porttime.5 b/man/fr/man5/porttime.5 index 129af197..f8287924 100644 --- a/man/fr/man5/porttime.5 +++ b/man/fr/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "PORTTIME" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "PORTTIME" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/shadow.5 b/man/fr/man5/shadow.5 index 75d1da8f..a76cd556 100644 --- a/man/fr/man5/shadow.5 +++ b/man/fr/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SHADOW" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "SHADOW" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -61,7 +61,7 @@ If the password field contains some string that is not a valid result of .PP \fBdate du dernier changement de mot de passe\fR .RS 4 -La date du dernier changement de mot de passe, exprim\('ee en nombre de jours depuis le 1er\ \&janvier\ \&1970\&. +The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp La valeur 0 a une signification particuli\(`ere\ \&: l\*(Aqutilisateur devra changer son mot de passe la prochaine fois qu\*(Aqil se connectera au syst\(`eme\&. .sp @@ -72,7 +72,7 @@ Un champ vide indique que les fonctionnalit\('es de vieillissement de mot de pas .RS 4 L\*(Aq\(^age minimum du mot de passe est la dur\('ee (en jour) que l\*(Aqutilisateur devra attendre avant de pouvoir le changer de nouveau\&. .sp -Un champ vide ou une valeur de 0 signifie qu\*(Aqil n\*(Aqy a pas d\*(Aq\(^age minimum pour le mot de passe\&. +An empty field and value 0 mean that there is no minimum password age\&. .RE .PP \fB\(^age maximum du mot de passe\fR @@ -97,14 +97,14 @@ Un champ vide ou une valeur de 0 signifie qu\*(Aqil n\*(Aqy aura pas de p\('erio .RS 4 La dur\('ee (en jour) pendant laquelle le mot de passe sera quand m\(^eme accept\('e apr\(`es son expiration (voir l\*(Aq\(^age maximum du mot de passe ci\-dessus)\&. L\*(Aqutilisateur devra mettre \(`a jour son mot de passe \(`a la prochaine connexion\&. .sp -Apr\(`es expiration du mot de passe suivie de la p\('eriode d\*(Aqexpiration, plus aucune connexion n\*(Aqest possible en utilisant le mot de passe de l\*(Aqutilisateur\&. L\*(Aqutilisateur doit contacter son administrateur\&. +After expiration of the password and this expiration period is elapsed, no login is possible for the user\&. The user should contact her administrator\&. .sp Un champ vide signifie qu\*(Aqaucune p\('eriode d\*(Aqinactivit\('e n\*(Aqest impos\('ee\&. .RE .PP \fBdate de fin de validit\('e du compte\fR .RS 4 -La date d\*(Aqexpiration du compte, exprim\('e en nombre de jours depuis le 1er\ \&janvier\ \&1970\&. +The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp Veuillez noter que l\*(Aqexpiration d\*(Aqun compte diff\(`ere de l\*(Aqexpiration d\*(Aqun mot de passe\&. En cas d\*(Aqexpiration d\*(Aqun compte, l\*(Aqutilisateur ne sera plus autoris\('e \(`a se connecter\&. En cas d\*(Aqexpiration d\*(Aqun mot de passe, l\*(Aqutilisateur n\*(Aqest pas autoris\('e \(`a se connecter en utilisant son mot de passe\&. .sp diff --git a/man/fr/man5/suauth.5 b/man/fr/man5/suauth.5 index 960a33e6..79b69d30 100644 --- a/man/fr/man5/suauth.5 +++ b/man/fr/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SUAUTH" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "SUAUTH" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man5/subgid.5 b/man/fr/man5/subgid.5 index be6a05fc..491f5e4a 100644 --- a/man/fr/man5/subgid.5 +++ b/man/fr/man5/subgid.5 @@ -2,12 +2,12 @@ .\" Title: subgid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SUBGID" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "SUBGID" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,9 +28,29 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NOM" -subgid \- the subordinate gid file +subgid \- the configuration for subordinate group ids .SH "DESCRIPTION" .PP +Subgid authorizes a group id to map ranges of group ids from its namespace into child namespaces\&. +.PP +The delegation of the subordinate gids can be configured via the +\fIsubid\fR +field in +/etc/nsswitch\&.conf +file\&. Only one value can be set as the delegation source\&. Setting this field to +\fIfiles\fR +configures the delegation of gids to +/etc/subgid\&. Setting any other value treats the delegation as a plugin following with a name of the form +\fIlibsubid_$value\&.so\fR\&. If the value or plugin is missing, then the subordinate gid delegation falls back to +\fIfiles\fR\&. +.PP +Note, that +\fBgroupadd\fR +will only create entries in +/etc/subgid +if subid delegation is managed via subid files\&. +.SH "LOCAL SUBORDINATE DELEGATION" +.PP Each line in /etc/subgid contains a user name and a range of subordinate group ids that user is allowed to use\&. This is specified with three fields delimited by colons (\(Fo\ \&:\ \&\(Fc)\&. These fields are: diff --git a/man/fr/man5/subuid.5 b/man/fr/man5/subuid.5 index 6078bd65..8a399aa4 100644 --- a/man/fr/man5/subuid.5 +++ b/man/fr/man5/subuid.5 @@ -2,12 +2,12 @@ .\" Title: subuid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formats et conversions de fichiers -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SUBUID" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formats et conversions de fich" +.TH "SUBUID" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,9 +28,29 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NOM" -subuid \- the subordinate uid file +subuid \- the configuration for subordinate user ids .SH "DESCRIPTION" .PP +Subuid authorizes a user id to map ranges of user ids from its namespace into child namespaces\&. +.PP +The delegation of the subordinate uids can be configured via the +\fIsubid\fR +field in +/etc/nsswitch\&.conf +file\&. Only one value can be set as the delegation source\&. Setting this field to +\fIfiles\fR +configures the delegation of uids to +/etc/subuid\&. Setting any other value treats the delegation as a plugin following with a name of the form +\fIlibsubid_$value\&.so\fR\&. If the value or plugin is missing, then the subordinate uid delegation falls back to +\fIfiles\fR\&. +.PP +Note, that +\fBuseradd\fR +will only create entries in +/etc/subuid +if subid delegation is managed via subid files\&. +.SH "LOCAL SUBORDINATE DELEGATION" +.PP Each line in /etc/subuid contains a user name and a range of subordinate user ids that user is allowed to use\&. This is specified with three fields delimited by colons (\(Fo\ \&:\ \&\(Fc)\&. These fields are: diff --git a/man/fr/man8/chgpasswd.8 b/man/fr/man8/chgpasswd.8 index 91250af1..3ce9e288 100644 --- a/man/fr/man8/chgpasswd.8 +++ b/man/fr/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "CHGPASSWD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "CHGPASSWD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -121,7 +121,9 @@ D\('efinir les algorithmes de chiffrement par d\('efaut du syst\(`eme pour coder It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -170,7 +172,7 @@ or .sp Avec beaucoup de rounds, il est plus difficile de trouver le mot de passe avec une attaque par force brute\&. Veuillez remarquer que plus de ressources processeur seront n\('ecessaires pour authentifier les utilisateurs\&. .sp -Si non pr\('ecis\('ee, la libc utilisera le nombre de rounds par d\('efaut (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Les valeurs doivent \(^etre comprises dans l\*(Aqintervalle 1\ \&000\ \&\-\ \&999\ \&999\ \&999\&. .sp diff --git a/man/fr/man8/chpasswd.8 b/man/fr/man8/chpasswd.8 index e86a004d..ce03e609 100644 --- a/man/fr/man8/chpasswd.8 +++ b/man/fr/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "CHPASSWD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "CHPASSWD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,9 @@ D\('efinir les algorithmes de chiffrement par d\('efaut du syst\(`eme pour coder It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -173,7 +175,7 @@ or .sp Avec beaucoup de rounds, il est plus difficile de trouver le mot de passe avec une attaque par force brute\&. Veuillez remarquer que plus de ressources processeur seront n\('ecessaires pour authentifier les utilisateurs\&. .sp -Si non pr\('ecis\('ee, la libc utilisera le nombre de rounds par d\('efaut (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Les valeurs doivent \(^etre comprises dans l\*(Aqintervalle 1\ \&000\ \&\-\ \&999\ \&999\ \&999\&. .sp diff --git a/man/fr/man8/faillog.8 b/man/fr/man8/faillog.8 index ce85c7c0..75a5ba65 100644 --- a/man/fr/man8/faillog.8 +++ b/man/fr/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "FAILLOG" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "FAILLOG" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/groupadd.8 b/man/fr/man8/groupadd.8 index 3ff9253f..6e80b27d 100644 --- a/man/fr/man8/groupadd.8 +++ b/man/fr/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GROUPADD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "GROUPADD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -132,6 +132,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in @@ -229,14 +243,13 @@ invalid argument to option .PP \fI4\fR .RS 4 -GID not unique (when -\fB\-o\fR -not used) +GID is already used (when called without +\fB\-o\fR) .RE .PP \fI9\fR .RS 4 -group name not unique +group name is already used .RE .PP \fI10\fR diff --git a/man/fr/man8/groupdel.8 b/man/fr/man8/groupdel.8 index 44788f78..ef07210d 100644 --- a/man/fr/man8/groupdel.8 +++ b/man/fr/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GROUPDEL" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "GROUPDEL" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -44,6 +44,11 @@ The options which apply to the \fBgroupdel\fR command are: .PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +This option forces the removal of the group, even if there\*(Aqs some user having the group as the primary one\&. +.RE +.PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Afficher un message d\*(Aqaide et quitter\&. diff --git a/man/fr/man8/groupmems.8 b/man/fr/man8/groupmems.8 index df549b3a..773e0f28 100644 --- a/man/fr/man8/groupmems.8 +++ b/man/fr/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GROUPMEMS" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "GROUPMEMS" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/groupmod.8 b/man/fr/man8/groupmod.8 index d44f5116..938f9693 100644 --- a/man/fr/man8/groupmod.8 +++ b/man/fr/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GROUPMOD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "GROUPMOD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,6 +45,11 @@ The options which apply to the \fBgroupmod\fR command are: .PP +\fB\-a\fR, \fB\-\-append\fR\ \&\fIGID\fR +.RS 4 +If group members are specified with \-U, append them to the existing member list, rather than replacing it\&. +.RE +.PP \fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 The group ID of the given @@ -123,6 +128,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in @@ -187,7 +206,7 @@ E_BAD_ARG: invalid argument to option .PP \fI4\fR .RS 4 -E_GID_IN_USE: specified group doesn\*(Aqt exist +E_GID_IN_USE: group id already in use .RE .PP \fI6\fR diff --git a/man/fr/man8/grpck.8 b/man/fr/man8/grpck.8 index 04d27c45..c76f485a 100644 --- a/man/fr/man8/grpck.8 +++ b/man/fr/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "GRPCK" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "GRPCK" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -159,6 +159,14 @@ and /etc/gshadow by GID\&. .RE .PP +\fB\-S\fR, \fB\-\-silence\-warnings\fR +.RS 4 +Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in +/etc/group +and +/etc/ghadow\&. +.RE +.PP By default, \fBgrpck\fR operates on diff --git a/man/fr/man8/lastlog.8 b/man/fr/man8/lastlog.8 index e529cfa6..5247c1bf 100644 --- a/man/fr/man8/lastlog.8 +++ b/man/fr/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "LASTLOG" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "LASTLOG" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -137,3 +137,7 @@ Base de donn\('ees de l\*(Aqheure des connexions pr\('ec\('edentes des utilisate S\*(Aqil y a des trous importants dans les valeurs des UID, \fBlastlog\fR s\*(Aqex\('ecutera plus lentement, sans affichage \(`a l\*(Aq\('ecran (par exemple, s\*(Aqil n\*(Aqy a pas d\*(Aqentr\('ee pour les utilisateurs ayant un UID compris entre 170 et 800 dans base de donn\('ees lastlog, le programme lastlog semblera bloqu\('e comme s\*(Aqil traitait les entr\('ees correspondant aux UID 171 \(`a 799)\&. +.PP +Having high UIDs can create problems when handling the + /var/log/lastlog +with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/fr/man8/logoutd.8 b/man/fr/man8/logoutd.8 index 80b7fdcd..b0b9f71a 100644 --- a/man/fr/man8/logoutd.8 +++ b/man/fr/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "LOGOUTD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "LOGOUTD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/newusers.8 b/man/fr/man8/newusers.8 index 01ecc4cf..020caa06 100644 --- a/man/fr/man8/newusers.8 +++ b/man/fr/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "NEWUSERS" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "NEWUSERS" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -99,7 +99,9 @@ Ce champ est copi\('e dans le champ GECOS de l\*(Aqutilisateur\&. .RS 4 Ce champ est utilis\('e pour d\('efinir le r\('epertoire personnel de l\*(Aqutilisateur\&. .sp -Si ce champ n\*(Aqindique pas de r\('epertoire existant, le r\('epertoire indiqu\('e est cr\('e\('e, avec comme propri\('etaire l\*(Aqutilisateur en cours de cr\('eation ou mis \(`a jour et son groupe primaire\&. +If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. Note that +\fInewusers does not create parent directories \fR +of the new user\*(Aqs home directory\&. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure\&. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified\&. .sp If the home directory of an existing user is changed, \fBnewusers\fR @@ -193,7 +195,9 @@ D\('efinir les algorithmes de chiffrement par d\('efaut du syst\(`eme pour coder It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -263,7 +267,7 @@ Nombre maximum de jours de validit\('e d\*(Aqun mot de passe\&. Apr\(`es cette d .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Nombre minimum de jours autoris\('e avant la modification d\*(Aqun mot de passe\&. Toute tentative de modification du mot de passe avant cette dur\('ee est rejet\('ee\&. S\*(Aqil n\*(Aqest pas pr\('ecis\('e, la valeur de \-1 est utilis\('ee (ce qui enl\(`eve toute restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -282,7 +286,7 @@ or .sp Avec beaucoup de rounds, il est plus difficile de trouver le mot de passe avec une attaque par force brute\&. Veuillez remarquer que plus de ressources processeur seront n\('ecessaires pour authentifier les utilisateurs\&. .sp -Si non pr\('ecis\('ee, la libc utilisera le nombre de rounds par d\('efaut (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Les valeurs doivent \(^etre comprises dans l\*(Aqintervalle 1\ \&000\ \&\-\ \&999\ \&999\ \&999\&. .sp diff --git a/man/fr/man8/nologin.8 b/man/fr/man8/nologin.8 index a21be943..cb59e075 100644 --- a/man/fr/man8/nologin.8 +++ b/man/fr/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "NOLOGIN" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "NOLOGIN" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/pwck.8 b/man/fr/man8/pwck.8 index 39f0a98e..a110453d 100644 --- a/man/fr/man8/pwck.8 +++ b/man/fr/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "PWCK" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "PWCK" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -249,6 +249,11 @@ The following configuration variables in /etc/login\&.defs change the behavior of this tool: .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBPASS_MAX_DAYS\fR (number) .RS 4 Nombre maximum de jours de validit\('e d\*(Aqun mot de passe\&. Apr\(`es cette dur\('ee, une modification du mot de passe est obligatoire\&. S\*(Aqil n\*(Aqest pas pr\('ecis\('e, la valeur de \-1 est utilis\('ee (ce qui enl\(`eve toute restriction)\&. @@ -256,7 +261,7 @@ Nombre maximum de jours de validit\('e d\*(Aqun mot de passe\&. Apr\(`es cette d .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Nombre minimum de jours autoris\('e avant la modification d\*(Aqun mot de passe\&. Toute tentative de modification du mot de passe avant cette dur\('ee est rejet\('ee\&. S\*(Aqil n\*(Aqest pas pr\('ecis\('e, la valeur de \-1 est utilis\('ee (ce qui enl\(`eve toute restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/fr/man8/pwconv.8 b/man/fr/man8/pwconv.8 index afd46da4..1281cdb6 100644 --- a/man/fr/man8/pwconv.8 +++ b/man/fr/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "PWCONV" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "PWCONV" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -173,7 +173,7 @@ Nombre maximum de jours de validit\('e d\*(Aqun mot de passe\&. Apr\(`es cette d .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Nombre minimum de jours autoris\('e avant la modification d\*(Aqun mot de passe\&. Toute tentative de modification du mot de passe avant cette dur\('ee est rejet\('ee\&. S\*(Aqil n\*(Aqest pas pr\('ecis\('e, la valeur de \-1 est utilis\('ee (ce qui enl\(`eve toute restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/fr/man8/sulogin.8 b/man/fr/man8/sulogin.8 index c1bb5b30..648d941c 100644 --- a/man/fr/man8/sulogin.8 +++ b/man/fr/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "SULOGIN" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "SULOGIN" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/fr/man8/useradd.8 b/man/fr/man8/useradd.8 index 68bda49e..e95200e8 100644 --- a/man/fr/man8/useradd.8 +++ b/man/fr/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "USERADD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "USERADD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -97,9 +97,11 @@ as the value for the user\*(Aqs login directory\&. The default is to append the \fILOGIN\fR name to \fIBASE_DIR\fR -and use that as the login directory name\&. The directory +and use that as the login directory name\&. If the directory \fIHOME_DIR\fR -does not have to exist but will not be created if it is missing\&. +does not exist, then it will be created unless the +\fB\-M\fR +option is specified\&. .RE .PP \fB\-D\fR, \fB\-\-defaults\fR @@ -211,6 +213,14 @@ options can be specified, e\&.g\&.: N\*(Aqajoute pas l\*(Aqutilisateur aux bases de donn\('ees lastlog et faillog\&. .sp Par d\('efaut, les entr\('ees de l\*(Aqutilisateur dans les bases de donn\('ees lastlog et faillog sont remises \(`a z\('ero pour \('eviter de r\('eutiliser les entr\('ees d\*(Aqun utilisateur pr\('ec\('edemment supprim\('e\&. +.sp +If this option is not specified, +\fBuseradd\fR +will also consult the variable +\fBLOG_INIT\fR +in the +/etc/default/useradd +if set to no the user will not be added to the lastlog and faillog databases\&. .RE .PP \fB\-m\fR, \fB\-\-create\-home\fR @@ -222,6 +232,8 @@ option) will be copied to the home directory\&. By default, if this option is not specified and \fBCREATE_HOME\fR is not enabled, no home directories are created\&. +.sp +The directory where the user\*(Aqs home directory is created must exist and have proper SELinux context and permissions\&. Otherwise the user\*(Aqs home directory cannot be created or accessed\&. .RE .PP \fB\-M\fR, \fB\-\-no\-create\-home\fR @@ -492,7 +504,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -R\('epertoire d\*(Aqattente des courriels (\(Fo\ \&mail spool directory\ \&\(Fc)\&. Ce param\(`etre est n\('ecessaire pour manipuler les bo\(^ites \(`a lettres lorsque le compte d\*(Aqun utilisateur est modifi\('e ou supprim\('e\&. S\*(Aqil n\*(Aqest pas sp\('ecifi\('e, une valeur par d\('efaut d\('efinie \(`a la compilation est utilis\('ee\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -539,7 +553,7 @@ Nombre maximum de jours de validit\('e d\*(Aqun mot de passe\&. Apr\(`es cette d .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Nombre minimum de jours autoris\('e avant la modification d\*(Aqun mot de passe\&. Toute tentative de modification du mot de passe avant cette dur\('ee est rejet\('ee\&. S\*(Aqil n\*(Aqest pas pr\('ecis\('e, la valeur de \-1 est utilis\('ee (ce qui enl\(`eve toute restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -693,6 +707,20 @@ Informations s\('ecuris\('ees sur les groupes\&. Valeurs par d\('efaut pour la cr\('eation de comptes\&. .RE .PP +/etc/shadow\-maint/useradd\-pre\&.d/*, /etc/shadow\-maint/useradd\-post\&.d/* +.RS 4 +Run\-part files to execute during user addition\&. The environment variable +\fBACTION\fR +will be populated with useradd and +\fBSUBJECT\fR +with the +\fBusername\fR\&. +useradd\-pre\&.d +will be executed prior to any user addition\&. +useradd\-post\&.d +will execute after user addition\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/skel/ .RS 4 R\('epertoire contenant les fichiers par d\('efaut\&. diff --git a/man/fr/man8/userdel.8 b/man/fr/man8/userdel.8 index 9f2933c5..4de7332b 100644 --- a/man/fr/man8/userdel.8 +++ b/man/fr/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "USERDEL" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "USERDEL" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -106,7 +106,9 @@ change the behavior of this tool: .PP \fBMAIL_DIR\fR (string) .RS 4 -R\('epertoire d\*(Aqattente des courriels (\(Fo\ \&mail spool directory\ \&\(Fc)\&. Ce param\(`etre est n\('ecessaire pour manipuler les bo\(^ites \(`a lettres lorsque le compte d\*(Aqun utilisateur est modifi\('e ou supprim\('e\&. S\*(Aqil n\*(Aqest pas sp\('ecifi\('e, une valeur par d\('efaut d\('efinie \(`a la compilation est utilis\('ee\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -221,6 +223,21 @@ Informations sur les comptes des utilisateurs\&. Informations s\('ecuris\('ees sur les comptes utilisateurs\&. .RE .PP +/etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* +.RS 4 +Run\-part files to execute during user deletion\&. The environment variable +\fBACTION\fR +will be populated with +\fBuserdel\fR +and +\fBSUBJECT\fR +with the username\&. +userdel\-pre\&.d +will be executed prior to any user deletion\&. +userdel\-post\&.d +will execute after user deletion\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/subgid .RS 4 IDs des groupes subalternes d\*(Aqun utilisateur\&. diff --git a/man/fr/man8/usermod.8 b/man/fr/man8/usermod.8 index 55dcd7ca..b748a699 100644 --- a/man/fr/man8/usermod.8 +++ b/man/fr/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "USERMOD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "USERMOD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,7 @@ Le nouveau r\('epertoire personnel de l\*(Aqutilisateur\&. .sp If the \fB\-m\fR -option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. +option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. If the current home directory does not exist the new home directory will not be created\&. .RE .PP \fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR @@ -107,6 +107,9 @@ Nom du groupe ou identifiant num\('erique du groupe de connexion initial de l\*( Tout fichier du r\('epertoire personnel de l\*(Aqutilisateur appartenant au groupe primaire pr\('ec\('edent de l\*(Aqutilisateur appartiendra \(`a ce nouveau groupe\&. .sp Le groupe propri\('etaire des fichiers en dehors du r\('epertoire personnel de l\*(Aqutilisateur doit \(^etre modifi\('e manuellement\&. +.sp +The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. .RE .PP \fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] @@ -143,7 +146,7 @@ to .PP \fB\-m\fR, \fB\-\-move\-home\fR .RS 4 -D\('eplacer le contenu du r\('epertoire personnel de l\*(Aqutilisateur vers un nouvel emplacement\&. +Move the content of the user\*(Aqs home directory to the new location\&. If the current home directory does not exist the new home directory will not be created\&. .sp This option is only valid in combination with the \fB\-d\fR @@ -172,6 +175,13 @@ This option is not recommended because the password (or encrypted password) will Il est n\('ecessaire de v\('erifier si le mot de passe respecte la politique de mots de passe du syst\(`eme\&. .RE .PP +\fB\-r\fR, \fB\-\-remove\fR +.RS 4 +Remove the user from named supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. +.RE +.PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the @@ -192,7 +202,7 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -Nom du nouvel interpr\('eteur de commandes initial (\(Fo\ \&login shell\ \&\(Fc) de l\*(Aqutilisateur\&. Si ce champ est vide, le syst\(`eme s\('electionnera l\*(Aqinterpr\('eteur de commandes initial par d\('efaut\&. +The path of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. .RE .PP \fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR @@ -207,6 +217,9 @@ La bo\(^ite aux lettres et tous les fichiers poss\('ed\('es par l\*(Aqutilisateu .sp Le propri\('etaire des fichiers en dehors du r\('epertoire personnel de l\*(Aqutilisateur doit \(^etre modifi\('e manuellement\&. .sp +The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. +.sp No checks will be performed with regard to the \fBUID_MIN\fR, \fBUID_MAX\fR, @@ -332,7 +345,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -R\('epertoire d\*(Aqattente des courriels (\(Fo\ \&mail spool directory\ \&\(Fc)\&. Ce param\(`etre est n\('ecessaire pour manipuler les bo\(^ites \(`a lettres lorsque le compte d\*(Aqun utilisateur est modifi\('e ou supprim\('e\&. S\*(Aqil n\*(Aqest pas sp\('ecifi\('e, une valeur par d\('efaut d\('efinie \(`a la compilation est utilis\('ee\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/fr/man8/vipw.8 b/man/fr/man8/vipw.8 index e45bc220..24cf3b4e 100644 --- a/man/fr/man8/vipw.8 +++ b/man/fr/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Commandes de gestion du syst\(`eme -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: French .\" -.TH "VIPW" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Commandes de gestion du syst\(`em" +.TH "VIPW" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Commandes de gestion du syst\(`em" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/getsubids.1.xml b/man/getsubids.1.xml new file mode 100644 index 00000000..1fded748 --- /dev/null +++ b/man/getsubids.1.xml @@ -0,0 +1,127 @@ + + + +]> + + + + + Iker + Pedrosa + Creation, 2021 + + + + getsubids + 1 + User Commands + shadow-utils + &SHADOW_UTILS_VERSION; + + + getsubids + get the subordinate id ranges for a user + + + + + getsubids + + options + + + USER + + + + + + DESCRIPTION + + The getsubids command lists the subordinate user ID + ranges for a given user. The subordinate group IDs can be listed using + the option. + + + + + OPTIONS + + The options which apply to the getsubids command are: + + + + + + + + + List the subordinate group ID ranges. + + + + + + + + + + Display help message and exit. + + + + + + + + EXAMPLE + + For example, to obtain the subordinate UIDs of the testuser: + + + +$ getsubids testuser +0: testuser 100000 65536 + + + + This command output provides (in order from left to right) the list + index, username, UID range start, and number of UIDs in range. + + + + + SEE ALSO + + + login.defs5 + , + + newgidmap1 + , + + newuidmap1 + , + + subgid5 + , + + subuid5 + , + + useradd8 + , + + userdel8 + . + + usermod8 + , + + + diff --git a/man/gpasswd.1.xml b/man/gpasswd.1.xml index ebd1b419..cd11a8e4 100644 --- a/man/gpasswd.1.xml +++ b/man/gpasswd.1.xml @@ -1,32 +1,8 @@ + + + , + + + + A list of usernames to add as members of the group. + + + The default behavior (if the , + , and options are not + specified) is defined by the + variable in /etc/login.defs. + + + @@ -318,13 +310,13 @@ 4 - GID not unique (when not used) + GID is already used (when called without ) 9 - group name not unique + group name is already used diff --git a/man/groupdel.8.xml b/man/groupdel.8.xml index 41116617..2efe813c 100644 --- a/man/groupdel.8.xml +++ b/man/groupdel.8.xml @@ -1,32 +1,8 @@ + + + , + + + + This option forces the removal of the group, even if there's some user + having the group as the primary one. + + + , diff --git a/man/groupmems.8.xml b/man/groupmems.8.xml index 6077d554..0fa65912 100644 --- a/man/groupmems.8.xml +++ b/man/groupmems.8.xml @@ -1,34 +1,10 @@ + + ,  GID + + + If group members are specified with -U, append them to the existing + member list, rather than replacing it. + + + ,  GID @@ -203,6 +188,22 @@ + + + , + + + + A list of usernames to add as members of the group. + + + The default behavior (if the , + , and options are not + specified) is defined by the + variable in /etc/login.defs. + + + @@ -274,7 +275,7 @@ 4 - E_GID_IN_USE: specified group doesn't exist + E_GID_IN_USE: group id already in use diff --git a/man/groups.1.xml b/man/groups.1.xml index 02e54329..2b5b1ff2 100644 --- a/man/groups.1.xml +++ b/man/groups.1.xml @@ -1,32 +1,8 @@ ]> - Julianne Frances @@ -192,6 +167,17 @@ + + , + + + Suppress more controversial warnings, in particular warnings about + inconsistency between group members listed in + /etc/group and + /etc/ghadow. + + + By default, grpck operates on diff --git a/man/gshadow.5.xml b/man/gshadow.5.xml index 6bc1ed94..7b7d560d 100644 --- a/man/gshadow.5.xml +++ b/man/gshadow.5.xml @@ -1,31 +1,7 @@ gshadow 5 - File Formats and Conversions + File Formats and Configuration Files shadow-utils &SHADOW_UTILS_VERSION; diff --git a/man/hu/Makefile.in b/man/hu/Makefile.in index f2ffb334..341909fe 100644 --- a/man/hu/Makefile.in +++ b/man/hu/Makefile.in @@ -89,8 +89,14 @@ build_triplet = @build@ host_triplet = @host@ subdir = man/hu ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -180,7 +186,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -209,9 +214,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -249,7 +259,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/man/hu/man1/chsh.1 b/man/hu/man1/chsh.1 index b4b1b4d5..96a2c132 100644 --- a/man/hu/man1/chsh.1 +++ b/man/hu/man1/chsh.1 @@ -1,33 +1,5 @@ -.\" Copyright 1990, John F. Haugh II -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by John F. Haugh, II -.\" and other contributors. -.\" 4. Neither the name of John F. Haugh, II nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JOHN HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1990, John F. Haugh II +.\" SPDX-License-Identifier: BSD-3-Clause .\" .\" $Id$ .\" diff --git a/man/hu/man1/groups.1 b/man/hu/man1/groups.1 index 9b87e511..c09a8bfd 100644 --- a/man/hu/man1/groups.1 +++ b/man/hu/man1/groups.1 @@ -1,29 +1,5 @@ -.\" Copyright 1991 \- 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1991 \- 1994, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .\" .\" $Id$ .\" diff --git a/man/hu/man1/login.1 b/man/hu/man1/login.1 index f84ea824..7f38ff17 100644 --- a/man/hu/man1/login.1 +++ b/man/hu/man1/login.1 @@ -1,29 +1,5 @@ -.\" Copyright 1989 \- 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1989 \- 1994, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .\" .\" $Id$ .\" diff --git a/man/hu/man1/newgrp.1 b/man/hu/man1/newgrp.1 index 714f1875..b2ce878a 100644 --- a/man/hu/man1/newgrp.1 +++ b/man/hu/man1/newgrp.1 @@ -1,30 +1,7 @@ -.\" Copyright 1991, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" Hungarian translation by Peter Mamuzsics -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. .\" .\" $Id$ .\" diff --git a/man/hu/man1/passwd.1 b/man/hu/man1/passwd.1 index dab98dd1..380f6ae9 100644 --- a/man/hu/man1/passwd.1 +++ b/man/hu/man1/passwd.1 @@ -1,32 +1,5 @@ -.\" Copyright 1989 \- 1994, John F. Haugh II -.\" All rights reserved. -.\" -.\" Redistribution is allowed, provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by John F. Haugh, II -.\" and other contributors. -.\" 4. Neither the name of John F. Haugh, II nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JOHN HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JOHN HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1989 \- 1994, John F. Haugh II +.\" SPDX-License-Identifier: BSD-3-Clause .\" .\" $Id$ .\" diff --git a/man/hu/man8/lastlog.8 b/man/hu/man8/lastlog.8 index a7058c5c..68995a72 100644 --- a/man/hu/man8/lastlog.8 +++ b/man/hu/man8/lastlog.8 @@ -1,29 +1,6 @@ -.\" Copyright 1992, Phillip Street and Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1992, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1992, Phillip Street +.\" SPDX-License-Identifier: BSD-3-Clause .\" .\" @(#)lastlog.8 3.3 08:24:58 29 Sep 1993 (National Guard Release) .\" $Id$ diff --git a/man/id.1.xml b/man/id.1.xml index e947e19c..624a3f4a 100644 --- a/man/id.1.xml +++ b/man/id.1.xml @@ -1,32 +1,8 @@ -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "CHAGE" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "CHAGE" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,13 +45,30 @@ command are: .PP \fB\-d\fR, \fB\-\-lastday\fR\ \&\fILAST_DAY\fR .RS 4 -Imposta la data dell\*(Aqultimo cambio della password, espressa come il numero di giorni trascorsi dal 1 gennaio 1970\&. La data pu\(`o anche essere specificata nel formato AAAA\-MM\-GG o nella notazione comunemente usata nel proprio paese\&. +Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. If the +\fILAST_DAY\fR +is set to +\fI0\fR +the user is forced to change his password on the next log on\&. .RE .PP \fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 Imposta la data o il numero di giorni dal 1 gennaio 1970 dal quale l\*(Aqaccount utente non sar\(`a pi\(`u accessibile\&. La data pu\(`o essere inserita nel formato AAAA\-MM\-GG (o il formato pi\(`u comunemente utilizzato nel proprio paese)\&. Un utente il cui account sia bloccato deve contattare l\*(Aqamministratore di sistema prima di poter accedere nuovamente al sistema\&. .sp +For example the following can be used to set an account to expire in 180 days: +.sp +.if n \{\ +.RS 4 +.\} +.nf + chage \-E $(date \-d +180days +%Y\-%m\-%d) + +.fi +.if n \{\ +.RE +.\} +.sp Passing the number \fI\-1\fR as the @@ -137,6 +154,14 @@ The \fBchage\fR program requires a shadow password file to be available\&. .PP +The chage program will report only the information from the shadow password file\&. This implies that configuration from other sources (e\&.g\&. LDAP or empty password hash field from the passwd file) that affect the user\*(Aqs login will not be shown in the chage output\&. +.PP +The +\fBchage\fR +program will also not report any inconsistency between the shadow and passwd files (e\&.g\&. missing x in the passwd file)\&. The +\fBpwck\fR +can be used to check for this kind of inconsistencies\&. +.PP The \fBchage\fR command is restricted to the root user, except for the diff --git a/man/it/man1/chfn.1 b/man/it/man1/chfn.1 index a4b343e3..53eb1c50 100644 --- a/man/it/man1/chfn.1 +++ b/man/it/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "CHFN" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "CHFN" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/chsh.1 b/man/it/man1/chsh.1 index 75c6263d..352428de 100644 --- a/man/it/man1/chsh.1 +++ b/man/it/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "CHSH" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "CHSH" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/expiry.1 b/man/it/man1/expiry.1 index dc6ba869..27fb8023 100644 --- a/man/it/man1/expiry.1 +++ b/man/it/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "EXPIRY" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "EXPIRY" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/gpasswd.1 b/man/it/man1/gpasswd.1 index 5e71fc5a..cffaf98c 100644 --- a/man/it/man1/gpasswd.1 +++ b/man/it/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GPASSWD" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "GPASSWD" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -147,7 +147,9 @@ Definisce l\*(Aqalgoritmo di cifratura predefinito per le password (se non ne vi It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -196,7 +198,7 @@ or .sp Con molti cicli \(`e pi\(`u difficile trovare una password usando la forza bruta\&. Ma va notato che \(`e richiesta maggiore potenza di calcolo per autenticare gli utenti\&. .sp -Se non specificato sar\(`a la libc a scegliere il numero di cicli (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Il valore deve essere compreso tra 1\&.000 e 999\&.999\&.999\&. .sp diff --git a/man/it/man1/groups.1 b/man/it/man1/groups.1 index fbbc9761..84f9d194 100644 --- a/man/it/man1/groups.1 +++ b/man/it/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GROUPS" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "GROUPS" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/id.1 b/man/it/man1/id.1 index 84267bb3..a67952f6 100644 --- a/man/it/man1/id.1 +++ b/man/it/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "ID" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "ID" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/login.1 b/man/it/man1/login.1 index 4e2af263..0f1ddd66 100644 --- a/man/it/man1/login.1 +++ b/man/it/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "LOGIN" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "LOGIN" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -318,7 +318,9 @@ Andrebbe disabilitato se i file di avvio della shell effettuano gi\(`a questo co .PP \fBMAIL_DIR\fR (string) .RS 4 -La directory di spool per la posta\&. Questa \(`e necessaria per manipolare la casella di posta quando il corrispondente account utente viene modificato o cancellato\&. Se non \(`e specificata viene utilizzato un valore impostato al momento della compilazione\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/it/man1/newgrp.1 b/man/it/man1/newgrp.1 index e22b925e..ed875ae0 100644 --- a/man/it/man1/newgrp.1 +++ b/man/it/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "NEWGRP" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "NEWGRP" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/passwd.1 b/man/it/man1/passwd.1 index ee063579..1567fb42 100644 --- a/man/it/man1/passwd.1 +++ b/man/it/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "PASSWD" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "PASSWD" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -223,7 +223,9 @@ Definisce l\*(Aqalgoritmo di cifratura predefinito per le password (se non ne vi It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -282,7 +284,7 @@ or .sp Con molti cicli \(`e pi\(`u difficile trovare una password usando la forza bruta\&. Ma va notato che \(`e richiesta maggiore potenza di calcolo per autenticare gli utenti\&. .sp -Se non specificato sar\(`a la libc a scegliere il numero di cicli (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Il valore deve essere compreso tra 1\&.000 e 999\&.999\&.999\&. .sp diff --git a/man/it/man1/sg.1 b/man/it/man1/sg.1 index 5d6ad20d..17fd210c 100644 --- a/man/it/man1/sg.1 +++ b/man/it/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "SG" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "SG" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man1/su.1 b/man/it/man1/su.1 index 5b719a37..6e4572f8 100644 --- a/man/it/man1/su.1 +++ b/man/it/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi utente -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "SU" "1" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi utente" +.TH "SU" "1" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi utente" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -312,7 +312,9 @@ Andrebbe disabilitato se i file di avvio della shell effettuano gi\(`a questo co .PP \fBMAIL_DIR\fR (string) .RS 4 -La directory di spool per la posta\&. Questa \(`e necessaria per manipolare la casella di posta quando il corrispondente account utente viene modificato o cancellato\&. Se non \(`e specificata viene utilizzato un valore impostato al momento della compilazione\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/it/man3/shadow.3 b/man/it/man3/shadow.3 index 0b373f74..ca8975e3 100644 --- a/man/it/man3/shadow.3 +++ b/man/it/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Chiamate di libreria -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "SHADOW" "3" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Chiamate di libreria" +.TH "SHADOW" "3" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Chiamate di libreria" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/faillog.5 b/man/it/man5/faillog.5 index 157d85f5..05c4d11b 100644 --- a/man/it/man5/faillog.5 +++ b/man/it/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "FAILLOG" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "FAILLOG" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/gshadow.5 b/man/it/man5/gshadow.5 index 5417f088..9f724e51 100644 --- a/man/it/man5/gshadow.5 +++ b/man/it/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GSHADOW" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "GSHADOW" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/limits.5 b/man/it/man5/limits.5 index 491cf336..4eb2aa3d 100644 --- a/man/it/man5/limits.5 +++ b/man/it/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "LIMITS" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "LIMITS" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/login.access.5 b/man/it/man5/login.access.5 index 2af15c1d..dd80da7c 100644 --- a/man/it/man5/login.access.5 +++ b/man/it/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "LOGIN\&.ACCESS" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "LOGIN\&.ACCESS" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/login.defs.5 b/man/it/man5/login.defs.5 index 970ed4ab..e657bddf 100644 --- a/man/it/man5/login.defs.5 +++ b/man/it/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "LOGIN\&.DEFS" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "LOGIN\&.DEFS" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -126,7 +126,9 @@ Definisce l\*(Aqalgoritmo di cifratura predefinito per le password (se non ne vi It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -223,6 +225,15 @@ The default value for \fBGID_MAX\fR) is 1000 (resp\&. 60000)\&. .RE .PP +\fBHMAC_CRYPTO_ALGO\fR (string) +.RS 4 +Used to select the HMAC cryptography algorithm that the pam_timestamp module is going to use to calculate the keyed\-hash message authentication code\&. +.sp +Note: Check +hmac(3) +to see the possible algorithms that are available in your system\&. +.RE +.PP \fBHOME_MODE\fR (number) .RS 4 The mode for new home directories\&. If not specified, the @@ -306,7 +317,9 @@ Andrebbe disabilitato se i file di avvio della shell effettuano gi\(`a questo co .PP \fBMAIL_DIR\fR (string) .RS 4 -La directory di spool per la posta\&. Questa \(`e necessaria per manipolare la casella di posta quando il corrispondente account utente viene modificato o cancellato\&. Se non \(`e specificata viene utilizzato un valore impostato al momento della compilazione\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -372,6 +385,11 @@ Se definito \(`e una lista di nomi di file con \(Fomessaggi del giorno\(Fc separ Se definito \(`e il nome di un file che impedisce l\*(Aqaccesso degli utenti non root\&. Il suo contenuto dovrebbe essere un messaggio che indica il motivo per il quale l\*(Aqaccesso \(`e impedito\&. .RE .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBOBSCURE_CHECKS_ENAB\fR (boolean) .RS 4 Abilita controlli addizionali durante il cambio password\&. @@ -394,7 +412,7 @@ Il numero massimo di giorni che una password pu\(`o essere utilizzata\&. Se la p .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Il numero minimo di giorni tra due cambiamenti di password\&. Ogni tentativo di cambiare la password prima di questo periodo verr\(`a rifiutato\&. Se non specificato viene assunto \-1 (che disabilita questo controllo)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -442,7 +460,7 @@ or .sp Con molti cicli \(`e pi\(`u difficile trovare una password usando la forza bruta\&. Ma va notato che \(`e richiesta maggiore potenza di calcolo per autenticare gli utenti\&. .sp -Se non specificato sar\(`a la libc a scegliere il numero di cicli (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Il valore deve essere compreso tra 1\&.000 e 999\&.999\&.999\&. .sp diff --git a/man/it/man5/passwd.5 b/man/it/man5/passwd.5 index c2665bd5..9d638971 100644 --- a/man/it/man5/passwd.5 +++ b/man/it/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "PASSWD" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "PASSWD" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -145,8 +145,8 @@ for details on how this string is interpreted\&. If the password field contains some string that is not a valid result of \fBcrypt\fR(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in the system by other means)\&. .PP -The comment field is used by various system utilities, such as -\fBfinger\fR(1)\&. +The comment field, also known as the gecos field, is used by various system utilities, such as +\fBfinger\fR(1)\&. The use of an ampersand here will be replaced by the capitalised login name when the field is used or displayed by such system utilities\&. .PP The home directory field provides the name of the initial working directory\&. The \fBlogin\fR diff --git a/man/it/man5/porttime.5 b/man/it/man5/porttime.5 index 0b169ad5..df69087a 100644 --- a/man/it/man5/porttime.5 +++ b/man/it/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "PORTTIME" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "PORTTIME" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man5/shadow.5 b/man/it/man5/shadow.5 index 3a66bc0c..4860b6ed 100644 --- a/man/it/man5/shadow.5 +++ b/man/it/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "SHADOW" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "SHADOW" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -61,7 +61,7 @@ If the password field contains some string that is not a valid result of .PP \fBdata dell\*(Aqultimo cambio di password\fR .RS 4 -Data dell\*(Aqultimo cambio di password espressa in numero di giorni a partire dal 1 gennaio 1970\&. +The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp The value 0 has a special meaning, which is that the user should change her password the next time she will log in the system\&. .sp @@ -72,7 +72,7 @@ Un campo vuoto implica che la scadenza della password \(`e disabilitata\&. .RS 4 L\*(Aqet\(`a minima password \(`e il numero di giorni che l\*(Aqutente dovr\(`a attendere prima di poter cambiare nuovamente la propria password\&. .sp -Un campo vuoto o con valore 0 indica che non c\*(Aq\(`e una et\(`a minima della password\&. +An empty field and value 0 mean that there is no minimum password age\&. .RE .PP \fBet\(`a massima password\fR @@ -97,14 +97,14 @@ Un campo vuoto e il valore 0 indicano che non c\*(Aq\(`e un periodo di avviso pa .RS 4 Il numero di giorni dopo la scadenza della password (vedere et\(`a massima password, sopra) durante il quale la password \(`e ancora accettata (e l\*(Aqutente dovrebbe aggiornare la propria password al primo accesso)\&. .sp -Dopo la scadenza della password e di questo periodo, l\*(Aqutente non potr\(`a accedere usando questa password, ma dovr\(`a contattare l\*(Aqamministratore\&. +After expiration of the password and this expiration period is elapsed, no login is possible for the user\&. The user should contact her administrator\&. .sp Un campo vuoto implica che non \(`e applicato il periodo di inattivit\(`a\&. .RE .PP \fBdata scadenza account\fR .RS 4 -La data di scadenza dell\*(Aqaccount, espressa in numero di giorni dal 1 gennaio 1970\&. +The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp Note that an account expiration differs from a password expiration\&. In case of an account expiration, the user shall not be allowed to login\&. In case of a password expiration, the user is not allowed to login using her password\&. .sp diff --git a/man/it/man5/suauth.5 b/man/it/man5/suauth.5 index 77246542..dde0e813 100644 --- a/man/it/man5/suauth.5 +++ b/man/it/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 -.\" Manual: Formati di file e conversioni -.\" Source: shadow-utils 4.8.1 +.\" Date: 02/01/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "SUAUTH" "5" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Formati di file e conversioni" +.TH "SUAUTH" "5" "02/01/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/chgpasswd.8 b/man/it/man8/chgpasswd.8 index abe2ae38..2b3ad83d 100644 --- a/man/it/man8/chgpasswd.8 +++ b/man/it/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "CHGPASSWD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "CHGPASSWD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -121,7 +121,9 @@ Definisce l\*(Aqalgoritmo di cifratura predefinito per le password (se non ne vi It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -170,7 +172,7 @@ or .sp Con molti cicli \(`e pi\(`u difficile trovare una password usando la forza bruta\&. Ma va notato che \(`e richiesta maggiore potenza di calcolo per autenticare gli utenti\&. .sp -Se non specificato sar\(`a la libc a scegliere il numero di cicli (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Il valore deve essere compreso tra 1\&.000 e 999\&.999\&.999\&. .sp diff --git a/man/it/man8/chpasswd.8 b/man/it/man8/chpasswd.8 index e704d8c3..fd7b18e9 100644 --- a/man/it/man8/chpasswd.8 +++ b/man/it/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "CHPASSWD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "CHPASSWD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,9 @@ Definisce l\*(Aqalgoritmo di cifratura predefinito per le password (se non ne vi It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -173,7 +175,7 @@ or .sp Con molti cicli \(`e pi\(`u difficile trovare una password usando la forza bruta\&. Ma va notato che \(`e richiesta maggiore potenza di calcolo per autenticare gli utenti\&. .sp -Se non specificato sar\(`a la libc a scegliere il numero di cicli (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Il valore deve essere compreso tra 1\&.000 e 999\&.999\&.999\&. .sp diff --git a/man/it/man8/faillog.8 b/man/it/man8/faillog.8 index 11d0c12d..19fa5afc 100644 --- a/man/it/man8/faillog.8 +++ b/man/it/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "FAILLOG" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "FAILLOG" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/groupadd.8 b/man/it/man8/groupadd.8 index 7421e62c..d1ac2d12 100644 --- a/man/it/man8/groupadd.8 +++ b/man/it/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GROUPADD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "GROUPADD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -132,6 +132,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURAZIONE" .PP The following configuration variables in @@ -229,14 +243,13 @@ invalid argument to option .PP \fI4\fR .RS 4 -GID not unique (when -\fB\-o\fR -not used) +GID is already used (when called without +\fB\-o\fR) .RE .PP \fI9\fR .RS 4 -group name not unique +group name is already used .RE .PP \fI10\fR diff --git a/man/it/man8/groupdel.8 b/man/it/man8/groupdel.8 index 1d515a47..c7a64986 100644 --- a/man/it/man8/groupdel.8 +++ b/man/it/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GROUPDEL" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "GROUPDEL" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -44,6 +44,11 @@ The options which apply to the \fBgroupdel\fR command are: .PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +This option forces the removal of the group, even if there\*(Aqs some user having the group as the primary one\&. +.RE +.PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Mostra un messaggio di aiuto ed esce\&. diff --git a/man/it/man8/groupmems.8 b/man/it/man8/groupmems.8 index 94aeca57..8ca84b6a 100644 --- a/man/it/man8/groupmems.8 +++ b/man/it/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GROUPMEMS" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "GROUPMEMS" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/groupmod.8 b/man/it/man8/groupmod.8 index fb99b616..bf26f66f 100644 --- a/man/it/man8/groupmod.8 +++ b/man/it/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GROUPMOD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "GROUPMOD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,6 +45,11 @@ The options which apply to the \fBgroupmod\fR command are: .PP +\fB\-a\fR, \fB\-\-append\fR\ \&\fIGID\fR +.RS 4 +If group members are specified with \-U, append them to the existing member list, rather than replacing it\&. +.RE +.PP \fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 The group ID of the given @@ -123,6 +128,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURAZIONE" .PP The following configuration variables in @@ -187,7 +206,7 @@ E_BAD_ARG: invalid argument to option .PP \fI4\fR .RS 4 -E_GID_IN_USE: specified group doesn\*(Aqt exist +E_GID_IN_USE: group id already in use .RE .PP \fI6\fR diff --git a/man/it/man8/grpck.8 b/man/it/man8/grpck.8 index b3b479ce..c1627a8c 100644 --- a/man/it/man8/grpck.8 +++ b/man/it/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "GRPCK" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "GRPCK" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -159,6 +159,14 @@ and /etc/gshadow by GID\&. .RE .PP +\fB\-S\fR, \fB\-\-silence\-warnings\fR +.RS 4 +Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in +/etc/group +and +/etc/ghadow\&. +.RE +.PP By default, \fBgrpck\fR operates on diff --git a/man/it/man8/lastlog.8 b/man/it/man8/lastlog.8 index 32a8a16c..cd11fda4 100644 --- a/man/it/man8/lastlog.8 +++ b/man/it/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "LASTLOG" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "LASTLOG" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -136,3 +136,7 @@ Database degli orari dei precedenti accessi utente\&. .SH "AVVISI/CAVEAT" .PP Se ci sono dei grossi scarti tra i valori di UID, il programma lastlog pu\(`o restare in esecuzione per un tempo prolungato senza produrre output sullo schermo (ad es\&. se nel database lastlog non ci sono registrazioni per UID tra 170 e 800, il programma sembrer\(`a bloccato mentre esamina gli UID tra 171 e 799)\&. +.PP +Having high UIDs can create problems when handling the + /var/log/lastlog +with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/it/man8/logoutd.8 b/man/it/man8/logoutd.8 index 420a3469..5c6f3b81 100644 --- a/man/it/man8/logoutd.8 +++ b/man/it/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "LOGOUTD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "LOGOUTD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/newusers.8 b/man/it/man8/newusers.8 index 20113e5b..8ebb8b07 100644 --- a/man/it/man8/newusers.8 +++ b/man/it/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "NEWUSERS" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "NEWUSERS" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -99,7 +99,9 @@ Questo campo viene copiato nel campo GECOS dell\*(Aqutente\&. .RS 4 Questo campo \(`e utilizzato per impostare la directory home dell\*(Aqutente\&. .sp -Se questo campo non contiene il nome di una directory esistente la directory viene creata, assegnandone la propriet\(`a all\*(Aqutente che si sta definendo o aggiornando e al suo gruppo primario\&. +If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. Note that +\fInewusers does not create parent directories \fR +of the new user\*(Aqs home directory\&. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure\&. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified\&. .sp If the home directory of an existing user is changed, \fBnewusers\fR @@ -193,7 +195,9 @@ Definisce l\*(Aqalgoritmo di cifratura predefinito per le password (se non ne vi It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -263,7 +267,7 @@ Il numero massimo di giorni che una password pu\(`o essere utilizzata\&. Se la p .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Il numero minimo di giorni tra due cambiamenti di password\&. Ogni tentativo di cambiare la password prima di questo periodo verr\(`a rifiutato\&. Se non specificato viene assunto \-1 (che disabilita questo controllo)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -282,7 +286,7 @@ or .sp Con molti cicli \(`e pi\(`u difficile trovare una password usando la forza bruta\&. Ma va notato che \(`e richiesta maggiore potenza di calcolo per autenticare gli utenti\&. .sp -Se non specificato sar\(`a la libc a scegliere il numero di cicli (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp Il valore deve essere compreso tra 1\&.000 e 999\&.999\&.999\&. .sp diff --git a/man/it/man8/nologin.8 b/man/it/man8/nologin.8 index c56b345f..fd806383 100644 --- a/man/it/man8/nologin.8 +++ b/man/it/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "NOLOGIN" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "NOLOGIN" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/pwck.8 b/man/it/man8/pwck.8 index a3b12b6a..305d6137 100644 --- a/man/it/man8/pwck.8 +++ b/man/it/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "PWCK" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "PWCK" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -249,6 +249,11 @@ The following configuration variables in /etc/login\&.defs change the behavior of this tool: .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBPASS_MAX_DAYS\fR (number) .RS 4 Il numero massimo di giorni che una password pu\(`o essere utilizzata\&. Se la password \(`e pi\(`u vecchia verr\(`a imposto il suo cambiamento\&. Se non specificato viene assunto \-1 (che disabilita questo controllo)\&. @@ -256,7 +261,7 @@ Il numero massimo di giorni che una password pu\(`o essere utilizzata\&. Se la p .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Il numero minimo di giorni tra due cambiamenti di password\&. Ogni tentativo di cambiare la password prima di questo periodo verr\(`a rifiutato\&. Se non specificato viene assunto \-1 (che disabilita questo controllo)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/it/man8/pwconv.8 b/man/it/man8/pwconv.8 index 176ee8a2..97ecd603 100644 --- a/man/it/man8/pwconv.8 +++ b/man/it/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "PWCONV" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "PWCONV" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -173,7 +173,7 @@ Il numero massimo di giorni che una password pu\(`o essere utilizzata\&. Se la p .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Il numero minimo di giorni tra due cambiamenti di password\&. Ogni tentativo di cambiare la password prima di questo periodo verr\(`a rifiutato\&. Se non specificato viene assunto \-1 (che disabilita questo controllo)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/it/man8/sulogin.8 b/man/it/man8/sulogin.8 index 7ee9ab68..269c0883 100644 --- a/man/it/man8/sulogin.8 +++ b/man/it/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "SULOGIN" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "SULOGIN" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/it/man8/useradd.8 b/man/it/man8/useradd.8 index d87831da..636737a8 100644 --- a/man/it/man8/useradd.8 +++ b/man/it/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "USERADD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "USERADD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -97,9 +97,11 @@ as the value for the user\*(Aqs login directory\&. The default is to append the \fILOGIN\fR name to \fIBASE_DIR\fR -and use that as the login directory name\&. The directory +and use that as the login directory name\&. If the directory \fIHOME_DIR\fR -does not have to exist but will not be created if it is missing\&. +does not exist, then it will be created unless the +\fB\-M\fR +option is specified\&. .RE .PP \fB\-D\fR, \fB\-\-defaults\fR @@ -211,6 +213,14 @@ options can be specified, e\&.g\&.: Non aggiunge l\*(Aqutente ai database \(Folastlog\(Fc e \(Fofaillog\(Fc\&. .sp By default, the user\*(Aqs entries in the lastlog and faillog databases are reset to avoid reusing the entry from a previously deleted user\&. +.sp +If this option is not specified, +\fBuseradd\fR +will also consult the variable +\fBLOG_INIT\fR +in the +/etc/default/useradd +if set to no the user will not be added to the lastlog and faillog databases\&. .RE .PP \fB\-m\fR, \fB\-\-create\-home\fR @@ -222,6 +232,8 @@ option) will be copied to the home directory\&. By default, if this option is not specified and \fBCREATE_HOME\fR is not enabled, no home directories are created\&. +.sp +The directory where the user\*(Aqs home directory is created must exist and have proper SELinux context and permissions\&. Otherwise the user\*(Aqs home directory cannot be created or accessed\&. .RE .PP \fB\-M\fR, \fB\-\-no\-create\-home\fR @@ -492,7 +504,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -La directory di spool per la posta\&. Questa \(`e necessaria per manipolare la casella di posta quando il corrispondente account utente viene modificato o cancellato\&. Se non \(`e specificata viene utilizzato un valore impostato al momento della compilazione\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -539,7 +553,7 @@ Il numero massimo di giorni che una password pu\(`o essere utilizzata\&. Se la p .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -Il numero minimo di giorni tra due cambiamenti di password\&. Ogni tentativo di cambiare la password prima di questo periodo verr\(`a rifiutato\&. Se non specificato viene assunto \-1 (che disabilita questo controllo)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -693,6 +707,20 @@ Informazioni sicure sugli account di gruppo\&. Valori predefiniti per la creazione dell\*(Aqaccount\&. .RE .PP +/etc/shadow\-maint/useradd\-pre\&.d/*, /etc/shadow\-maint/useradd\-post\&.d/* +.RS 4 +Run\-part files to execute during user addition\&. The environment variable +\fBACTION\fR +will be populated with useradd and +\fBSUBJECT\fR +with the +\fBusername\fR\&. +useradd\-pre\&.d +will be executed prior to any user addition\&. +useradd\-post\&.d +will execute after user addition\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/skel/ .RS 4 Directory contenente i file predefiniti\&. diff --git a/man/it/man8/userdel.8 b/man/it/man8/userdel.8 index aa099203..559c46f9 100644 --- a/man/it/man8/userdel.8 +++ b/man/it/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "USERDEL" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "USERDEL" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -106,7 +106,9 @@ change the behavior of this tool: .PP \fBMAIL_DIR\fR (string) .RS 4 -La directory di spool per la posta\&. Questa \(`e necessaria per manipolare la casella di posta quando il corrispondente account utente viene modificato o cancellato\&. Se non \(`e specificata viene utilizzato un valore impostato al momento della compilazione\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -221,6 +223,21 @@ Informazioni sugli account utente\&. Informazioni sicure sugli account utente\&. .RE .PP +/etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* +.RS 4 +Run\-part files to execute during user deletion\&. The environment variable +\fBACTION\fR +will be populated with +\fBuserdel\fR +and +\fBSUBJECT\fR +with the username\&. +userdel\-pre\&.d +will be executed prior to any user deletion\&. +userdel\-post\&.d +will execute after user deletion\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/subgid .RS 4 Per user subordinate group IDs\&. diff --git a/man/it/man8/usermod.8 b/man/it/man8/usermod.8 index d0f24097..67d2a1f5 100644 --- a/man/it/man8/usermod.8 +++ b/man/it/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "USERMOD" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "USERMOD" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,7 @@ La nuova directory home dell\*(Aqutente\&. .sp If the \fB\-m\fR -option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. +option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. If the current home directory does not exist the new home directory will not be created\&. .RE .PP \fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR @@ -107,6 +107,9 @@ Il nome o numero del gruppo da assegnare alla connessione dell\*(Aqutente\&. Il Tutti i file nella directory home dell\*(Aqutente che hanno come gruppo il precedente gruppo primario dell\*(Aqutente stesso verranno modificati perch\('e abbiano questo nuovo gruppo\&. .sp Il gruppo dei file che si trovano all\*(Aqesterno della directory home dell\*(Aqutente andr\(`a modificato manualmente\&. +.sp +The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. .RE .PP \fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] @@ -143,7 +146,7 @@ to .PP \fB\-m\fR, \fB\-\-move\-home\fR .RS 4 -Sposta il contenuto della directory home di un utente nella nuova posizione\&. +Move the content of the user\*(Aqs home directory to the new location\&. If the current home directory does not exist the new home directory will not be created\&. .sp This option is only valid in combination with the \fB\-d\fR @@ -172,6 +175,13 @@ This option is not recommended because the password (or encrypted password) will Ci si deve accertare che la password rispetti le norme delle password del sistema\&. .RE .PP +\fB\-r\fR, \fB\-\-remove\fR +.RS 4 +Remove the user from named supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. +.RE +.PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the @@ -192,7 +202,7 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -Il nome della nuova shell di login dell\*(Aqutente\&. Lasciando questo campo vuoto si fa in modo che il sistema selezioni la shell di login predefinita\&. +The path of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. .RE .PP \fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR @@ -207,6 +217,9 @@ La casella di posta dell\*(Aqutente e ogni altro file di propriet\(`a dell\*(Aqu .sp La propriet\(`a dei file esterni alla directory home dell\*(Aqutente va corretta manualmente\&. .sp +The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. +.sp No checks will be performed with regard to the \fBUID_MIN\fR, \fBUID_MAX\fR, @@ -332,7 +345,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -La directory di spool per la posta\&. Questa \(`e necessaria per manipolare la casella di posta quando il corrispondente account utente viene modificato o cancellato\&. Se non \(`e specificata viene utilizzato un valore impostato al momento della compilazione\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/it/man8/vipw.8 b/man/it/man8/vipw.8 index 8d3feb47..aca7caaa 100644 --- a/man/it/man8/vipw.8 +++ b/man/it/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 23/01/2020 +.\" Date: 02/01/2022 .\" Manual: Comandi per la gestione del sistema -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Italian .\" -.TH "VIPW" "8" "23/01/2020" "shadow\-utils 4\&.8\&.1" "Comandi per la gestione del si" +.TH "VIPW" "8" "02/01/2022" "shadow\-utils 4\&.11\&.1" "Comandi per la gestione del si" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/ja/Makefile.in b/man/ja/Makefile.in index 2d2ae854..e834a97e 100644 --- a/man/ja/Makefile.in +++ b/man/ja/Makefile.in @@ -91,8 +91,14 @@ host_triplet = @host@ @USE_PAM_TRUE@am__append_2 = $(man_nopam) subdir = man/ja ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -182,7 +188,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -211,9 +216,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -251,7 +261,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/man/ja/man1/chage.1 b/man/ja/man1/chage.1 index cad8bfef..e22f55f6 100644 --- a/man/ja/man1/chage.1 +++ b/man/ja/man1/chage.1 @@ -1,36 +1,8 @@ +.\" SPDX-FileCopyrightText: 1990 - 1994 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: Copyright (c) 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" $Id$ -.\" Copyright 1990 - 1994 Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. -.\" Translated Fri Feb 14 23:06:00 JST 1997 -.\" by Kazuyoshi Furutaka -.\" Modified Tue 16 Sep 2002 by NAKANO Takeo .\" .TH CHAGE 1 .SH 名前 @@ -117,4 +89,4 @@ chage \- ユーザパスワードの有効期限情報を変更する。 .BR passwd (5), .BR shadow (5) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/chfn.1 b/man/ja/man1/chfn.1 index 38971ea3..a7881ae5 100644 --- a/man/ja/man1/chfn.1 +++ b/man/ja/man1/chfn.1 @@ -1,36 +1,8 @@ +.\" SPDX-FileCopyrightText: 1990 - 1994 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" $Id$ -.\" Copyright 1990 - 1994 Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. -.\" Translated Fri Feb 14 23:06:00 JST 1997 -.\" by Kazuyoshi Furutaka -.\" Modified Tue 16 Sep 2002 by NAKANO Takeo .\" .TH CHFN 1 .SH 名前 @@ -69,4 +41,4 @@ chfn は現在のユーザアカウントに対して動作する。 .SH 関連項目 .BR passwd (5) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/chsh.1 b/man/ja/man1/chsh.1 index d56be97c..75a51330 100644 --- a/man/ja/man1/chsh.1 +++ b/man/ja/man1/chsh.1 @@ -1,36 +1,11 @@ -.\"$Id$ -.\" Copyright 1990, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1990 - 1994 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Tue 16 Sep 2002 by NAKANO Takeo +.\" $Id$ .\" .TH CHSH 1 .SH 名前 @@ -69,4 +44,4 @@ chsh \- ログインシェルを変更する .BR chfn (1), .BR passwd (5) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/expiry.1 b/man/ja/man1/expiry.1 index d671507b..6658372b 100644 --- a/man/ja/man1/expiry.1 +++ b/man/ja/man1/expiry.1 @@ -1,36 +1,13 @@ -.\" $Id$ -.\" Copyright 1990 - 1994 Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1990 - 1994 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" Modified for expiry by Ben Collins , 1999 -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 2002 NAKANO Takeo all rights reserved. .\" Translated Sun 3 Mar 2002 by NAKANO Takeo .\" Modified Tue 16 Sep 2002 by NAKANO Takeo .\" +.\" $Id$ +.\" .TH EXPIRY 1 .SH 名前 expiry \- パスワードの期限切れポリシーのチェックと執行 diff --git a/man/ja/man1/groups.1 b/man/ja/man1/groups.1 index f0a2bbfb..d316afee 100644 --- a/man/ja/man1/groups.1 +++ b/man/ja/man1/groups.1 @@ -1,37 +1,11 @@ -.\"$Id$ -.\" Copyright 1991 - 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 2001 Maki KURODA -.\" all right reserved, -.\" Translated Tue Oct 30 11:58:18 JST 2001 -.\" by Maki KURODA +.\" SPDX-FileCopyrightText: 1991 - 1994 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: Copyright (c) 2001 Maki KURODA +.\" SPDX-License-Identifier: BSD-3-Clause +.\" Translated Tue Oct 30 11:58:18 JST 2001 by Maki KURODA .\" Modified Tue 16 Sep 2002 by NAKANO Takeo .\" +.\" $Id$ +.\" .\"WORD: concurrent group set 同時所属グループ集合 .\"WORD: real group ID 実グループ ID .\"WORD: effective group ID 実効グループ ID @@ -62,4 +36,4 @@ ID 値に対応する名前が \fI/etc/group\fR に登録されていなけれ .BR getgid (2), .BR getgroups (2) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/id.1 b/man/ja/man1/id.1 index 197cbe74..3f15aa2b 100644 --- a/man/ja/man1/id.1 +++ b/man/ja/man1/id.1 @@ -1,37 +1,13 @@ -.\"$Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1991 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: Copyright (c) 2000 ISHIKAWA Keisuke +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 2000 ISHIKAWA Keisuke -.\" all rights reserved. .\" Translated Thu Nov 9 23:17:10 JST 2000 .\" by ISHIKAWA Keisuke .\" Modified Tue 16 Sep 2002 by NAKANO Takeo .\" +.\" $Id$ +.\" .TH ID 1 .SH 名前 id \- 現在のユーザ ID 名とグループ ID 名を表示する @@ -54,4 +30,4 @@ id \- 現在のユーザ ID 名とグループ ID 名を表示する .BR getgroups (2), .BR getuid (2) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/login.1 b/man/ja/man1/login.1 index 44d305e5..cd901697 100644 --- a/man/ja/man1/login.1 +++ b/man/ja/man1/login.1 @@ -1,30 +1,8 @@ -.\" $Id$ -.\" Copyright 1989 - 1994, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1989 - 1994 Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" $Id$ .\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. .TH LOGIN 1 .SH 名前 login \- システム上でセッションを開く @@ -138,4 +116,4 @@ root が \fBlogin\fP を起動した場合にのみ用いる。 .BR passwd (5), .BR getty (8) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/newgrp.1 b/man/ja/man1/newgrp.1 index a60af04c..b71bb12b 100644 --- a/man/ja/man1/newgrp.1 +++ b/man/ja/man1/newgrp.1 @@ -1,33 +1,9 @@ -.\"$Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1991 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" $Id$ .\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated & Modified Sun 3 Mar 2002 by NAKANO Takeo @@ -89,4 +65,4 @@ sg の実行元となるであろうシェルのほとんどにおいて、 .BR login (1), .BR su (1) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/passwd.1 b/man/ja/man1/passwd.1 index 15f55d46..d3425489 100644 --- a/man/ja/man1/passwd.1 +++ b/man/ja/man1/passwd.1 @@ -1,33 +1,9 @@ +.\" SPDX-FileCopyrightText: 1989 - 1994 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" $Id$ -.\" Copyright 1989 - 1994, Julianne Frances Haugh -.\" All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated 2 Mar 2002 by NAKANO Takeo @@ -214,4 +190,4 @@ NIS が動作していて、 .BR passwd (5), .BR shadow (5) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man1/su.1 b/man/ja/man1/su.1 index 9406f0dc..b3f3d05f 100644 --- a/man/ja/man1/su.1 +++ b/man/ja/man1/su.1 @@ -1,33 +1,9 @@ +.\" SPDX-FileCopyrightText: 1989 - 1990 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" $Id$ -.\" Copyright 1989 - 1990, Julianne Frances Haugh -.\" All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated Wed Apr 26 JST 2000 by Kentaro Shirakata @@ -85,4 +61,4 @@ su \- ユーザIDを変更する。またはスーパーユーザになる .BR login.defs (5), .BR suauth (5) .SH 著者 -Julianne Frances Haugh +Julianne Frances Haugh diff --git a/man/ja/man3/shadow.3 b/man/ja/man3/shadow.3 index b76a74fe..89abb7b4 100644 --- a/man/ja/man3/shadow.3 +++ b/man/ja/man3/shadow.3 @@ -1,33 +1,9 @@ +.\" SPDX-FileCopyrightText: 1989 - 1993 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause +.\" .\" $Id$ -.\" Copyright 1989 - 1993, Julianne Frances Haugh -.\" All rights reserved. .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" updated Tue 17 Sep 2002 by NAKANO Takeo @@ -150,4 +126,4 @@ shadowされたパスワードファイルへのアクセスは制限されて .BR getpwent (3), .BR shadow (5) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man5/faillog.5 b/man/ja/man5/faillog.5 index 4fdcf738..a983880c 100644 --- a/man/ja/man5/faillog.5 +++ b/man/ja/man5/faillog.5 @@ -1,33 +1,9 @@ -.\"$Id$ -.\" Copyright 1989 - 1994, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1989 - 1994 Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. +.\" $Id$ .\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Tue 18 Sep 2002 by NAKANO Takeo @@ -61,4 +37,4 @@ faillog \- ログイン失敗を記録するファイル .SH 関連項目 .BR faillog (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man5/login.defs.5 b/man/ja/man5/login.defs.5 index cb9566eb..9a812fad 100644 --- a/man/ja/man5/login.defs.5 +++ b/man/ja/man5/login.defs.5 @@ -1,34 +1,10 @@ -.\" Copyright 1991 - 1993, Julianne Frances Haugh and Chip Rosenthal -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1991 - 1993, Chip Rosenthal +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" .\" $Id$ .\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated Wed Apr 26 17:22:36 JST 2000 @@ -188,6 +164,6 @@ shadow パスワード機能によって提供されてきた機能の大部分 .BR shadow (5), .BR pam (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) .br Chip Rosenthal (chip@unicom.com) diff --git a/man/ja/man5/passwd.5 b/man/ja/man5/passwd.5 index 438f4991..56bf9152 100644 --- a/man/ja/man5/passwd.5 +++ b/man/ja/man5/passwd.5 @@ -1,33 +1,8 @@ .\"$Id$ -.\" Copyright 1989 - 1990, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1989 - 1990, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Tue 18 Sep 2002 by NAKNAO Takeo @@ -110,4 +85,4 @@ ulimit= \- ulimit の初期設定値 .BR pwunconv (8), .BR sulogin (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man5/porttime.5 b/man/ja/man5/porttime.5 index 5b6b0355..f2889576 100644 --- a/man/ja/man5/porttime.5 +++ b/man/ja/man5/porttime.5 @@ -1,33 +1,8 @@ .\" $Id$ -.\" Copyright 1989 - 1990, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1989 - 1990, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Tue 18 Sep 2002 by NAKNAO Takeo @@ -90,4 +65,4 @@ porttime \- ポートアクセス時間設定ファイル .SH 関連項目 .BR login (1) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man5/shadow.5 b/man/ja/man5/shadow.5 index 8885990d..eb179dfc 100644 --- a/man/ja/man5/shadow.5 +++ b/man/ja/man5/shadow.5 @@ -1,33 +1,8 @@ .\"$Id$ -.\" Copyright 1989 - 1990, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1989 - 1990, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Tue 18 Sep 2002 by NAKNAO Takeo @@ -99,4 +74,4 @@ a から z、A から Z のアルファベット、 .BR pwunconv (8), .BR sulogin (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/chpasswd.8 b/man/ja/man8/chpasswd.8 index e5dc43e2..4b4ffff9 100644 --- a/man/ja/man8/chpasswd.8 +++ b/man/ja/man8/chpasswd.8 @@ -1,33 +1,8 @@ .\"$Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated Wed Apr 26 18:06:10 JST 2000 @@ -67,4 +42,4 @@ .BR newusers (8), .BR useradd (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/faillog.8 b/man/ja/man8/faillog.8 index 222043a3..88f5edb2 100644 --- a/man/ja/man8/faillog.8 +++ b/man/ja/man8/faillog.8 @@ -1,34 +1,8 @@ .\"$Id$ -.\" Copyright 1989 \- 1994, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1989 \- 1994, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Sat 21 Sep 2002 by NAKANO Takeo @@ -94,4 +68,4 @@ faillog \- faillog を調べ、login 失敗の制限を設定する .BR login (1), .BR faillog (5) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/groupadd.8 b/man/ja/man8/groupadd.8 index 4bdf73db..926cc8f2 100644 --- a/man/ja/man8/groupadd.8 +++ b/man/ja/man8/groupadd.8 @@ -1,33 +1,8 @@ .\"$Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated & Modified Sat 21 Sep 2002 by NAKANO Takeo @@ -65,4 +40,4 @@ groupadd \- 新しいグループを作成する .BR userdel (8), .BR usermod (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/groupdel.8 b/man/ja/man8/groupdel.8 index 0f24453f..42222613 100644 --- a/man/ja/man8/groupdel.8 +++ b/man/ja/man8/groupdel.8 @@ -1,33 +1,8 @@ .\"$Id$ -.\" Copyright 1991 - 1993, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated & Modified Sat 21 Sep 2002 by NAKANO Takeo @@ -62,4 +37,4 @@ groupdel \- グループを削除する .BR userdel (8), .BR usermod (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/groupmod.8 b/man/ja/man8/groupmod.8 index eb0f7cf2..e0d2f7de 100644 --- a/man/ja/man8/groupmod.8 +++ b/man/ja/man8/groupmod.8 @@ -1,33 +1,7 @@ .\"$Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated & Modified Sat 21 Sep 2002 by NAKANO Takeo @@ -67,4 +41,4 @@ groupmod \- グループを修正する .BR userdel (8), .BR usermod (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/grpck.8 b/man/ja/man8/grpck.8 index c570c280..307a37a1 100644 --- a/man/ja/man8/grpck.8 +++ b/man/ja/man8/grpck.8 @@ -1,33 +1,7 @@ .\"$Id$ -.\" Copyright 1992 - 1993, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1992 - 1993, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated & Modified Sat 21 Sep 2002 by NAKANO Takeo @@ -113,4 +87,4 @@ grpck \- グループファイルが正しいかどうか検査する .IP 5 5 グループファイルを更新できない .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/lastlog.8 b/man/ja/man8/lastlog.8 index 171d6a9a..763930d5 100644 --- a/man/ja/man8/lastlog.8 +++ b/man/ja/man8/lastlog.8 @@ -1,34 +1,10 @@ .\"$Id$ -.\" Copyright 1992, Phillip Street and Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1992, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1992, Phillip Street +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" @(#)lastlog.8 3.3 08:24:58 29 Sep 1993 (National Guard Release) .\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated & Modified Thu Oct 14 1997 by NAKANO Takeo @@ -75,6 +51,6 @@ lastlog プログラムは長時間画面に何も出力しないまま UID が 171\-799 の間プログラムは何も出力しないので、 ハングしたように見える)。 .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) .BR Phillip Street diff --git a/man/ja/man8/logoutd.8 b/man/ja/man8/logoutd.8 index c8215a53..e1ff2d8b 100644 --- a/man/ja/man8/logoutd.8 +++ b/man/ja/man8/logoutd.8 @@ -1,33 +1,7 @@ .\"$Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Sat 21 Sep 2002 by NAKANO Takeo @@ -52,4 +26,4 @@ logoutd \- ログイン時間の制限を実施する .br /etc/utmp \- 現在のログインセッション .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/newusers.8 b/man/ja/man8/newusers.8 index 630660d5..604ca821 100644 --- a/man/ja/man8/newusers.8 +++ b/man/ja/man8/newusers.8 @@ -1,33 +1,7 @@ .\"$Id$ -.\" Copyright 1991 - 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1996 HANATAKA Shinya -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1996 HANATAKA Shinya +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Wed Nov 20 17:42:39 JST 1996 .\" by HANATAKA Shinya .\" Modified Sun 22 Sep 2002 by NAKANO Takeo @@ -68,4 +42,4 @@ newusers \- ユーザの新規作成や情報更新をバッチ処理で行う .BR passwd (1), .BR useradd (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/pwck.8 b/man/ja/man8/pwck.8 index e59972f9..74ebcbc2 100644 --- a/man/ja/man8/pwck.8 +++ b/man/ja/man8/pwck.8 @@ -1,33 +1,7 @@ .\"$Id$ -.\" Copyright 1992, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1992, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated Sun 3 Mar 2002 by NAKANO Takeo @@ -118,4 +92,4 @@ pwck \- パスワードファイルが正しいかどうか検査する .IP 5 5 パスワードファイルを更新出来ない .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/sulogin.8 b/man/ja/man8/sulogin.8 index b4b0fd77..d3be5833 100644 --- a/man/ja/man8/sulogin.8 +++ b/man/ja/man8/sulogin.8 @@ -1,33 +1,7 @@ .\" $Id$ -.\" Copyright 1989 - 1992, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1989 - 1992, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Modified Sun 22 Sep 2002 by NAKANO Takeo @@ -92,4 +66,4 @@ co:s:respawn:/etc/sulogin /dev/console .BR sh (1), .BR init (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/useradd.8 b/man/ja/man8/useradd.8 index 40ae9f34..6e75055c 100644 --- a/man/ja/man8/useradd.8 +++ b/man/ja/man8/useradd.8 @@ -1,33 +1,7 @@ .\" $Id$ -.\" Copyright 1991 - 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1996 HANATAKA Shinya -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1996 HANATAKA Shinya +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Wed Nov 20 17:42:39 JST 1996 .\" by HANATAKA Shinya .\" Updated Mon Mar 5 JST 2002 by Kentaro Shirakata @@ -173,4 +147,4 @@ NIS のグループにユーザを加えてはならない。 .BR userdel (8), .BR usermod (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/userdel.8 b/man/ja/man8/userdel.8 index 8cbb2182..621ae2c1 100644 --- a/man/ja/man8/userdel.8 +++ b/man/ja/man8/userdel.8 @@ -1,33 +1,7 @@ .\" $Id$ -.\" Copyright 1991 - 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated Fri Jan 12 JST 2000 by Kentaro Shirakata @@ -74,4 +48,4 @@ NIS のクライアントからは、NIS の属性値は削除できない。 .BR useradd (8), .BR usermod (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ja/man8/usermod.8 b/man/ja/man8/usermod.8 index bd2f6045..10a8fa6c 100644 --- a/man/ja/man8/usermod.8 +++ b/man/ja/man8/usermod.8 @@ -1,33 +1,7 @@ .\" $Id$ -.\" Copyright 1991 - 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" Japanese Version Copyright (c) 1997 Kazuyoshi Furutaka -.\" all rights reserved. +.\" SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh +.\" SPDX-FileCopyrightText: 1997 Kazuyoshi Furutaka +.\" SPDX-License-Identifier: BSD-3-Clause .\" Translated Fri Feb 14 23:06:00 JST 1997 .\" by Kazuyoshi Furutaka .\" Updated Tue Jan 23 17:21:08 JST 2001 @@ -142,4 +116,4 @@ NIS に関する作業は NIS サーバ上で行なわなければならない .BR useradd (8), .BR userdel (8) .SH 著者 -Julianne Frances Haugh (jockgrrl@ix.netcom.com) +Julianne Frances Haugh (julie78787@gmail.com) diff --git a/man/ko/Makefile.in b/man/ko/Makefile.in index 7dba217e..7a0c73ee 100644 --- a/man/ko/Makefile.in +++ b/man/ko/Makefile.in @@ -89,8 +89,14 @@ build_triplet = @build@ host_triplet = @host@ subdir = man/ko ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -180,7 +186,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -209,9 +214,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -249,7 +259,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/man/ko/man8/vipw.8 b/man/ko/man8/vipw.8 index c36f908e..0a529595 100644 --- a/man/ko/man8/vipw.8 +++ b/man/ko/man8/vipw.8 @@ -1,33 +1,5 @@ -.\" Copyright (c) 1983, 1991 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. All advertising materials mentioning features or use of this software -.\" must display the following acknowledgement: -.\" This product includes software developed by the University of -.\" California, Berkeley and its contributors. -.\" 4. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1983, 1991 The Regents of the University of California. +.\" SPDX-License-Identifier: BSD-3-Clause .\" .\" from: @(#)vipw.8 6.7 (Berkeley) 3/16/91 .\" $Id$ diff --git a/man/lastlog.8.xml b/man/lastlog.8.xml index fc096c8f..bd309f2e 100644 --- a/man/lastlog.8.xml +++ b/man/lastlog.8.xml @@ -1,33 +1,9 @@ + + Having high UIDs can create problems when handling the + /var/log/lastlog with external tools. Although the + actual file is sparse and does not use too much space, certain + applications are not designed to identify sparse files by default and may + require a specific option to handle them. + diff --git a/man/limits.5.xml b/man/limits.5.xml index 1215f13f..0b459bc3 100644 --- a/man/limits.5.xml +++ b/man/limits.5.xml @@ -1,34 +1,10 @@ limits 5 - File Formats and Conversions + File Formats and Configuration Files shadow-utils &SHADOW_UTILS_VERSION; diff --git a/man/login.1.xml b/man/login.1.xml index 1bca536f..fbfbbf18 100644 --- a/man/login.1.xml +++ b/man/login.1.xml @@ -1,32 +1,8 @@ login.access 5 - File Formats and Conversions + File Formats and Configuration Files shadow-utils &SHADOW_UTILS_VERSION; diff --git a/man/login.defs.5.xml b/man/login.defs.5.xml index 9e95da20..ab62fa86 100644 --- a/man/login.defs.5.xml +++ b/man/login.defs.5.xml @@ -1,33 +1,9 @@ + @@ -67,6 +44,7 @@ + @@ -123,7 +101,7 @@ login.defs 5 - File Formats and Conversions + File Formats and Configuration Files shadow-utils &SHADOW_UTILS_VERSION; @@ -186,6 +164,7 @@ &FAKE_SHELL; &FTMP_FILE; &GID_MAX; + &HMAC_CRYPTO_ALGO; &HOME_MODE; &HUSHLOGIN_FILE; &ISSUE_FILE; @@ -203,6 +182,7 @@ &MD5_CRYPT_ENAB; &MOTD_FILE; &NOLOGINS_FILE; + &NONEXISTENT; &OBSCURE_CHECKS_ENAB; &PASS_ALWAYS_WARN; &PASS_CHANGE_TRIES; diff --git a/man/login.defs.d/CHFN_AUTH.xml b/man/login.defs.d/CHFN_AUTH.xml index 941e5f95..771fb0bb 100644 --- a/man/login.defs.d/CHFN_AUTH.xml +++ b/man/login.defs.d/CHFN_AUTH.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/CHFN_RESTRICT.xml b/man/login.defs.d/CHFN_RESTRICT.xml index ecc21b7b..a00ab3ce 100644 --- a/man/login.defs.d/CHFN_RESTRICT.xml +++ b/man/login.defs.d/CHFN_RESTRICT.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/CHSH_AUTH.xml b/man/login.defs.d/CHSH_AUTH.xml index 0d7139f8..c690d2dc 100644 --- a/man/login.defs.d/CHSH_AUTH.xml +++ b/man/login.defs.d/CHSH_AUTH.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/CONSOLE.xml b/man/login.defs.d/CONSOLE.xml index a5f69325..1d0fefc9 100644 --- a/man/login.defs.d/CONSOLE.xml +++ b/man/login.defs.d/CONSOLE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/CONSOLE_GROUPS.xml b/man/login.defs.d/CONSOLE_GROUPS.xml index f464153b..0fd874c4 100644 --- a/man/login.defs.d/CONSOLE_GROUPS.xml +++ b/man/login.defs.d/CONSOLE_GROUPS.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/CREATE_HOME.xml b/man/login.defs.d/CREATE_HOME.xml index fe404772..769c968a 100644 --- a/man/login.defs.d/CREATE_HOME.xml +++ b/man/login.defs.d/CREATE_HOME.xml @@ -1,30 +1,6 @@ (boolean) diff --git a/man/login.defs.d/DEFAULT_HOME.xml b/man/login.defs.d/DEFAULT_HOME.xml index bb9982b8..b5944c14 100644 --- a/man/login.defs.d/DEFAULT_HOME.xml +++ b/man/login.defs.d/DEFAULT_HOME.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/ENCRYPT_METHOD.xml b/man/login.defs.d/ENCRYPT_METHOD.xml index 325d0251..85dd79b0 100644 --- a/man/login.defs.d/ENCRYPT_METHOD.xml +++ b/man/login.defs.d/ENCRYPT_METHOD.xml @@ -1,30 +1,6 @@ (string) @@ -39,6 +15,9 @@ MD5, SHA256, SHA512. + MD5 and DES should not be used for new hashes, see + crypt5 + for recommendations. Note: this parameter overrides the diff --git a/man/login.defs.d/ENVIRON_FILE.xml b/man/login.defs.d/ENVIRON_FILE.xml index ee85d8c8..f27f538d 100644 --- a/man/login.defs.d/ENVIRON_FILE.xml +++ b/man/login.defs.d/ENVIRON_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/ENV_HZ.xml b/man/login.defs.d/ENV_HZ.xml index 9bbc2554..daf1752f 100644 --- a/man/login.defs.d/ENV_HZ.xml +++ b/man/login.defs.d/ENV_HZ.xml @@ -1,32 +1,8 @@ diff --git a/man/login.defs.d/ENV_PATH.xml b/man/login.defs.d/ENV_PATH.xml index a3852fa7..633ed810 100644 --- a/man/login.defs.d/ENV_PATH.xml +++ b/man/login.defs.d/ENV_PATH.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/ENV_SUPATH.xml b/man/login.defs.d/ENV_SUPATH.xml index bbd07f8b..d34298b2 100644 --- a/man/login.defs.d/ENV_SUPATH.xml +++ b/man/login.defs.d/ENV_SUPATH.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/ENV_TZ.xml b/man/login.defs.d/ENV_TZ.xml index 90c8bcab..04d208ed 100644 --- a/man/login.defs.d/ENV_TZ.xml +++ b/man/login.defs.d/ENV_TZ.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/ERASECHAR.xml b/man/login.defs.d/ERASECHAR.xml index fad4d725..42cbfcf8 100644 --- a/man/login.defs.d/ERASECHAR.xml +++ b/man/login.defs.d/ERASECHAR.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/FAILLOG_ENAB.xml b/man/login.defs.d/FAILLOG_ENAB.xml index 5a525578..e4bff21c 100644 --- a/man/login.defs.d/FAILLOG_ENAB.xml +++ b/man/login.defs.d/FAILLOG_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/FAIL_DELAY.xml b/man/login.defs.d/FAIL_DELAY.xml index 060ca0ad..fea78622 100644 --- a/man/login.defs.d/FAIL_DELAY.xml +++ b/man/login.defs.d/FAIL_DELAY.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/FAKE_SHELL.xml b/man/login.defs.d/FAKE_SHELL.xml index 967acaae..4c596b37 100644 --- a/man/login.defs.d/FAKE_SHELL.xml +++ b/man/login.defs.d/FAKE_SHELL.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/FTMP_FILE.xml b/man/login.defs.d/FTMP_FILE.xml index 255569a1..930f9a30 100644 --- a/man/login.defs.d/FTMP_FILE.xml +++ b/man/login.defs.d/FTMP_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/GID_MAX.xml b/man/login.defs.d/GID_MAX.xml index 639eafb0..b051e5fb 100644 --- a/man/login.defs.d/GID_MAX.xml +++ b/man/login.defs.d/GID_MAX.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/HMAC_CRYPTO_ALGO.xml b/man/login.defs.d/HMAC_CRYPTO_ALGO.xml new file mode 100644 index 00000000..3aa3370a --- /dev/null +++ b/man/login.defs.d/HMAC_CRYPTO_ALGO.xml @@ -0,0 +1,20 @@ + + + (string) + + + Used to select the HMAC cryptography algorithm that the pam_timestamp + module is going to use to calculate the keyed-hash message authentication + code. + + + Note: Check hmac3 + to see the possible algorithms that are available in your system. + + + diff --git a/man/login.defs.d/HOME_MODE.xml b/man/login.defs.d/HOME_MODE.xml new file mode 100644 index 00000000..1be69d90 --- /dev/null +++ b/man/login.defs.d/HOME_MODE.xml @@ -0,0 +1,19 @@ + + + (number) + + + The mode for new home directories. If not specified, + the is used to create the mode. + + + useradd and newusers use this + to set the mode of the home directory they create. + + + diff --git a/man/login.defs.d/HUSHLOGIN_FILE.xml b/man/login.defs.d/HUSHLOGIN_FILE.xml index edb02624..84c82fa6 100644 --- a/man/login.defs.d/HUSHLOGIN_FILE.xml +++ b/man/login.defs.d/HUSHLOGIN_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/ISSUE_FILE.xml b/man/login.defs.d/ISSUE_FILE.xml index 12c22a7c..b1d2c3ef 100644 --- a/man/login.defs.d/ISSUE_FILE.xml +++ b/man/login.defs.d/ISSUE_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/KILLCHAR.xml b/man/login.defs.d/KILLCHAR.xml index fea9f873..b73cc2da 100644 --- a/man/login.defs.d/KILLCHAR.xml +++ b/man/login.defs.d/KILLCHAR.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/LASTLOG_ENAB.xml b/man/login.defs.d/LASTLOG_ENAB.xml index c264a89c..9603096a 100644 --- a/man/login.defs.d/LASTLOG_ENAB.xml +++ b/man/login.defs.d/LASTLOG_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/LASTLOG_UID_MAX.xml b/man/login.defs.d/LASTLOG_UID_MAX.xml index ba3025a6..38ad3103 100644 --- a/man/login.defs.d/LASTLOG_UID_MAX.xml +++ b/man/login.defs.d/LASTLOG_UID_MAX.xml @@ -1,33 +1,9 @@ (number) diff --git a/man/login.defs.d/LOGIN_RETRIES.xml b/man/login.defs.d/LOGIN_RETRIES.xml index 3de450d6..ba0b05a7 100644 --- a/man/login.defs.d/LOGIN_RETRIES.xml +++ b/man/login.defs.d/LOGIN_RETRIES.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/LOGIN_STRING.xml b/man/login.defs.d/LOGIN_STRING.xml index 3743afea..12183c8f 100644 --- a/man/login.defs.d/LOGIN_STRING.xml +++ b/man/login.defs.d/LOGIN_STRING.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/LOGIN_TIMEOUT.xml b/man/login.defs.d/LOGIN_TIMEOUT.xml index 05b7cffa..af20462e 100644 --- a/man/login.defs.d/LOGIN_TIMEOUT.xml +++ b/man/login.defs.d/LOGIN_TIMEOUT.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/LOG_OK_LOGINS.xml b/man/login.defs.d/LOG_OK_LOGINS.xml index ec115806..35b13e9a 100644 --- a/man/login.defs.d/LOG_OK_LOGINS.xml +++ b/man/login.defs.d/LOG_OK_LOGINS.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/LOG_UNKFAIL_ENAB.xml b/man/login.defs.d/LOG_UNKFAIL_ENAB.xml index 2bc0ca2f..040382c3 100644 --- a/man/login.defs.d/LOG_UNKFAIL_ENAB.xml +++ b/man/login.defs.d/LOG_UNKFAIL_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/MAIL_CHECK_ENAB.xml b/man/login.defs.d/MAIL_CHECK_ENAB.xml index 62dece0d..584f328d 100644 --- a/man/login.defs.d/MAIL_CHECK_ENAB.xml +++ b/man/login.defs.d/MAIL_CHECK_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/MAIL_DIR.xml b/man/login.defs.d/MAIL_DIR.xml index 60b82d6b..328ebb89 100644 --- a/man/login.defs.d/MAIL_DIR.xml +++ b/man/login.defs.d/MAIL_DIR.xml @@ -1,32 +1,8 @@ (string) @@ -35,6 +11,8 @@ The mail spool directory. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted. If not specified, a compile-time default is used. + The parameter CREATE_MAIL_SPOOL in /etc/default/useradd + determines whether the mail spool should be created. diff --git a/man/login.defs.d/MAX_MEMBERS_PER_GROUP.xml b/man/login.defs.d/MAX_MEMBERS_PER_GROUP.xml index 45975d9f..345cdb35 100644 --- a/man/login.defs.d/MAX_MEMBERS_PER_GROUP.xml +++ b/man/login.defs.d/MAX_MEMBERS_PER_GROUP.xml @@ -1,30 +1,6 @@ (number) diff --git a/man/login.defs.d/MD5_CRYPT_ENAB.xml b/man/login.defs.d/MD5_CRYPT_ENAB.xml index be9426e7..94006a64 100644 --- a/man/login.defs.d/MD5_CRYPT_ENAB.xml +++ b/man/login.defs.d/MD5_CRYPT_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/MOTD_FILE.xml b/man/login.defs.d/MOTD_FILE.xml index b472e71f..f7350e8d 100644 --- a/man/login.defs.d/MOTD_FILE.xml +++ b/man/login.defs.d/MOTD_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/NOLOGINS_FILE.xml b/man/login.defs.d/NOLOGINS_FILE.xml index fde79f5d..41be5f8b 100644 --- a/man/login.defs.d/NOLOGINS_FILE.xml +++ b/man/login.defs.d/NOLOGINS_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/NONEXISTENT.xml b/man/login.defs.d/NONEXISTENT.xml new file mode 100644 index 00000000..e6484ec1 --- /dev/null +++ b/man/login.defs.d/NONEXISTENT.xml @@ -0,0 +1,17 @@ + + + (string) + + + If a system account intentionally does not have a home directory + that exists, this string can be provided in the /etc/passwd + entry for the account to indicate this. The result is that pwck + will not emit a spurious warning for this account. + + + diff --git a/man/login.defs.d/OBSCURE_CHECKS_ENAB.xml b/man/login.defs.d/OBSCURE_CHECKS_ENAB.xml index 5eb1d654..92157909 100644 --- a/man/login.defs.d/OBSCURE_CHECKS_ENAB.xml +++ b/man/login.defs.d/OBSCURE_CHECKS_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/PASS_ALWAYS_WARN.xml b/man/login.defs.d/PASS_ALWAYS_WARN.xml index 86874889..3eb224ac 100644 --- a/man/login.defs.d/PASS_ALWAYS_WARN.xml +++ b/man/login.defs.d/PASS_ALWAYS_WARN.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/PASS_CHANGE_TRIES.xml b/man/login.defs.d/PASS_CHANGE_TRIES.xml index f6f6d1d4..f3fa0ac3 100644 --- a/man/login.defs.d/PASS_CHANGE_TRIES.xml +++ b/man/login.defs.d/PASS_CHANGE_TRIES.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/PASS_MAX_DAYS.xml b/man/login.defs.d/PASS_MAX_DAYS.xml index 7df51a2e..7f7061b1 100644 --- a/man/login.defs.d/PASS_MAX_DAYS.xml +++ b/man/login.defs.d/PASS_MAX_DAYS.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/PASS_MAX_LEN.xml b/man/login.defs.d/PASS_MAX_LEN.xml index 2b9e024f..2e145837 100644 --- a/man/login.defs.d/PASS_MAX_LEN.xml +++ b/man/login.defs.d/PASS_MAX_LEN.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/PASS_MIN_DAYS.xml b/man/login.defs.d/PASS_MIN_DAYS.xml index 14f68ebe..c35cbb12 100644 --- a/man/login.defs.d/PASS_MIN_DAYS.xml +++ b/man/login.defs.d/PASS_MIN_DAYS.xml @@ -1,32 +1,8 @@ (number) @@ -34,7 +10,7 @@ The minimum number of days allowed between password changes. Any password changes attempted sooner than this will be rejected. If not - specified, -1 will be assumed (which disables the restriction). + specified, 0 will be assumed (which disables the restriction). diff --git a/man/login.defs.d/PASS_WARN_AGE.xml b/man/login.defs.d/PASS_WARN_AGE.xml index fc03f1d8..0feeb7eb 100644 --- a/man/login.defs.d/PASS_WARN_AGE.xml +++ b/man/login.defs.d/PASS_WARN_AGE.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/PORTTIME_CHECKS_ENAB.xml b/man/login.defs.d/PORTTIME_CHECKS_ENAB.xml index 0ba7c3a2..78d683be 100644 --- a/man/login.defs.d/PORTTIME_CHECKS_ENAB.xml +++ b/man/login.defs.d/PORTTIME_CHECKS_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/QUOTAS_ENAB.xml b/man/login.defs.d/QUOTAS_ENAB.xml index 2a68b21d..f85d7d0b 100644 --- a/man/login.defs.d/QUOTAS_ENAB.xml +++ b/man/login.defs.d/QUOTAS_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml b/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml index 0755e690..43972d76 100644 --- a/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml +++ b/man/login.defs.d/SHA_CRYPT_MIN_ROUNDS.xml @@ -1,30 +1,6 @@ (number) @@ -44,7 +20,7 @@ If not specified, the libc will choose the default number of rounds - (5000). + (5000), which is orders of magnitude too low for modern hardware. The values must be inside the 1000-999,999,999 range. diff --git a/man/login.defs.d/SUB_GID_COUNT.xml b/man/login.defs.d/SUB_GID_COUNT.xml index 93fe7421..4eb50783 100644 --- a/man/login.defs.d/SUB_GID_COUNT.xml +++ b/man/login.defs.d/SUB_GID_COUNT.xml @@ -1,30 +1,6 @@ (number) diff --git a/man/login.defs.d/SUB_UID_COUNT.xml b/man/login.defs.d/SUB_UID_COUNT.xml index 516417b7..90bead5e 100644 --- a/man/login.defs.d/SUB_UID_COUNT.xml +++ b/man/login.defs.d/SUB_UID_COUNT.xml @@ -1,30 +1,6 @@ (number) diff --git a/man/login.defs.d/SULOG_FILE.xml b/man/login.defs.d/SULOG_FILE.xml index d5d07c86..4fab8aa7 100644 --- a/man/login.defs.d/SULOG_FILE.xml +++ b/man/login.defs.d/SULOG_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/SU_NAME.xml b/man/login.defs.d/SU_NAME.xml index 0a9dfdb0..d71d1aa5 100644 --- a/man/login.defs.d/SU_NAME.xml +++ b/man/login.defs.d/SU_NAME.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/SU_WHEEL_ONLY.xml b/man/login.defs.d/SU_WHEEL_ONLY.xml index 7b8e0bce..2a0b39a5 100644 --- a/man/login.defs.d/SU_WHEEL_ONLY.xml +++ b/man/login.defs.d/SU_WHEEL_ONLY.xml @@ -1,32 +1,8 @@ diff --git a/man/login.defs.d/SYSLOG_SG_ENAB.xml b/man/login.defs.d/SYSLOG_SG_ENAB.xml index 07055371..8e2f23a2 100644 --- a/man/login.defs.d/SYSLOG_SG_ENAB.xml +++ b/man/login.defs.d/SYSLOG_SG_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/SYSLOG_SU_ENAB.xml b/man/login.defs.d/SYSLOG_SU_ENAB.xml index af94a237..155e3c57 100644 --- a/man/login.defs.d/SYSLOG_SU_ENAB.xml +++ b/man/login.defs.d/SYSLOG_SU_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/SYS_GID_MAX.xml b/man/login.defs.d/SYS_GID_MAX.xml index 4a9ed28b..f39ddfd0 100644 --- a/man/login.defs.d/SYS_GID_MAX.xml +++ b/man/login.defs.d/SYS_GID_MAX.xml @@ -1,30 +1,6 @@ (number) diff --git a/man/login.defs.d/SYS_UID_MAX.xml b/man/login.defs.d/SYS_UID_MAX.xml index 3ca6cee2..5b0a1de8 100644 --- a/man/login.defs.d/SYS_UID_MAX.xml +++ b/man/login.defs.d/SYS_UID_MAX.xml @@ -1,30 +1,6 @@ (number) diff --git a/man/login.defs.d/TCB_AUTH_GROUP.xml b/man/login.defs.d/TCB_AUTH_GROUP.xml index f9c9f72c..fabcb036 100644 --- a/man/login.defs.d/TCB_AUTH_GROUP.xml +++ b/man/login.defs.d/TCB_AUTH_GROUP.xml @@ -1,30 +1,6 @@ (boolean) diff --git a/man/login.defs.d/TCB_SYMLINKS.xml b/man/login.defs.d/TCB_SYMLINKS.xml index 76b34fb7..7e52c342 100644 --- a/man/login.defs.d/TCB_SYMLINKS.xml +++ b/man/login.defs.d/TCB_SYMLINKS.xml @@ -1,30 +1,6 @@ (boolean) diff --git a/man/login.defs.d/TTYGROUP.xml b/man/login.defs.d/TTYGROUP.xml index 474f31b7..e7cb53d0 100644 --- a/man/login.defs.d/TTYGROUP.xml +++ b/man/login.defs.d/TTYGROUP.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/TTYTYPE_FILE.xml b/man/login.defs.d/TTYTYPE_FILE.xml index f3e8509d..491bb0bf 100644 --- a/man/login.defs.d/TTYTYPE_FILE.xml +++ b/man/login.defs.d/TTYTYPE_FILE.xml @@ -1,32 +1,8 @@ (string) diff --git a/man/login.defs.d/UID_MAX.xml b/man/login.defs.d/UID_MAX.xml index 77cf41f9..df365d02 100644 --- a/man/login.defs.d/UID_MAX.xml +++ b/man/login.defs.d/UID_MAX.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/ULIMIT.xml b/man/login.defs.d/ULIMIT.xml index 3cf4267d..2ff37338 100644 --- a/man/login.defs.d/ULIMIT.xml +++ b/man/login.defs.d/ULIMIT.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/UMASK.xml b/man/login.defs.d/UMASK.xml index 0f061dbb..1090e05b 100644 --- a/man/login.defs.d/UMASK.xml +++ b/man/login.defs.d/UMASK.xml @@ -1,32 +1,8 @@ (number) diff --git a/man/login.defs.d/USERDEL_CMD.xml b/man/login.defs.d/USERDEL_CMD.xml index 40800b25..56c0933c 100644 --- a/man/login.defs.d/USERDEL_CMD.xml +++ b/man/login.defs.d/USERDEL_CMD.xml @@ -1,33 +1,9 @@ (string) diff --git a/man/login.defs.d/USERGROUPS_ENAB.xml b/man/login.defs.d/USERGROUPS_ENAB.xml index daa88928..6338fc98 100644 --- a/man/login.defs.d/USERGROUPS_ENAB.xml +++ b/man/login.defs.d/USERGROUPS_ENAB.xml @@ -1,32 +1,8 @@ (boolean) diff --git a/man/login.defs.d/USE_TCB.xml b/man/login.defs.d/USE_TCB.xml index 6fbe4d9f..a89bf239 100644 --- a/man/login.defs.d/USE_TCB.xml +++ b/man/login.defs.d/USE_TCB.xml @@ -1,30 +1,6 @@ (boolean) diff --git a/man/logoutd.8.xml b/man/logoutd.8.xml index 13b1337a..d3f96e4b 100644 --- a/man/logoutd.8.xml +++ b/man/logoutd.8.xml @@ -1,32 +1,8 @@ -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "CHAGE" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "CHAGE" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,13 +45,30 @@ command are: .PP \fB\-d\fR, \fB\-\-lastday\fR\ \&\fILAST_DAY\fR .RS 4 -Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. +Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. If the +\fILAST_DAY\fR +is set to +\fI0\fR +the user is forced to change his password on the next log on\&. .RE .PP \fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 Set the date or number of days since January 1, 1970 on which the user\*(Aqs account will no longer be accessible\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. A user whose account is locked must contact the system administrator before being able to use the system again\&. .sp +For example the following can be used to set an account to expire in 180 days: +.sp +.if n \{\ +.RS 4 +.\} +.nf + chage \-E $(date \-d +180days +%Y\-%m\-%d) + +.fi +.if n \{\ +.RE +.\} +.sp Passing the number \fI\-1\fR as the @@ -137,6 +154,14 @@ The \fBchage\fR program requires a shadow password file to be available\&. .PP +The chage program will report only the information from the shadow password file\&. This implies that configuration from other sources (e\&.g\&. LDAP or empty password hash field from the passwd file) that affect the user\*(Aqs login will not be shown in the chage output\&. +.PP +The +\fBchage\fR +program will also not report any inconsistency between the shadow and passwd files (e\&.g\&. missing x in the passwd file)\&. The +\fBpwck\fR +can be used to check for this kind of inconsistencies\&. +.PP The \fBchage\fR command is restricted to the root user, except for the diff --git a/man/man1/chfn.1 b/man/man1/chfn.1 index 95d88be0..44457d1d 100644 --- a/man/man1/chfn.1 +++ b/man/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "CHFN" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "CHFN" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/chsh.1 b/man/man1/chsh.1 index efa216f3..51dede05 100644 --- a/man/man1/chsh.1 +++ b/man/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "CHSH" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "CHSH" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/expiry.1 b/man/man1/expiry.1 index a1fc96b6..e97f85d5 100644 --- a/man/man1/expiry.1 +++ b/man/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "EXPIRY" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "EXPIRY" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/getsubids.1 b/man/man1/getsubids.1 new file mode 100644 index 00000000..86fd5f15 --- /dev/null +++ b/man/man1/getsubids.1 @@ -0,0 +1,82 @@ +'\" t +.\" Title: getsubids +.\" Author: Iker Pedrosa +.\" Generator: DocBook XSL Stylesheets v1.79.1 +.\" Date: 01/02/2022 +.\" Manual: User Commands +.\" Source: shadow-utils 4.11.1 +.\" Language: English +.\" +.TH "GETSUBIDS" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +getsubids \- get the subordinate id ranges for a user +.SH "SYNOPSIS" +.HP \w'\fBgetsubids\fR\ 'u +\fBgetsubids\fR [\fIoptions\fR] \fIUSER\fR +.SH "DESCRIPTION" +.PP +The +\fBgetsubids\fR +command lists the subordinate user ID ranges for a given user\&. The subordinate group IDs can be listed using the +\fB\-g\fR +option\&. +.SH "OPTIONS" +.PP +The options which apply to the +\fBgetsubids\fR +command are: +.PP +\fB\-g\fR +.RS 4 +List the subordinate group ID ranges\&. +.RE +.PP +\fB\-h\fR +.RS 4 +Display help message and exit\&. +.RE +.SH "EXAMPLE" +.PP +For example, to obtain the subordinate UIDs of the testuser: +.PP +.if n \{\ +.RS 4 +.\} +.nf +$ getsubids testuser +0: testuser 100000 65536 +.fi +.if n \{\ +.RE +.\} +.PP +This command output provides (in order from left to right) the list index, username, UID range start, and number of UIDs in range\&. +.SH "SEE ALSO" +.PP +\fBlogin.defs\fR(5), +\fBnewgidmap\fR(1), +\fBnewuidmap\fR(1), +\fBsubgid\fR(5), +\fBsubuid\fR(5), +\fBuseradd\fR(8), +\fBuserdel\fR(8)\&. +\fBusermod\fR(8), diff --git a/man/man1/gpasswd.1 b/man/man1/gpasswd.1 index c80cfb1b..499d987b 100644 --- a/man/man1/gpasswd.1 +++ b/man/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GPASSWD" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "GPASSWD" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -147,7 +147,9 @@ This defines the system default encryption algorithm for encrypting passwords (i It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -196,7 +198,7 @@ or .sp With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp -If not specified, the libc will choose the default number of rounds (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp The values must be inside the 1000\-999,999,999 range\&. .sp diff --git a/man/man1/groups.1 b/man/man1/groups.1 index 99312b83..2480f1c3 100644 --- a/man/man1/groups.1 +++ b/man/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GROUPS" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "GROUPS" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/id.1 b/man/man1/id.1 index 6843c09b..8c7d100d 100644 --- a/man/man1/id.1 +++ b/man/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "ID" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "ID" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/login.1 b/man/man1/login.1 index ccfacc5f..20141e4b 100644 --- a/man/man1/login.1 +++ b/man/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "LOGIN" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "LOGIN" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -318,7 +318,9 @@ You should disable it if the shell startup files already check for mail ("mailx .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/man1/newgidmap.1 b/man/man1/newgidmap.1 index 30384f99..2ed76813 100644 --- a/man/man1/newgidmap.1 +++ b/man/man1/newgidmap.1 @@ -2,12 +2,12 @@ .\" Title: newgidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "NEWGIDMAP" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "NEWGIDMAP" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,8 +38,11 @@ The \fBnewgidmap\fR sets /proc/[pid]/gid_map -based on its command line arguments and the gids allowed in -/etc/subgid\&. Note that the root user is not exempted from the requirement for a valid +based on its command line arguments and the gids allowed\&. Subgid delegation can either be managed via +/etc/subgid +or through the configured NSS subid module\&. These options are mutually exclusive\&. +.PP +Note that the root group is not exempted from the requirement for a valid /etc/subgid entry\&. .PP @@ -65,7 +68,7 @@ Length of the ranges (both inside and outside the user namespace)\&. \fBnewgidmap\fR verifies that the caller is the owner of the process indicated by \fBpid\fR -and that for each of the above sets, each of the GIDs in the range [lowergid, lowergid+count] is allowed to the caller according to +and that for each of the above sets, each of the GIDs in the range [lowergid, lowergid+count) is allowed to the caller according to /etc/subgid before setting /proc/[pid]/gid_map\&. diff --git a/man/man1/newgrp.1 b/man/man1/newgrp.1 index 48414af1..5e5b6299 100644 --- a/man/man1/newgrp.1 +++ b/man/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "NEWGRP" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "NEWGRP" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/newuidmap.1 b/man/man1/newuidmap.1 index 75363d08..1d343ff4 100644 --- a/man/man1/newuidmap.1 +++ b/man/man1/newuidmap.1 @@ -2,12 +2,12 @@ .\" Title: newuidmap .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "NEWUIDMAP" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "NEWUIDMAP" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -38,8 +38,11 @@ The \fBnewuidmap\fR sets /proc/[pid]/uid_map -based on its command line arguments and the uids allowed in -/etc/subuid\&. Note that the root user is not exempted from the requirement for a valid +based on its command line arguments and the uids allowed\&. Subuid delegation can either be managed via +/etc/subuid +or through the configured NSS subid module\&. These options are mutually exclusive\&. +.PP +Note that the root user is not exempted from the requirement for a valid /etc/subuid entry\&. .PP @@ -65,7 +68,7 @@ Length of the ranges (both inside and outside the user namespace)\&. \fBnewuidmap\fR verifies that the caller is the owner of the process indicated by \fBpid\fR -and that for each of the above sets, each of the UIDs in the range [loweruid, loweruid+count] is allowed to the caller according to +and that for each of the above sets, each of the UIDs in the range [loweruid, loweruid+count) is allowed to the caller according to /etc/subuid before setting /proc/[pid]/uid_map\&. diff --git a/man/man1/passwd.1 b/man/man1/passwd.1 index aaef7e47..476f43d8 100644 --- a/man/man1/passwd.1 +++ b/man/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "PASSWD" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "PASSWD" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -223,7 +223,9 @@ This defines the system default encryption algorithm for encrypting passwords (i It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -282,7 +284,7 @@ or .sp With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp -If not specified, the libc will choose the default number of rounds (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp The values must be inside the 1000\-999,999,999 range\&. .sp diff --git a/man/man1/sg.1 b/man/man1/sg.1 index e7d4ac4c..d9ee09db 100644 --- a/man/man1/sg.1 +++ b/man/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SG" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "SG" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man1/su.1 b/man/man1/su.1 index 7639e762..0de673f4 100644 --- a/man/man1/su.1 +++ b/man/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: User Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SU" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "User Commands" +.TH "SU" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "User Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -312,7 +312,9 @@ You should disable it if the shell startup files already check for mail ("mailx .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/man3/shadow.3 b/man/man3/shadow.3 index a9ee6f59..d82a66a5 100644 --- a/man/man3/shadow.3 +++ b/man/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Library Calls -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SHADOW" "3" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Library Calls" +.TH "SHADOW" "3" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/faillog.5 b/man/man5/faillog.5 index 12646196..0813d46c 100644 --- a/man/man5/faillog.5 +++ b/man/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "FAILLOG" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "FAILLOG" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/gshadow.5 b/man/man5/gshadow.5 index d657c582..2e07f1c1 100644 --- a/man/man5/gshadow.5 +++ b/man/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas François .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GSHADOW" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "GSHADOW" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/limits.5 b/man/man5/limits.5 index ad3f7341..f9b8e6e0 100644 --- a/man/man5/limits.5 +++ b/man/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "LIMITS" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "LIMITS" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/login.access.5 b/man/man5/login.access.5 index 81e79ba8..00ce6625 100644 --- a/man/man5/login.access.5 +++ b/man/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "LOGIN\&.ACCESS" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "LOGIN\&.ACCESS" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/login.defs.5 b/man/man5/login.defs.5 index 3ac322fa..316496eb 100644 --- a/man/man5/login.defs.5 +++ b/man/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "LOGIN\&.DEFS" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "LOGIN\&.DEFS" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -126,7 +126,9 @@ This defines the system default encryption algorithm for encrypting passwords (i It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -223,6 +225,15 @@ The default value for \fBGID_MAX\fR) is 1000 (resp\&. 60000)\&. .RE .PP +\fBHMAC_CRYPTO_ALGO\fR (string) +.RS 4 +Used to select the HMAC cryptography algorithm that the pam_timestamp module is going to use to calculate the keyed\-hash message authentication code\&. +.sp +Note: Check +hmac(3) +to see the possible algorithms that are available in your system\&. +.RE +.PP \fBHOME_MODE\fR (number) .RS 4 The mode for new home directories\&. If not specified, the @@ -306,7 +317,9 @@ You should disable it if the shell startup files already check for mail ("mailx .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -372,6 +385,11 @@ If defined, ":" delimited list of "message of the day" files to be displayed upo If defined, name of file whose presence will inhibit non\-root logins\&. The contents of this file should be a message indicating why logins are inhibited\&. .RE .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBOBSCURE_CHECKS_ENAB\fR (boolean) .RS 4 Enable additional checks upon password changes\&. @@ -394,7 +412,7 @@ The maximum number of days a password may be used\&. If the password is older th .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, \-1 will be assumed (which disables the restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -442,7 +460,7 @@ or .sp With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp -If not specified, the libc will choose the default number of rounds (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp The values must be inside the 1000\-999,999,999 range\&. .sp diff --git a/man/man5/passwd.5 b/man/man5/passwd.5 index c66e9321..cffae70a 100644 --- a/man/man5/passwd.5 +++ b/man/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "PASSWD" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "PASSWD" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -145,8 +145,8 @@ for details on how this string is interpreted\&. If the password field contains some string that is not a valid result of \fBcrypt\fR(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in the system by other means)\&. .PP -The comment field is used by various system utilities, such as -\fBfinger\fR(1)\&. +The comment field, also known as the gecos field, is used by various system utilities, such as +\fBfinger\fR(1)\&. The use of an ampersand here will be replaced by the capitalised login name when the field is used or displayed by such system utilities\&. .PP The home directory field provides the name of the initial working directory\&. The \fBlogin\fR diff --git a/man/man5/porttime.5 b/man/man5/porttime.5 index 38105cfb..1670cb6f 100644 --- a/man/man5/porttime.5 +++ b/man/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "PORTTIME" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "PORTTIME" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/shadow.5 b/man/man5/shadow.5 index 2b4a7072..bb9b7e28 100644 --- a/man/man5/shadow.5 +++ b/man/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SHADOW" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "SHADOW" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -61,7 +61,7 @@ If the password field contains some string that is not a valid result of .PP \fBdate of last password change\fR .RS 4 -The date of the last password change, expressed as the number of days since Jan 1, 1970\&. +The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp The value 0 has a special meaning, which is that the user should change her password the next time she will log in the system\&. .sp @@ -72,7 +72,7 @@ An empty field means that password aging features are disabled\&. .RS 4 The minimum password age is the number of days the user will have to wait before she will be allowed to change her password again\&. .sp -An empty field and value 0 mean that there are no minimum password age\&. +An empty field and value 0 mean that there is no minimum password age\&. .RE .PP \fBmaximum password age\fR @@ -97,14 +97,14 @@ An empty field and value 0 mean that there are no password warning period\&. .RS 4 The number of days after a password has expired (see the maximum password age above) during which the password should still be accepted (and the user should update her password during the next login)\&. .sp -After expiration of the password and this expiration period is elapsed, no login is possible using the current user\*(Aqs password\&. The user should contact her administrator\&. +After expiration of the password and this expiration period is elapsed, no login is possible for the user\&. The user should contact her administrator\&. .sp An empty field means that there are no enforcement of an inactivity period\&. .RE .PP \fBaccount expiration date\fR .RS 4 -The date of expiration of the account, expressed as the number of days since Jan 1, 1970\&. +The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp Note that an account expiration differs from a password expiration\&. In case of an account expiration, the user shall not be allowed to login\&. In case of a password expiration, the user is not allowed to login using her password\&. .sp diff --git a/man/man5/suauth.5 b/man/man5/suauth.5 index 9b5ad03f..42de1b17 100644 --- a/man/man5/suauth.5 +++ b/man/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SUAUTH" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "SUAUTH" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man5/subgid.5 b/man/man5/subgid.5 index 8db1f45d..d485adf2 100644 --- a/man/man5/subgid.5 +++ b/man/man5/subgid.5 @@ -2,12 +2,12 @@ .\" Title: subgid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SUBGID" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "SUBGID" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,9 +28,29 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -subgid \- the subordinate gid file +subgid \- the configuration for subordinate group ids .SH "DESCRIPTION" .PP +Subgid authorizes a group id to map ranges of group ids from its namespace into child namespaces\&. +.PP +The delegation of the subordinate gids can be configured via the +\fIsubid\fR +field in +/etc/nsswitch\&.conf +file\&. Only one value can be set as the delegation source\&. Setting this field to +\fIfiles\fR +configures the delegation of gids to +/etc/subgid\&. Setting any other value treats the delegation as a plugin following with a name of the form +\fIlibsubid_$value\&.so\fR\&. If the value or plugin is missing, then the subordinate gid delegation falls back to +\fIfiles\fR\&. +.PP +Note, that +\fBgroupadd\fR +will only create entries in +/etc/subgid +if subid delegation is managed via subid files\&. +.SH "LOCAL SUBORDINATE DELEGATION" +.PP Each line in /etc/subgid contains a user name and a range of subordinate group ids that user is allowed to use\&. This is specified with three fields delimited by colons (\(lq:\(rq)\&. These fields are: diff --git a/man/man5/subuid.5 b/man/man5/subuid.5 index 0876ecbe..c95f4b1d 100644 --- a/man/man5/subuid.5 +++ b/man/man5/subuid.5 @@ -2,12 +2,12 @@ .\" Title: subuid .\" Author: Eric Biederman .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SUBUID" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "SUBUID" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,9 +28,29 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "NAME" -subuid \- the subordinate uid file +subuid \- the configuration for subordinate user ids .SH "DESCRIPTION" .PP +Subuid authorizes a user id to map ranges of user ids from its namespace into child namespaces\&. +.PP +The delegation of the subordinate uids can be configured via the +\fIsubid\fR +field in +/etc/nsswitch\&.conf +file\&. Only one value can be set as the delegation source\&. Setting this field to +\fIfiles\fR +configures the delegation of uids to +/etc/subuid\&. Setting any other value treats the delegation as a plugin following with a name of the form +\fIlibsubid_$value\&.so\fR\&. If the value or plugin is missing, then the subordinate uid delegation falls back to +\fIfiles\fR\&. +.PP +Note, that +\fBuseradd\fR +will only create entries in +/etc/subuid +if subid delegation is managed via subid files\&. +.SH "LOCAL SUBORDINATE DELEGATION" +.PP Each line in /etc/subuid contains a user name and a range of subordinate user ids that user is allowed to use\&. This is specified with three fields delimited by colons (\(lq:\(rq)\&. These fields are: diff --git a/man/man8/chgpasswd.8 b/man/man8/chgpasswd.8 index 1bc9dffa..07b2986e 100644 --- a/man/man8/chgpasswd.8 +++ b/man/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas Kłoczko .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "CHGPASSWD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "CHGPASSWD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -121,7 +121,9 @@ This defines the system default encryption algorithm for encrypting passwords (i It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -170,7 +172,7 @@ or .sp With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp -If not specified, the libc will choose the default number of rounds (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp The values must be inside the 1000\-999,999,999 range\&. .sp diff --git a/man/man8/chpasswd.8 b/man/man8/chpasswd.8 index c15630a4..00551259 100644 --- a/man/man8/chpasswd.8 +++ b/man/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "CHPASSWD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "CHPASSWD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -139,7 +139,9 @@ This defines the system default encryption algorithm for encrypting passwords (i It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -173,7 +175,7 @@ or .sp With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp -If not specified, the libc will choose the default number of rounds (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp The values must be inside the 1000\-999,999,999 range\&. .sp diff --git a/man/man8/faillog.8 b/man/man8/faillog.8 index b220088b..ee993880 100644 --- a/man/man8/faillog.8 +++ b/man/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "FAILLOG" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "FAILLOG" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/groupadd.8 b/man/man8/groupadd.8 index af5778f3..370ddaae 100644 --- a/man/man8/groupadd.8 +++ b/man/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GROUPADD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "GROUPADD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -132,6 +132,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in @@ -229,14 +243,13 @@ invalid argument to option .PP \fI4\fR .RS 4 -GID not unique (when -\fB\-o\fR -not used) +GID is already used (when called without +\fB\-o\fR) .RE .PP \fI9\fR .RS 4 -group name not unique +group name is already used .RE .PP \fI10\fR diff --git a/man/man8/groupdel.8 b/man/man8/groupdel.8 index 50addaed..7e420629 100644 --- a/man/man8/groupdel.8 +++ b/man/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GROUPDEL" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "GROUPDEL" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -44,6 +44,11 @@ The options which apply to the \fBgroupdel\fR command are: .PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +This option forces the removal of the group, even if there\*(Aqs some user having the group as the primary one\&. +.RE +.PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Display help message and exit\&. diff --git a/man/man8/groupmems.8 b/man/man8/groupmems.8 index 1d01d316..12fe563b 100644 --- a/man/man8/groupmems.8 +++ b/man/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GROUPMEMS" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "GROUPMEMS" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/groupmod.8 b/man/man8/groupmod.8 index b76f6a95..5903811a 100644 --- a/man/man8/groupmod.8 +++ b/man/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GROUPMOD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "GROUPMOD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,6 +45,11 @@ The options which apply to the \fBgroupmod\fR command are: .PP +\fB\-a\fR, \fB\-\-append\fR\ \&\fIGID\fR +.RS 4 +If group members are specified with \-U, append them to the existing member list, rather than replacing it\&. +.RE +.PP \fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 The group ID of the given @@ -123,6 +128,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in @@ -187,7 +206,7 @@ E_BAD_ARG: invalid argument to option .PP \fI4\fR .RS 4 -E_GID_IN_USE: specified group doesn\*(Aqt exist +E_GID_IN_USE: group id already in use .RE .PP \fI6\fR diff --git a/man/man8/grpck.8 b/man/man8/grpck.8 index a9094e4d..eaaaeb27 100644 --- a/man/man8/grpck.8 +++ b/man/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "GRPCK" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "GRPCK" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -159,6 +159,14 @@ and /etc/gshadow by GID\&. .RE .PP +\fB\-S\fR, \fB\-\-silence\-warnings\fR +.RS 4 +Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in +/etc/group +and +/etc/ghadow\&. +.RE +.PP By default, \fBgrpck\fR operates on diff --git a/man/man8/lastlog.8 b/man/man8/lastlog.8 index 3ca86500..b31a196a 100644 --- a/man/man8/lastlog.8 +++ b/man/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "LASTLOG" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "LASTLOG" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,3 +135,7 @@ Database times of previous user logins\&. .SH "CAVEATS" .PP Large gaps in UID numbers will cause the lastlog program to run longer with no output to the screen (i\&.e\&. if in lastlog database there is no entries for users with UID between 170 and 800 lastlog will appear to hang as it processes entries with UIDs 171\-799)\&. +.PP +Having high UIDs can create problems when handling the + /var/log/lastlog +with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/man8/logoutd.8 b/man/man8/logoutd.8 index 88fbc040..a9459a57 100644 --- a/man/man8/logoutd.8 +++ b/man/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "LOGOUTD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "LOGOUTD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/newusers.8 b/man/man8/newusers.8 index df37f7ba..5e8c5268 100644 --- a/man/man8/newusers.8 +++ b/man/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "NEWUSERS" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "NEWUSERS" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -99,7 +99,9 @@ This field is copied in the GECOS field of the user\&. .RS 4 This field is used to define the home directory of the user\&. .sp -If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. +If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. Note that +\fInewusers does not create parent directories \fR +of the new user\*(Aqs home directory\&. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure\&. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified\&. .sp If the home directory of an existing user is changed, \fBnewusers\fR @@ -193,7 +195,9 @@ This defines the system default encryption algorithm for encrypting passwords (i It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -263,7 +267,7 @@ The maximum number of days a password may be used\&. If the password is older th .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, \-1 will be assumed (which disables the restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -282,7 +286,7 @@ or .sp With a lot of rounds, it is more difficult to brute forcing the password\&. But note also that more CPU resources will be needed to authenticate users\&. .sp -If not specified, the libc will choose the default number of rounds (5000)\&. +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp The values must be inside the 1000\-999,999,999 range\&. .sp diff --git a/man/man8/nologin.8 b/man/man8/nologin.8 index e02954a4..878ae204 100644 --- a/man/man8/nologin.8 +++ b/man/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas François .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "NOLOGIN" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "NOLOGIN" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/pwck.8 b/man/man8/pwck.8 index aacc2e47..f8574195 100644 --- a/man/man8/pwck.8 +++ b/man/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "PWCK" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "PWCK" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -249,6 +249,11 @@ The following configuration variables in /etc/login\&.defs change the behavior of this tool: .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBPASS_MAX_DAYS\fR (number) .RS 4 The maximum number of days a password may be used\&. If the password is older than this, a password change will be forced\&. If not specified, \-1 will be assumed (which disables the restriction)\&. @@ -256,7 +261,7 @@ The maximum number of days a password may be used\&. If the password is older th .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, \-1 will be assumed (which disables the restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/man8/pwconv.8 b/man/man8/pwconv.8 index a63a95dd..51d18acb 100644 --- a/man/man8/pwconv.8 +++ b/man/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "PWCONV" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "PWCONV" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -173,7 +173,7 @@ The maximum number of days a password may be used\&. If the password is older th .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, \-1 will be assumed (which disables the restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/man8/sulogin.8 b/man/man8/sulogin.8 index 37f25bcf..4f5c9941 100644 --- a/man/man8/sulogin.8 +++ b/man/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "SULOGIN" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "SULOGIN" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/man8/useradd.8 b/man/man8/useradd.8 index 21426cba..5f7e4d14 100644 --- a/man/man8/useradd.8 +++ b/man/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "USERADD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "USERADD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -97,9 +97,11 @@ as the value for the user\*(Aqs login directory\&. The default is to append the \fILOGIN\fR name to \fIBASE_DIR\fR -and use that as the login directory name\&. The directory +and use that as the login directory name\&. If the directory \fIHOME_DIR\fR -does not have to exist but will not be created if it is missing\&. +does not exist, then it will be created unless the +\fB\-M\fR +option is specified\&. .RE .PP \fB\-D\fR, \fB\-\-defaults\fR @@ -211,6 +213,14 @@ options can be specified, e\&.g\&.: Do not add the user to the lastlog and faillog databases\&. .sp By default, the user\*(Aqs entries in the lastlog and faillog databases are reset to avoid reusing the entry from a previously deleted user\&. +.sp +If this option is not specified, +\fBuseradd\fR +will also consult the variable +\fBLOG_INIT\fR +in the +/etc/default/useradd +if set to no the user will not be added to the lastlog and faillog databases\&. .RE .PP \fB\-m\fR, \fB\-\-create\-home\fR @@ -222,6 +232,8 @@ option) will be copied to the home directory\&. By default, if this option is not specified and \fBCREATE_HOME\fR is not enabled, no home directories are created\&. +.sp +The directory where the user\*(Aqs home directory is created must exist and have proper SELinux context and permissions\&. Otherwise the user\*(Aqs home directory cannot be created or accessed\&. .RE .PP \fB\-M\fR, \fB\-\-no\-create\-home\fR @@ -492,7 +504,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -539,7 +553,7 @@ The maximum number of days a password may be used\&. If the password is older th .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, \-1 will be assumed (which disables the restriction)\&. +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -693,6 +707,20 @@ Secure group account information\&. Default values for account creation\&. .RE .PP +/etc/shadow\-maint/useradd\-pre\&.d/*, /etc/shadow\-maint/useradd\-post\&.d/* +.RS 4 +Run\-part files to execute during user addition\&. The environment variable +\fBACTION\fR +will be populated with useradd and +\fBSUBJECT\fR +with the +\fBusername\fR\&. +useradd\-pre\&.d +will be executed prior to any user addition\&. +useradd\-post\&.d +will execute after user addition\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/skel/ .RS 4 Directory containing default files\&. diff --git a/man/man8/userdel.8 b/man/man8/userdel.8 index 0ada52f1..eef09542 100644 --- a/man/man8/userdel.8 +++ b/man/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "USERDEL" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "USERDEL" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -106,7 +106,9 @@ change the behavior of this tool: .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -221,6 +223,21 @@ User account information\&. Secure user account information\&. .RE .PP +/etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* +.RS 4 +Run\-part files to execute during user deletion\&. The environment variable +\fBACTION\fR +will be populated with +\fBuserdel\fR +and +\fBSUBJECT\fR +with the username\&. +userdel\-pre\&.d +will be executed prior to any user deletion\&. +userdel\-post\&.d +will execute after user deletion\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/subgid .RS 4 Per user subordinate group IDs\&. diff --git a/man/man8/usermod.8 b/man/man8/usermod.8 index ea9adce1..4632b35f 100644 --- a/man/man8/usermod.8 +++ b/man/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "USERMOD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "USERMOD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,7 @@ The user\*(Aqs new login directory\&. .sp If the \fB\-m\fR -option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. +option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. If the current home directory does not exist the new home directory will not be created\&. .RE .PP \fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR @@ -107,6 +107,9 @@ The group name or number of the user\*(Aqs new initial login group\&. The group Any file from the user\*(Aqs home directory owned by the previous primary group of the user will be owned by this new group\&. .sp The group ownership of files outside of the user\*(Aqs home directory must be fixed manually\&. +.sp +The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. .RE .PP \fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] @@ -143,7 +146,7 @@ to .PP \fB\-m\fR, \fB\-\-move\-home\fR .RS 4 -Move the content of the user\*(Aqs home directory to the new location\&. +Move the content of the user\*(Aqs home directory to the new location\&. If the current home directory does not exist the new home directory will not be created\&. .sp This option is only valid in combination with the \fB\-d\fR @@ -172,6 +175,13 @@ This option is not recommended because the password (or encrypted password) will You should make sure the password respects the system\*(Aqs password policy\&. .RE .PP +\fB\-r\fR, \fB\-\-remove\fR +.RS 4 +Remove the user from named supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. +.RE +.PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the @@ -192,7 +202,7 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -The name of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. +The path of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. .RE .PP \fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR @@ -207,6 +217,9 @@ The user\*(Aqs mailbox, and any files which the user owns and which are located .sp The ownership of files outside of the user\*(Aqs home directory must be fixed manually\&. .sp +The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. +.sp No checks will be performed with regard to the \fBUID_MIN\fR, \fBUID_MAX\fR, @@ -332,7 +345,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/man8/vipw.8 b/man/man8/vipw.8 index f8f175ee..101ba0e1 100644 --- a/man/man8/vipw.8 +++ b/man/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Michałkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: System Management Commands -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: English .\" -.TH "VIPW" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "System Management Commands" +.TH "VIPW" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "System Management Commands" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/newgidmap.1.xml b/man/newgidmap.1.xml index 5fff36f7..e4ebc69e 100644 --- a/man/newgidmap.1.xml +++ b/man/newgidmap.1.xml @@ -1,31 +1,7 @@ DESCRIPTION - The newgidmap sets /proc/[pid]/gid_map based on its - command line arguments and the gids allowed in /etc/subgid. - Note that the root user is not exempted from the requirement for a valid + The newgidmap sets /proc/[pid]/gid_map + based on its command line arguments and the gids allowed. Subgid + delegation can either be managed via /etc/subgid + or through the configured NSS subid module. These options are mutually + exclusive. + + + + Note that the root group is not exempted from the requirement for a valid /etc/subgid entry. @@ -127,7 +109,7 @@ newgidmap verifies that the caller is the owner of the process indicated by and that for each of the above sets, each of the GIDs in the range [lowergid, - lowergid+count] is allowed to the caller according to + lowergid+count) is allowed to the caller according to /etc/subgid before setting /proc/[pid]/gid_map. diff --git a/man/newgrp.1.xml b/man/newgrp.1.xml index 62f0625d..abdc0344 100644 --- a/man/newgrp.1.xml +++ b/man/newgrp.1.xml @@ -1,32 +1,8 @@ DESCRIPTION - The newuidmap sets /proc/[pid]/uid_map based on its - command line arguments and the uids allowed in /etc/subuid. + The newuidmap sets /proc/[pid]/uid_map + based on its command line arguments and the uids allowed. Subuid + delegation can either be managed via /etc/subuid or + through the configured NSS subid module. These options are mutually + exclusive. + + + Note that the root user is not exempted from the requirement for a valid /etc/subuid entry. @@ -127,7 +109,7 @@ newuidmap verifies that the caller is the owner of the process indicated by and that for each of the above sets, each of the UIDs in the range [loweruid, - loweruid+count] is allowed to the caller according to + loweruid+count) is allowed to the caller according to /etc/subuid before setting /proc/[pid]/uid_map. diff --git a/man/newusers.8.xml b/man/newusers.8.xml index 13307cc1..d4185edb 100644 --- a/man/newusers.8.xml +++ b/man/newusers.8.xml @@ -1,32 +1,8 @@ If this field does not specify an existing directory, the specified directory is created, with ownership set to the - user being created or updated and its primary group. + user being created or updated and its primary group. Note + that newusers does not create parent directories + of the new user's home directory. The newusers + command will fail to create the home directory if the parent + directories do not exist, and will send a message to stderr + informing the user of the failure. The newusers command will + not halt or return a failure to the calling shell if it fails + to create the home directory, it will continue to process the + batch of new users specified. If the home directory of an existing user is changed, diff --git a/man/nologin.8.xml b/man/nologin.8.xml index 30d4f1b9..2fcb0be6 100644 --- a/man/nologin.8.xml +++ b/man/nologin.8.xml @@ -1,32 +1,8 @@ passwd 5 - File Formats and Conversions + File Formats and Configuration Files shadow-utils &SHADOW_UTILS_VERSION; @@ -136,9 +112,12 @@ (but the user may log in the system by other means). - The comment field is used by various system utilities, such as + The comment field, also known as the gecos field, is used by + various system utilities, such as finger - 1. + 1. The use of an ampersand + here will be replaced by the capitalised login name when the field + is used or displayed by such system utilities. diff --git a/man/pl/Makefile.in b/man/pl/Makefile.in index c9d408f3..cbed6ffe 100644 --- a/man/pl/Makefile.in +++ b/man/pl/Makefile.in @@ -91,8 +91,14 @@ host_triplet = @host@ @USE_PAM_TRUE@am__append_2 = $(man_nopam) subdir = man/pl ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -184,7 +190,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -213,9 +218,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -253,7 +263,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/man/pl/man1/chage.1 b/man/pl/man1/chage.1 index 135c8083..21f9035c 100644 --- a/man/pl/man1/chage.1 +++ b/man/pl/man1/chage.1 @@ -2,12 +2,12 @@ .\" Title: chage .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "CHAGE" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia użytkownik\('ow" +.TH "CHAGE" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia użytkownik\('ow" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,7 +45,11 @@ command are: .PP \fB\-d\fR, \fB\-\-lastday\fR\ \&\fILAST_DAY\fR .RS 4 -Ustawia ilość dni od 1 stycznia 1970 kiedy ha\(/lo by\(/lo ostani raz zmieniane\&. Data ważności może być takze prezekazana w formacie RRRR\-MM\-DD (lub formacie używanym lokalnie)\&. +Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. If the +\fILAST_DAY\fR +is set to +\fI0\fR +the user is forced to change his password on the next log on\&. .RE .PP \fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR @@ -54,6 +58,19 @@ Ustawia datę, począwszy od kt\('orej konto użytkownika nie będzie już dost \fIDATA_WAŻN\fR jest liczbą dni od 1 stycznia 1970, od kt\('orej konto jest blokowane\&. Data może być też wyrażona w formacie RRRR\-MM\-DD (lub innej, powszechniej używanej w danym regionie)\&. Użytkownik, kt\('orego konto jest zablokowane musi skontaktować się z administratorem systemu zanim będzie m\('og\(/l z niego ponownie skorzystać\&. .sp +For example the following can be used to set an account to expire in 180 days: +.sp +.if n \{\ +.RS 4 +.\} +.nf + chage \-E $(date \-d +180days +%Y\-%m\-%d) + +.fi +.if n \{\ +.RE +.\} +.sp Passing the number \fI\-1\fR as the @@ -139,6 +156,14 @@ The \fBchage\fR program requires a shadow password file to be available\&. .PP +The chage program will report only the information from the shadow password file\&. This implies that configuration from other sources (e\&.g\&. LDAP or empty password hash field from the passwd file) that affect the user\*(Aqs login will not be shown in the chage output\&. +.PP +The +\fBchage\fR +program will also not report any inconsistency between the shadow and passwd files (e\&.g\&. missing x in the passwd file)\&. The +\fBpwck\fR +can be used to check for this kind of inconsistencies\&. +.PP The \fBchage\fR command is restricted to the root user, except for the diff --git a/man/pl/man1/chsh.1 b/man/pl/man1/chsh.1 index cc33e461..d132e2c7 100644 --- a/man/pl/man1/chsh.1 +++ b/man/pl/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "CHSH" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia użytkownik\('ow" +.TH "CHSH" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia użytkownik\('ow" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/expiry.1 b/man/pl/man1/expiry.1 index 8bb203ba..d0091ccd 100644 --- a/man/pl/man1/expiry.1 +++ b/man/pl/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "EXPIRY" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia użytkownik\('ow" +.TH "EXPIRY" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia użytkownik\('ow" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/groups.1 b/man/pl/man1/groups.1 index 05f7a8e9..c8c9a082 100644 --- a/man/pl/man1/groups.1 +++ b/man/pl/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "GROUPS" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia użytkownik\('ow" +.TH "GROUPS" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia użytkownik\('ow" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/id.1 b/man/pl/man1/id.1 index 4afbfc98..aea36838 100644 --- a/man/pl/man1/id.1 +++ b/man/pl/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "ID" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia użytkownik\('ow" +.TH "ID" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia użytkownik\('ow" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/newgrp.1 b/man/pl/man1/newgrp.1 index 6fdb3b28..9209c5d4 100644 --- a/man/pl/man1/newgrp.1 +++ b/man/pl/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "NEWGRP" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia użytkownik\('ow" +.TH "NEWGRP" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia użytkownik\('ow" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man1/sg.1 b/man/pl/man1/sg.1 index 82c1ee98..7869bf8f 100644 --- a/man/pl/man1/sg.1 +++ b/man/pl/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia użytkownik\('ow -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "SG" "1" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia użytkownik\('ow" +.TH "SG" "1" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia użytkownik\('ow" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man3/shadow.3 b/man/pl/man3/shadow.3 index e27ab5c5..c03a0099 100644 --- a/man/pl/man3/shadow.3 +++ b/man/pl/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Library Calls -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "SHADOW" "3" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Library Calls" +.TH "SHADOW" "3" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Library Calls" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man5/faillog.5 b/man/pl/man5/faillog.5 index 84aff2da..3956287b 100644 --- a/man/pl/man5/faillog.5 +++ b/man/pl/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "FAILLOG" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "FAILLOG" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man5/porttime.5 b/man/pl/man5/porttime.5 index 1be9aa78..41fa2c2d 100644 --- a/man/pl/man5/porttime.5 +++ b/man/pl/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 -.\" Manual: File Formats and Conversions -.\" Source: shadow-utils 4.8.1 +.\" Date: 01/02/2022 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "PORTTIME" "5" "01/23/2020" "shadow\-utils 4\&.8\&.1" "File Formats and Conversions" +.TH "PORTTIME" "5" "01/02/2022" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/faillog.8 b/man/pl/man8/faillog.8 index ed998085..217fa5e4 100644 --- a/man/pl/man8/faillog.8 +++ b/man/pl/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "FAILLOG" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "FAILLOG" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/groupadd.8 b/man/pl/man8/groupadd.8 index 128a6011..44dedd5e 100644 --- a/man/pl/man8/groupadd.8 +++ b/man/pl/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "GROUPADD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "GROUPADD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -132,6 +132,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in @@ -229,14 +243,13 @@ invalid argument to option .PP \fI4\fR .RS 4 -GID not unique (when -\fB\-o\fR -not used) +GID is already used (when called without +\fB\-o\fR) .RE .PP \fI9\fR .RS 4 -group name not unique +group name is already used .RE .PP \fI10\fR diff --git a/man/pl/man8/groupdel.8 b/man/pl/man8/groupdel.8 index 43e9de0e..031db986 100644 --- a/man/pl/man8/groupdel.8 +++ b/man/pl/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "GROUPDEL" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "GROUPDEL" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -44,6 +44,11 @@ The options which apply to the \fBgroupdel\fR command are: .PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +This option forces the removal of the group, even if there\*(Aqs some user having the group as the primary one\&. +.RE +.PP \fB\-h\fR, \fB\-\-help\fR .RS 4 Wyświetlenie komunikatu pomocy i zakończenie dzia\(/lania\&. diff --git a/man/pl/man8/groupmems.8 b/man/pl/man8/groupmems.8 index 9136efa1..02af71af 100644 --- a/man/pl/man8/groupmems.8 +++ b/man/pl/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "GROUPMEMS" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "GROUPMEMS" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/groupmod.8 b/man/pl/man8/groupmod.8 index c0bfd86f..de09b112 100644 --- a/man/pl/man8/groupmod.8 +++ b/man/pl/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "GROUPMOD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "GROUPMOD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,6 +45,11 @@ The options which apply to the \fBgroupmod\fR command are: .PP +\fB\-a\fR, \fB\-\-append\fR\ \&\fIGID\fR +.RS 4 +If group members are specified with \-U, append them to the existing member list, rather than replacing it\&. +.RE +.PP \fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 The group ID of the given @@ -123,6 +128,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "CONFIGURATION" .PP The following configuration variables in @@ -187,7 +206,7 @@ E_BAD_ARG: invalid argument to option .PP \fI4\fR .RS 4 -E_GID_IN_USE: specified group doesn\*(Aqt exist +E_GID_IN_USE: group id already in use .RE .PP \fI6\fR diff --git a/man/pl/man8/grpck.8 b/man/pl/man8/grpck.8 index ebd50146..06911247 100644 --- a/man/pl/man8/grpck.8 +++ b/man/pl/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "GRPCK" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "GRPCK" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -159,6 +159,14 @@ and /etc/gshadow by GID\&. .RE .PP +\fB\-S\fR, \fB\-\-silence\-warnings\fR +.RS 4 +Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in +/etc/group +and +/etc/ghadow\&. +.RE +.PP By default, \fBgrpck\fR operates on diff --git a/man/pl/man8/lastlog.8 b/man/pl/man8/lastlog.8 index d68951a9..16051674 100644 --- a/man/pl/man8/lastlog.8 +++ b/man/pl/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "LASTLOG" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "LASTLOG" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -135,3 +135,7 @@ Baza danych ostatnich logowań użytkownik\('ow\&. .SH "OSTRZEŻENIA" .PP Duże luki w numeracji UID powodują, że program będzie pracowa\(/l d\(/lużej, nie wyświetlając wynik\('ow (np\&. jeśli w bazie lastlog nie ma wpis\('ow dla o UID pomiedzy 170, a 800, to program będzie sprawia\(/l wrażenie zawieszonego w trakcie przetwarzania wpis\('ow dla użytkowanik\('o\(/l o UID 171\-799)\&. +.PP +Having high UIDs can create problems when handling the + /var/log/lastlog +with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/pl/man8/logoutd.8 b/man/pl/man8/logoutd.8 index 8072d5e5..9179f263 100644 --- a/man/pl/man8/logoutd.8 +++ b/man/pl/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "LOGOUTD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "LOGOUTD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/pl/man8/userdel.8 b/man/pl/man8/userdel.8 index 43f0eea4..78f9b039 100644 --- a/man/pl/man8/userdel.8 +++ b/man/pl/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "USERDEL" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "USERDEL" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -106,7 +106,9 @@ change the behavior of this tool: .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -221,6 +223,21 @@ Informacja o kontach użytkownik\('ow\&. Informacje chronione o użytkownikach\&. .RE .PP +/etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* +.RS 4 +Run\-part files to execute during user deletion\&. The environment variable +\fBACTION\fR +will be populated with +\fBuserdel\fR +and +\fBSUBJECT\fR +with the username\&. +userdel\-pre\&.d +will be executed prior to any user deletion\&. +userdel\-post\&.d +will execute after user deletion\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/subgid .RS 4 Per user subordinate group IDs\&. diff --git a/man/pl/man8/usermod.8 b/man/pl/man8/usermod.8 index 3123a31b..ad68ca01 100644 --- a/man/pl/man8/usermod.8 +++ b/man/pl/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "USERMOD" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "USERMOD" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,7 @@ The user\*(Aqs new login directory\&. .sp If the \fB\-m\fR -option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. +option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. If the current home directory does not exist the new home directory will not be created\&. .RE .PP \fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR @@ -107,6 +107,9 @@ The group name or number of the user\*(Aqs new initial login group\&. The group Any file from the user\*(Aqs home directory owned by the previous primary group of the user will be owned by this new group\&. .sp The group ownership of files outside of the user\*(Aqs home directory must be fixed manually\&. +.sp +The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. .RE .PP \fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] @@ -143,7 +146,7 @@ to .PP \fB\-m\fR, \fB\-\-move\-home\fR .RS 4 -Move the content of the user\*(Aqs home directory to the new location\&. +Move the content of the user\*(Aqs home directory to the new location\&. If the current home directory does not exist the new home directory will not be created\&. .sp This option is only valid in combination with the \fB\-d\fR @@ -172,6 +175,13 @@ This option is not recommended because the password (or encrypted password) will You should make sure the password respects the system\*(Aqs password policy\&. .RE .PP +\fB\-r\fR, \fB\-\-remove\fR +.RS 4 +Remove the user from named supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. +.RE +.PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the @@ -192,7 +202,7 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -Nazwa nowej pow\(/loki (shell) użytkownika\&. Ustawienie tego pola na puste powoduje, że system wybierze domyślną pow\(/lokę logowania\&. +The path of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. .RE .PP \fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR @@ -207,6 +217,9 @@ The user\*(Aqs mailbox, and any files which the user owns and which are located .sp The ownership of files outside of the user\*(Aqs home directory must be fixed manually\&. .sp +The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. +.sp No checks will be performed with regard to the \fBUID_MIN\fR, \fBUID_MAX\fR, @@ -332,7 +345,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/pl/man8/vipw.8 b/man/pl/man8/vipw.8 index 198c1e2c..53c160dd 100644 --- a/man/pl/man8/vipw.8 +++ b/man/pl/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 01/23/2020 +.\" Date: 01/02/2022 .\" Manual: Polecenia Zarządzania Systemem -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Polish .\" -.TH "VIPW" "8" "01/23/2020" "shadow\-utils 4\&.8\&.1" "Polecenia Zarządzania Systemem" +.TH "VIPW" "8" "01/02/2022" "shadow\-utils 4\&.11\&.1" "Polecenia Zarządzania Systemem" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/po/Makefile.in b/man/po/Makefile.in index deaa8705..f194957b 100644 --- a/man/po/Makefile.in +++ b/man/po/Makefile.in @@ -90,9 +90,17 @@ $(DOMAIN).pot-update: $(XMLFILES) $(srcdir)/XMLFILES remove-potcdate.sed @set -e; tmpdir=`pwd`; \ echo "cd $(top_srcdir)/man"; \ cd $(top_srcdir)/man; \ - echo "xml2po --expand-all-entities -o $$tmpdir/$(DOMAIN).po $(notdir $(XMLFILES))"; \ - xml2po --expand-all-entities -o $$tmpdir/$(DOMAIN).po $(notdir $(XMLFILES)); \ - cd $$tmpdir + files=""; \ + for file in $(notdir $(XMLFILES)); do \ + if grep -q SHADOW-CONFIG-HERE $$file ; then \ + sed -e 's/^/%config;/' $$file > $$file.out; \ + else \ + sed -e 's/^\(/\1 [%config;]>/' $$file > $$file.out; \ + fi; \ + files="$$files $$file.out"; \ + done; \ + itstool -d -o $$tmpdir/$(DOMAIN).po $$files; \ + cd $$tmpdir; \ test ! -f $(DOMAIN).po || { \ if test -f $(srcdir)/$(DOMAIN).pot; then \ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ diff --git a/man/po/da.po b/man/po/da.po index 2bb6aed7..0a169a9d 100644 --- a/man/po/da.po +++ b/man/po/da.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-man\n" -"POT-Creation-Date: 2020-01-23 15:00-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2013-08-23 01:35+0200\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -29,5147 +29,1762 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: vipw.8.xml:41(firstname) suauth.5.xml:39(firstname) -#: pwconv.8.xml:45(firstname) login.access.5.xml:40(firstname) -msgid "Marek" +#. (itstool) path: author/firstname +#: chage.1.xml.out:16 chfn.1.xml.out:18 chpasswd.8.xml.out:19 chsh.1.xml.out:18 +#: expiry.1.xml.out:19 faillog.5.xml.out:15 faillog.8.xml.out:15 +#: groupadd.8.xml.out:18 groupdel.8.xml.out:16 groupmod.8.xml.out:16 +#: groups.1.xml.out:15 grpck.8.xml.out:15 lastlog.8.xml.out:17 +#: login.1.xml.out:48 login.defs.5.xml.out:84 logoutd.8.xml.out:15 +#: newgrp.1.xml.out:16 newusers.8.xml.out:31 passwd.1.xml.out:22 +#: passwd.5.xml.out:15 porttime.5.xml.out:15 pwck.8.xml.out:22 +#: shadow.3.xml.out:15 shadow.5.xml.out:15 sg.1.xml.out:16 su.1.xml.out:32 +#: useradd.8.xml.out:34 userdel.8.xml.out:21 usermod.8.xml.out:22 +msgid "Julianne Frances" msgstr "" -#: vipw.8.xml:42(surname) suauth.5.xml:40(surname) pwconv.8.xml:46(surname) -#: login.access.5.xml:41(surname) -msgid "Michałkiewicz" +#. (itstool) path: author/surname +#: chage.1.xml.out:17 chfn.1.xml.out:19 chpasswd.8.xml.out:20 chsh.1.xml.out:19 +#: expiry.1.xml.out:20 faillog.5.xml.out:16 faillog.8.xml.out:16 +#: groupadd.8.xml.out:19 groupdel.8.xml.out:17 groupmod.8.xml.out:17 +#: groups.1.xml.out:16 grpck.8.xml.out:16 lastlog.8.xml.out:18 +#: login.1.xml.out:49 login.defs.5.xml.out:85 logoutd.8.xml.out:16 +#: newgrp.1.xml.out:17 newusers.8.xml.out:32 passwd.1.xml.out:23 +#: passwd.5.xml.out:16 porttime.5.xml.out:16 pwck.8.xml.out:23 +#: shadow.3.xml.out:16 shadow.5.xml.out:16 sg.1.xml.out:17 su.1.xml.out:33 +#: useradd.8.xml.out:35 userdel.8.xml.out:22 usermod.8.xml.out:23 +msgid "Haugh" msgstr "" -#: vipw.8.xml:43(contrib) limits.5.xml:43(contrib) -msgid "Creation, 1997" +#. (itstool) path: author/contrib +#: chage.1.xml.out:18 chfn.1.xml.out:20 chsh.1.xml.out:20 expiry.1.xml.out:21 +msgid "Creation, 1990" msgstr "" -#: vipw.8.xml:46(firstname) usermod.8.xml:51(firstname) -#: userdel.8.xml:50(firstname) useradd.8.xml:63(firstname) -#: suauth.5.xml:44(firstname) su.1.xml:61(firstname) sg.1.xml:45(firstname) -#: shadow.5.xml:44(firstname) shadow.3.xml:44(firstname) -#: pwconv.8.xml:50(firstname) pwck.8.xml:50(firstname) -#: porttime.5.xml:44(firstname) passwd.5.xml:44(firstname) -#: passwd.1.xml:51(firstname) newusers.8.xml:60(firstname) -#: newgrp.1.xml:45(firstname) logoutd.8.xml:44(firstname) -#: login.defs.5.xml:111(firstname) login.access.5.xml:45(firstname) -#: login.1.xml:77(firstname) limits.5.xml:46(firstname) -#: lastlog.8.xml:46(firstname) grpck.8.xml:45(firstname) -#: groups.1.xml:44(firstname) groupmod.8.xml:45(firstname) -#: groupmems.8.xml:48(firstname) groupdel.8.xml:45(firstname) -#: groupadd.8.xml:47(firstname) gpasswd.1.xml:49(firstname) -#: faillog.8.xml:44(firstname) faillog.5.xml:44(firstname) -#: expiry.1.xml:48(firstname) chsh.1.xml:47(firstname) -#: chpasswd.8.xml:48(firstname) chgpasswd.8.xml:44(firstname) -#: chfn.1.xml:47(firstname) chage.1.xml:45(firstname) +#. (itstool) path: author/firstname +#: chage.1.xml.out:21 chfn.1.xml.out:23 chgpasswd.8.xml.out:20 +#: chpasswd.8.xml.out:24 chsh.1.xml.out:23 expiry.1.xml.out:24 +#: faillog.5.xml.out:20 faillog.8.xml.out:20 gpasswd.1.xml.out:25 +#: groupadd.8.xml.out:23 groupdel.8.xml.out:21 groupmems.8.xml.out:24 +#: groupmod.8.xml.out:21 groups.1.xml.out:20 grpck.8.xml.out:20 +#: lastlog.8.xml.out:22 limits.5.xml.out:22 login.1.xml.out:53 +#: login.access.5.xml.out:21 login.defs.5.xml.out:89 logoutd.8.xml.out:20 +#: newgrp.1.xml.out:21 newusers.8.xml.out:36 passwd.1.xml.out:27 +#: passwd.5.xml.out:20 porttime.5.xml.out:20 pwck.8.xml.out:27 +#: pwconv.8.xml.out:26 shadow.3.xml.out:20 shadow.5.xml.out:20 sg.1.xml.out:21 +#: su.1.xml.out:37 suauth.5.xml.out:20 useradd.8.xml.out:39 +#: userdel.8.xml.out:26 usermod.8.xml.out:27 vipw.8.xml.out:22 msgid "Thomas" msgstr "" -#: vipw.8.xml:47(surname) usermod.8.xml:52(surname) userdel.8.xml:51(surname) -#: useradd.8.xml:64(surname) suauth.5.xml:45(surname) su.1.xml:62(surname) -#: sg.1.xml:46(surname) shadow.5.xml:45(surname) shadow.3.xml:45(surname) -#: pwconv.8.xml:51(surname) pwck.8.xml:51(surname) porttime.5.xml:45(surname) -#: passwd.5.xml:45(surname) passwd.1.xml:52(surname) newusers.8.xml:61(surname) -#: newgrp.1.xml:46(surname) logoutd.8.xml:45(surname) -#: login.defs.5.xml:112(surname) login.access.5.xml:46(surname) -#: login.1.xml:78(surname) limits.5.xml:47(surname) lastlog.8.xml:47(surname) -#: grpck.8.xml:46(surname) groups.1.xml:45(surname) groupmod.8.xml:46(surname) -#: groupmems.8.xml:49(surname) groupdel.8.xml:46(surname) -#: groupadd.8.xml:48(surname) gpasswd.1.xml:50(surname) -#: faillog.8.xml:45(surname) faillog.5.xml:45(surname) expiry.1.xml:49(surname) -#: chsh.1.xml:48(surname) chpasswd.8.xml:49(surname) -#: chgpasswd.8.xml:45(surname) chfn.1.xml:48(surname) chage.1.xml:46(surname) +#. (itstool) path: author/surname +#: chage.1.xml.out:22 chfn.1.xml.out:24 chgpasswd.8.xml.out:21 +#: chpasswd.8.xml.out:25 chsh.1.xml.out:24 expiry.1.xml.out:25 +#: faillog.5.xml.out:21 faillog.8.xml.out:21 gpasswd.1.xml.out:26 +#: groupadd.8.xml.out:24 groupdel.8.xml.out:22 groupmems.8.xml.out:25 +#: groupmod.8.xml.out:22 groups.1.xml.out:21 grpck.8.xml.out:21 +#: lastlog.8.xml.out:23 limits.5.xml.out:23 login.1.xml.out:54 +#: login.access.5.xml.out:22 login.defs.5.xml.out:90 logoutd.8.xml.out:21 +#: newgrp.1.xml.out:22 newusers.8.xml.out:37 passwd.1.xml.out:28 +#: passwd.5.xml.out:21 porttime.5.xml.out:21 pwck.8.xml.out:28 +#: pwconv.8.xml.out:27 shadow.3.xml.out:21 shadow.5.xml.out:21 sg.1.xml.out:22 +#: su.1.xml.out:38 suauth.5.xml.out:21 useradd.8.xml.out:40 +#: userdel.8.xml.out:27 usermod.8.xml.out:28 vipw.8.xml.out:23 msgid "Kłoczko" msgstr "" -#: vipw.8.xml:48(email) usermod.8.xml:53(email) userdel.8.xml:52(email) -#: useradd.8.xml:65(email) suauth.5.xml:46(email) su.1.xml:63(email) -#: sg.1.xml:47(email) shadow.5.xml:46(email) shadow.3.xml:46(email) -#: pwconv.8.xml:52(email) pwck.8.xml:52(email) porttime.5.xml:46(email) -#: passwd.5.xml:46(email) passwd.1.xml:53(email) newusers.8.xml:62(email) -#: newgrp.1.xml:47(email) logoutd.8.xml:46(email) login.defs.5.xml:113(email) -#: login.access.5.xml:47(email) login.1.xml:79(email) limits.5.xml:48(email) -#: lastlog.8.xml:48(email) grpck.8.xml:47(email) groups.1.xml:46(email) -#: groupmod.8.xml:47(email) groupmems.8.xml:50(email) groupdel.8.xml:47(email) -#: groupadd.8.xml:49(email) gpasswd.1.xml:51(email) faillog.8.xml:46(email) -#: faillog.5.xml:46(email) expiry.1.xml:50(email) chsh.1.xml:49(email) -#: chpasswd.8.xml:50(email) chgpasswd.8.xml:46(email) chfn.1.xml:49(email) -#: chage.1.xml:47(email) +#. (itstool) path: author/email +#: chage.1.xml.out:23 chfn.1.xml.out:25 chgpasswd.8.xml.out:22 +#: chpasswd.8.xml.out:26 chsh.1.xml.out:25 expiry.1.xml.out:26 +#: faillog.5.xml.out:22 faillog.8.xml.out:22 gpasswd.1.xml.out:27 +#: groupadd.8.xml.out:25 groupdel.8.xml.out:23 groupmems.8.xml.out:26 +#: groupmod.8.xml.out:23 groups.1.xml.out:22 grpck.8.xml.out:22 +#: lastlog.8.xml.out:24 limits.5.xml.out:24 login.1.xml.out:55 +#: login.access.5.xml.out:23 login.defs.5.xml.out:91 logoutd.8.xml.out:22 +#: newgrp.1.xml.out:23 newusers.8.xml.out:38 passwd.1.xml.out:29 +#: passwd.5.xml.out:22 porttime.5.xml.out:22 pwck.8.xml.out:29 +#: pwconv.8.xml.out:28 shadow.3.xml.out:22 shadow.5.xml.out:22 sg.1.xml.out:23 +#: su.1.xml.out:39 suauth.5.xml.out:22 useradd.8.xml.out:41 +#: userdel.8.xml.out:28 usermod.8.xml.out:29 vipw.8.xml.out:24 msgid "kloczek@pld.org.pl" msgstr "" -#: vipw.8.xml:49(contrib) usermod.8.xml:54(contrib) userdel.8.xml:53(contrib) -#: useradd.8.xml:66(contrib) suauth.5.xml:47(contrib) su.1.xml:64(contrib) -#: sg.1.xml:48(contrib) shadow.5.xml:47(contrib) shadow.3.xml:47(contrib) -#: pwconv.8.xml:53(contrib) pwck.8.xml:53(contrib) porttime.5.xml:47(contrib) -#: passwd.5.xml:47(contrib) passwd.1.xml:54(contrib) newusers.8.xml:63(contrib) -#: newgrp.1.xml:48(contrib) logoutd.8.xml:47(contrib) -#: login.defs.5.xml:114(contrib) login.access.5.xml:48(contrib) -#: login.1.xml:80(contrib) limits.5.xml:49(contrib) lastlog.8.xml:49(contrib) -#: grpck.8.xml:48(contrib) groups.1.xml:47(contrib) groupmod.8.xml:48(contrib) -#: groupmems.8.xml:51(contrib) groupdel.8.xml:48(contrib) -#: groupadd.8.xml:50(contrib) gpasswd.1.xml:52(contrib) -#: faillog.8.xml:47(contrib) faillog.5.xml:47(contrib) expiry.1.xml:51(contrib) -#: chsh.1.xml:50(contrib) chpasswd.8.xml:51(contrib) chfn.1.xml:50(contrib) -#: chage.1.xml:48(contrib) +#. (itstool) path: author/contrib +#: chage.1.xml.out:24 chfn.1.xml.out:26 chpasswd.8.xml.out:27 chsh.1.xml.out:26 +#: expiry.1.xml.out:27 faillog.5.xml.out:23 faillog.8.xml.out:23 +#: gpasswd.1.xml.out:28 groupadd.8.xml.out:26 groupdel.8.xml.out:24 +#: groupmems.8.xml.out:27 groupmod.8.xml.out:24 groups.1.xml.out:23 +#: grpck.8.xml.out:23 lastlog.8.xml.out:25 limits.5.xml.out:25 +#: login.1.xml.out:56 login.access.5.xml.out:24 login.defs.5.xml.out:92 +#: logoutd.8.xml.out:23 newgrp.1.xml.out:24 newusers.8.xml.out:39 +#: passwd.1.xml.out:30 passwd.5.xml.out:23 porttime.5.xml.out:23 +#: pwck.8.xml.out:30 pwconv.8.xml.out:29 shadow.3.xml.out:23 +#: shadow.5.xml.out:23 sg.1.xml.out:24 su.1.xml.out:40 suauth.5.xml.out:23 +#: useradd.8.xml.out:42 userdel.8.xml.out:29 usermod.8.xml.out:30 +#: vipw.8.xml.out:25 msgid "shadow-utils maintainer, 2000 - 2007" msgstr "" -#: vipw.8.xml:52(firstname) usermod.8.xml:57(firstname) -#: userdel.8.xml:56(firstname) useradd.8.xml:69(firstname) -#: suauth.5.xml:50(firstname) su.1.xml:67(firstname) sg.1.xml:51(firstname) -#: shadow.5.xml:50(firstname) shadow.3.xml:50(firstname) -#: pwconv.8.xml:56(firstname) pwck.8.xml:56(firstname) -#: porttime.5.xml:50(firstname) passwd.5.xml:50(firstname) -#: passwd.1.xml:57(firstname) nologin.8.xml:39(firstname) -#: newusers.8.xml:66(firstname) newgrp.1.xml:51(firstname) -#: logoutd.8.xml:50(firstname) login.defs.5.xml:117(firstname) -#: login.access.5.xml:51(firstname) login.1.xml:83(firstname) -#: limits.5.xml:52(firstname) lastlog.8.xml:52(firstname) -#: gshadow.5.xml:38(firstname) grpck.8.xml:51(firstname) -#: groups.1.xml:50(firstname) groupmod.8.xml:51(firstname) -#: groupmems.8.xml:54(firstname) groupdel.8.xml:51(firstname) -#: groupadd.8.xml:53(firstname) gpasswd.1.xml:55(firstname) -#: faillog.8.xml:50(firstname) faillog.5.xml:50(firstname) -#: expiry.1.xml:54(firstname) chsh.1.xml:53(firstname) -#: chpasswd.8.xml:54(firstname) chgpasswd.8.xml:50(firstname) -#: chfn.1.xml:53(firstname) chage.1.xml:51(firstname) +#. (itstool) path: author/firstname +#: chage.1.xml.out:27 chfn.1.xml.out:29 chgpasswd.8.xml.out:26 +#: chpasswd.8.xml.out:30 chsh.1.xml.out:29 expiry.1.xml.out:30 +#: faillog.5.xml.out:26 faillog.8.xml.out:26 gpasswd.1.xml.out:31 +#: groupadd.8.xml.out:29 groupdel.8.xml.out:27 groupmems.8.xml.out:30 +#: groupmod.8.xml.out:27 groups.1.xml.out:26 grpck.8.xml.out:26 +#: gshadow.5.xml.out:14 lastlog.8.xml.out:28 limits.5.xml.out:28 +#: login.1.xml.out:59 login.access.5.xml.out:27 login.defs.5.xml.out:95 +#: logoutd.8.xml.out:26 newgrp.1.xml.out:27 newusers.8.xml.out:42 +#: nologin.8.xml.out:15 passwd.1.xml.out:33 passwd.5.xml.out:26 +#: porttime.5.xml.out:26 pwck.8.xml.out:33 pwconv.8.xml.out:32 +#: shadow.3.xml.out:26 shadow.5.xml.out:26 sg.1.xml.out:27 su.1.xml.out:43 +#: suauth.5.xml.out:26 useradd.8.xml.out:45 userdel.8.xml.out:32 +#: usermod.8.xml.out:33 vipw.8.xml.out:28 msgid "Nicolas" msgstr "" -#: vipw.8.xml:53(surname) usermod.8.xml:58(surname) userdel.8.xml:57(surname) -#: useradd.8.xml:70(surname) suauth.5.xml:51(surname) su.1.xml:68(surname) -#: sg.1.xml:52(surname) shadow.5.xml:51(surname) shadow.3.xml:51(surname) -#: pwconv.8.xml:57(surname) pwck.8.xml:57(surname) porttime.5.xml:51(surname) -#: passwd.5.xml:51(surname) passwd.1.xml:58(surname) nologin.8.xml:40(surname) -#: newusers.8.xml:67(surname) newgrp.1.xml:52(surname) -#: logoutd.8.xml:51(surname) login.defs.5.xml:118(surname) -#: login.access.5.xml:52(surname) login.1.xml:84(surname) -#: limits.5.xml:53(surname) lastlog.8.xml:53(surname) gshadow.5.xml:39(surname) -#: grpck.8.xml:52(surname) groups.1.xml:51(surname) groupmod.8.xml:52(surname) -#: groupmems.8.xml:55(surname) groupdel.8.xml:52(surname) -#: groupadd.8.xml:54(surname) gpasswd.1.xml:56(surname) -#: faillog.8.xml:51(surname) faillog.5.xml:51(surname) expiry.1.xml:55(surname) -#: chsh.1.xml:54(surname) chpasswd.8.xml:55(surname) -#: chgpasswd.8.xml:51(surname) chfn.1.xml:54(surname) chage.1.xml:52(surname) +#. (itstool) path: author/surname +#: chage.1.xml.out:28 chfn.1.xml.out:30 chgpasswd.8.xml.out:27 +#: chpasswd.8.xml.out:31 chsh.1.xml.out:30 expiry.1.xml.out:31 +#: faillog.5.xml.out:27 faillog.8.xml.out:27 gpasswd.1.xml.out:32 +#: groupadd.8.xml.out:30 groupdel.8.xml.out:28 groupmems.8.xml.out:31 +#: groupmod.8.xml.out:28 groups.1.xml.out:27 grpck.8.xml.out:27 +#: gshadow.5.xml.out:15 lastlog.8.xml.out:29 limits.5.xml.out:29 +#: login.1.xml.out:60 login.access.5.xml.out:28 login.defs.5.xml.out:96 +#: logoutd.8.xml.out:27 newgrp.1.xml.out:28 newusers.8.xml.out:43 +#: nologin.8.xml.out:16 passwd.1.xml.out:34 passwd.5.xml.out:27 +#: porttime.5.xml.out:27 pwck.8.xml.out:34 pwconv.8.xml.out:33 +#: shadow.3.xml.out:27 shadow.5.xml.out:27 sg.1.xml.out:28 su.1.xml.out:44 +#: suauth.5.xml.out:27 useradd.8.xml.out:46 userdel.8.xml.out:33 +#: usermod.8.xml.out:34 vipw.8.xml.out:29 msgid "François" msgstr "" -#: vipw.8.xml:54(email) usermod.8.xml:59(email) userdel.8.xml:58(email) -#: useradd.8.xml:71(email) suauth.5.xml:52(email) su.1.xml:69(email) -#: sg.1.xml:53(email) shadow.5.xml:52(email) shadow.3.xml:52(email) -#: pwconv.8.xml:58(email) pwck.8.xml:58(email) porttime.5.xml:52(email) -#: passwd.5.xml:52(email) passwd.1.xml:59(email) nologin.8.xml:41(email) -#: newusers.8.xml:68(email) newgrp.1.xml:53(email) logoutd.8.xml:52(email) -#: login.defs.5.xml:119(email) login.access.5.xml:53(email) -#: login.1.xml:85(email) limits.5.xml:54(email) lastlog.8.xml:54(email) -#: gshadow.5.xml:40(email) grpck.8.xml:53(email) groups.1.xml:52(email) -#: groupmod.8.xml:53(email) groupmems.8.xml:56(email) groupdel.8.xml:53(email) -#: groupadd.8.xml:55(email) gpasswd.1.xml:57(email) faillog.8.xml:52(email) -#: faillog.5.xml:52(email) expiry.1.xml:56(email) chsh.1.xml:55(email) -#: chpasswd.8.xml:56(email) chgpasswd.8.xml:52(email) chfn.1.xml:55(email) -#: chage.1.xml:53(email) +#. (itstool) path: author/email +#: chage.1.xml.out:29 chfn.1.xml.out:31 chgpasswd.8.xml.out:28 +#: chpasswd.8.xml.out:32 chsh.1.xml.out:31 expiry.1.xml.out:32 +#: faillog.5.xml.out:28 faillog.8.xml.out:28 gpasswd.1.xml.out:33 +#: groupadd.8.xml.out:31 groupdel.8.xml.out:29 groupmems.8.xml.out:32 +#: groupmod.8.xml.out:29 groups.1.xml.out:28 grpck.8.xml.out:28 +#: gshadow.5.xml.out:16 lastlog.8.xml.out:30 limits.5.xml.out:30 +#: login.1.xml.out:61 login.access.5.xml.out:29 login.defs.5.xml.out:97 +#: logoutd.8.xml.out:28 newgrp.1.xml.out:29 newusers.8.xml.out:44 +#: nologin.8.xml.out:17 passwd.1.xml.out:35 passwd.5.xml.out:28 +#: porttime.5.xml.out:28 pwck.8.xml.out:35 pwconv.8.xml.out:34 +#: shadow.3.xml.out:28 shadow.5.xml.out:28 sg.1.xml.out:29 su.1.xml.out:45 +#: suauth.5.xml.out:28 useradd.8.xml.out:47 userdel.8.xml.out:34 +#: usermod.8.xml.out:35 vipw.8.xml.out:30 msgid "nicolas.francois@centraliens.net" msgstr "" -#: vipw.8.xml:55(contrib) usermod.8.xml:60(contrib) userdel.8.xml:59(contrib) -#: useradd.8.xml:72(contrib) suauth.5.xml:53(contrib) su.1.xml:70(contrib) -#: sg.1.xml:54(contrib) shadow.5.xml:53(contrib) shadow.3.xml:53(contrib) -#: pwconv.8.xml:59(contrib) pwck.8.xml:59(contrib) porttime.5.xml:53(contrib) -#: passwd.5.xml:53(contrib) passwd.1.xml:60(contrib) nologin.8.xml:42(contrib) -#: newusers.8.xml:69(contrib) newgrp.1.xml:54(contrib) -#: logoutd.8.xml:53(contrib) login.defs.5.xml:120(contrib) -#: login.access.5.xml:54(contrib) login.1.xml:86(contrib) -#: limits.5.xml:55(contrib) lastlog.8.xml:55(contrib) gshadow.5.xml:42(contrib) -#: grpck.8.xml:54(contrib) groups.1.xml:53(contrib) groupmod.8.xml:54(contrib) -#: groupmems.8.xml:57(contrib) groupdel.8.xml:54(contrib) -#: groupadd.8.xml:56(contrib) gpasswd.1.xml:58(contrib) -#: faillog.8.xml:53(contrib) faillog.5.xml:53(contrib) expiry.1.xml:57(contrib) -#: chsh.1.xml:56(contrib) chpasswd.8.xml:57(contrib) -#: chgpasswd.8.xml:53(contrib) chfn.1.xml:56(contrib) chage.1.xml:54(contrib) +#. (itstool) path: author/contrib +#: chage.1.xml.out:30 chfn.1.xml.out:32 chgpasswd.8.xml.out:29 +#: chpasswd.8.xml.out:33 chsh.1.xml.out:32 expiry.1.xml.out:33 +#: faillog.5.xml.out:29 faillog.8.xml.out:29 gpasswd.1.xml.out:34 +#: groupadd.8.xml.out:32 groupdel.8.xml.out:30 groupmems.8.xml.out:33 +#: groupmod.8.xml.out:30 groups.1.xml.out:29 grpck.8.xml.out:29 +#: gshadow.5.xml.out:18 lastlog.8.xml.out:31 limits.5.xml.out:31 +#: login.1.xml.out:62 login.access.5.xml.out:30 login.defs.5.xml.out:98 +#: logoutd.8.xml.out:29 newgrp.1.xml.out:30 newusers.8.xml.out:45 +#: nologin.8.xml.out:18 passwd.1.xml.out:36 passwd.5.xml.out:29 +#: porttime.5.xml.out:29 pwck.8.xml.out:36 pwconv.8.xml.out:35 +#: shadow.3.xml.out:29 shadow.5.xml.out:29 sg.1.xml.out:30 su.1.xml.out:46 +#: suauth.5.xml.out:29 useradd.8.xml.out:48 userdel.8.xml.out:35 +#: usermod.8.xml.out:36 vipw.8.xml.out:31 msgid "shadow-utils maintainer, 2007 - now" msgstr "" -#: vipw.8.xml:59(refentrytitle) vipw.8.xml:66(refname) vipw.8.xml:75(command) -#: login.defs.5.xml:520(term) -msgid "vipw" -msgstr "vipw" +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#. (itstool) path: cmdsynopsis/command +#. (itstool) path: para/command +#. (itstool) path: varlistentry/term +#. (itstool) path: citerefentry/refentrytitle +#: chage.1.xml.out:34 chage.1.xml.out:41 chage.1.xml.out:46 chage.1.xml.out:59 +#: chage.1.xml.out:69 chage.1.xml.out:215 chage.1.xml.out:225 +#: chage.1.xml.out:235 chage.1.xml.out:240 chage.1.xml.out:284 +#: login.defs.5.xml.out:233 shadow.5.xml.out:262 +msgid "chage" +msgstr "" -#: vipw.8.xml:60(manvolnum) usermod.8.xml:65(manvolnum) -#: userdel.8.xml:64(manvolnum) userdel.8.xml:276(replaceable) -#: useradd.8.xml:77(manvolnum) pwconv.8.xml:64(manvolnum) -#: pwck.8.xml:64(manvolnum) nologin.8.xml:47(manvolnum) -#: newusers.8.xml:74(manvolnum) logoutd.8.xml:58(manvolnum) -#: lastlog.8.xml:60(manvolnum) grpck.8.xml:59(manvolnum) -#: groupmod.8.xml:59(manvolnum) groupmems.8.xml:62(manvolnum) -#: groupdel.8.xml:59(manvolnum) groupdel.8.xml:198(replaceable) -#: groupadd.8.xml:61(manvolnum) faillog.8.xml:58(manvolnum) -#: faillog.5.xml:111(manvolnum) chpasswd.8.xml:62(manvolnum) -#: chgpasswd.8.xml:58(manvolnum) -msgid "8" -msgstr "8" +#. (itstool) path: refmeta/manvolnum +#. (itstool) path: term/replaceable +#. (itstool) path: citerefentry/manvolnum +#. (itstool) path: para/replaceable +#: chage.1.xml.out:35 chage.1.xml.out:293 chfn.1.xml.out:37 chfn.1.xml.out:65 +#: chfn.1.xml.out:204 chgpasswd.8.xml.out:216 chpasswd.8.xml.out:264 +#: chsh.1.xml.out:37 chsh.1.xml.out:170 expiry.1.xml.out:38 +#: faillog.8.xml.out:234 gpasswd.1.xml.out:39 gpasswd.1.xml.out:93 +#: gpasswd.1.xml.out:276 groupadd.8.xml.out:335 groupadd.8.xml.out:338 +#: groupadd.8.xml.out:341 groupdel.8.xml.out:204 groupdel.8.xml.out:207 +#: groupdel.8.xml.out:210 groupmems.8.xml.out:208 groupmems.8.xml.out:211 +#: groupmems.8.xml.out:214 groupmod.8.xml.out:325 groupmod.8.xml.out:328 +#: groupmod.8.xml.out:331 groups.1.xml.out:34 groups.1.xml.out:91 +#: grpck.8.xml.out:242 gshadow.5.xml.out:77 gshadow.5.xml.out:165 +#: limits.5.xml.out:185 login.1.xml.out:67 login.1.xml.out:128 +#: login.1.xml.out:377 login.1.xml.out:380 login.1.xml.out:383 +#: login.1.xml.out:386 login.access.5.xml.out:112 login.defs.5.xml.out:516 +#: login.defs.5.xml.out:518 login.defs.5.xml.out:520 login.defs.5.xml.out:530 +#: login.defs.5.xml.out:533 login.defs.5.xml.out:536 newgrp.1.xml.out:35 +#: newgrp.1.xml.out:130 newgrp.1.xml.out:133 newgrp.1.xml.out:136 +#: newgrp.1.xml.out:139 newgrp.1.xml.out:142 newusers.8.xml.out:455 +#: nologin.8.xml.out:60 passwd.1.xml.out:41 passwd.1.xml.out:430 +#: passwd.5.xml.out:118 passwd.5.xml.out:173 passwd.5.xml.out:179 +#: passwd.5.xml.out:182 passwd.5.xml.out:197 porttime.5.xml.out:121 +#: pwck.8.xml.out:292 shadow.5.xml.out:262 shadow.5.xml.out:265 +#: shadow.5.xml.out:268 shadow.5.xml.out:283 sg.1.xml.out:35 sg.1.xml.out:119 +#: sg.1.xml.out:122 sg.1.xml.out:125 sg.1.xml.out:128 sg.1.xml.out:131 +#: su.1.xml.out:51 su.1.xml.out:391 su.1.xml.out:415 su.1.xml.out:421 +#: su.1.xml.out:424 suauth.5.xml.out:201 useradd.8.xml.out:772 +#: useradd.8.xml.out:833 useradd.8.xml.out:836 useradd.8.xml.out:839 +#: userdel.8.xml.out:240 userdel.8.xml.out:309 userdel.8.xml.out:312 +#: userdel.8.xml.out:315 usermod.8.xml.out:105 usermod.8.xml.out:242 +#: usermod.8.xml.out:594 usermod.8.xml.out:597 usermod.8.xml.out:600 +#: vipw.8.xml.out:78 vipw.8.xml.out:204 +msgid "1" +msgstr "" -#: vipw.8.xml:61(refmiscinfo) usermod.8.xml:66(refmiscinfo) -#: userdel.8.xml:65(refmiscinfo) useradd.8.xml:78(refmiscinfo) -#: pwconv.8.xml:65(refmiscinfo) pwck.8.xml:65(refmiscinfo) -#: nologin.8.xml:48(refmiscinfo) newusers.8.xml:75(refmiscinfo) -#: logoutd.8.xml:59(refmiscinfo) lastlog.8.xml:61(refmiscinfo) -#: grpck.8.xml:60(refmiscinfo) groupmod.8.xml:60(refmiscinfo) -#: groupmems.8.xml:63(refmiscinfo) groupdel.8.xml:60(refmiscinfo) -#: groupadd.8.xml:62(refmiscinfo) faillog.8.xml:59(refmiscinfo) -#: chpasswd.8.xml:63(refmiscinfo) chgpasswd.8.xml:59(refmiscinfo) -msgid "System Management Commands" -msgstr "Kommandoer for systemhåndtering" +#. (itstool) path: refmeta/refmiscinfo +#: chage.1.xml.out:36 chfn.1.xml.out:38 chsh.1.xml.out:38 expiry.1.xml.out:39 +#: gpasswd.1.xml.out:40 groups.1.xml.out:35 login.1.xml.out:68 +#: newgrp.1.xml.out:36 passwd.1.xml.out:42 sg.1.xml.out:36 su.1.xml.out:52 +msgid "User Commands" +msgstr "" -#: vipw.8.xml:62(refmiscinfo) usermod.8.xml:67(refmiscinfo) -#: userdel.8.xml:66(refmiscinfo) useradd.8.xml:79(refmiscinfo) -#: suauth.5.xml:60(refmiscinfo) su.1.xml:77(refmiscinfo) -#: sg.1.xml:61(refmiscinfo) shadow.5.xml:60(refmiscinfo) -#: shadow.3.xml:60(refmiscinfo) pwconv.8.xml:66(refmiscinfo) -#: pwck.8.xml:66(refmiscinfo) porttime.5.xml:60(refmiscinfo) -#: passwd.5.xml:60(refmiscinfo) passwd.1.xml:67(refmiscinfo) -#: nologin.8.xml:49(refmiscinfo) newusers.8.xml:76(refmiscinfo) -#: newgrp.1.xml:61(refmiscinfo) logoutd.8.xml:60(refmiscinfo) -#: login.defs.5.xml:127(refmiscinfo) login.access.5.xml:61(refmiscinfo) -#: login.1.xml:93(refmiscinfo) limits.5.xml:62(refmiscinfo) -#: lastlog.8.xml:62(refmiscinfo) gshadow.5.xml:49(refmiscinfo) -#: grpck.8.xml:61(refmiscinfo) groups.1.xml:60(refmiscinfo) -#: groupmod.8.xml:61(refmiscinfo) groupmems.8.xml:64(refmiscinfo) -#: groupdel.8.xml:61(refmiscinfo) groupadd.8.xml:63(refmiscinfo) -#: gpasswd.1.xml:65(refmiscinfo) faillog.8.xml:60(refmiscinfo) -#: faillog.5.xml:60(refmiscinfo) expiry.1.xml:64(refmiscinfo) -#: chsh.1.xml:63(refmiscinfo) chpasswd.8.xml:64(refmiscinfo) -#: chgpasswd.8.xml:60(refmiscinfo) chfn.1.xml:63(refmiscinfo) -#: chage.1.xml:61(refmiscinfo) +#. (itstool) path: refmeta/refmiscinfo +#: chage.1.xml.out:37 chfn.1.xml.out:39 chgpasswd.8.xml.out:36 +#: chpasswd.8.xml.out:40 chsh.1.xml.out:39 expiry.1.xml.out:40 +#: faillog.5.xml.out:36 faillog.8.xml.out:36 gpasswd.1.xml.out:41 +#: groupadd.8.xml.out:39 groupdel.8.xml.out:37 groupmems.8.xml.out:40 +#: groupmod.8.xml.out:37 groups.1.xml.out:36 grpck.8.xml.out:36 +#: gshadow.5.xml.out:25 lastlog.8.xml.out:38 limits.5.xml.out:38 +#: login.1.xml.out:69 login.access.5.xml.out:37 login.defs.5.xml.out:105 +#: logoutd.8.xml.out:36 newgrp.1.xml.out:37 newusers.8.xml.out:52 +#: nologin.8.xml.out:25 passwd.1.xml.out:43 passwd.5.xml.out:36 +#: porttime.5.xml.out:36 pwck.8.xml.out:43 pwconv.8.xml.out:42 +#: shadow.3.xml.out:36 shadow.5.xml.out:36 sg.1.xml.out:37 su.1.xml.out:53 +#: suauth.5.xml.out:36 useradd.8.xml.out:55 userdel.8.xml.out:42 +#: usermod.8.xml.out:43 vipw.8.xml.out:38 msgid "shadow-utils" msgstr "shadow-utils" -#: vipw.8.xml:67(refname) vipw.8.xml:81(command) -msgid "vigr" -msgstr "vigr" - -#: vipw.8.xml:68(refpurpose) -msgid "edit the password, group, shadow-password or shadow-group file" +#. (itstool) path: refmeta/refmiscinfo +#: chage.1.xml.out:38 chfn.1.xml.out:40 chgpasswd.8.xml.out:37 +#: chpasswd.8.xml.out:41 chsh.1.xml.out:40 expiry.1.xml.out:41 +#: faillog.5.xml.out:37 faillog.8.xml.out:37 gpasswd.1.xml.out:42 +#: groupadd.8.xml.out:40 groupdel.8.xml.out:38 groupmems.8.xml.out:41 +#: groupmod.8.xml.out:38 groups.1.xml.out:37 grpck.8.xml.out:37 +#: gshadow.5.xml.out:26 lastlog.8.xml.out:39 limits.5.xml.out:39 +#: login.1.xml.out:70 login.access.5.xml.out:38 login.defs.5.xml.out:106 +#: logoutd.8.xml.out:37 newgrp.1.xml.out:38 newusers.8.xml.out:53 +#: nologin.8.xml.out:26 passwd.1.xml.out:44 passwd.5.xml.out:37 +#: porttime.5.xml.out:37 pwck.8.xml.out:44 pwconv.8.xml.out:43 +#: shadow.3.xml.out:37 shadow.5.xml.out:37 sg.1.xml.out:38 su.1.xml.out:54 +#: suauth.5.xml.out:37 useradd.8.xml.out:56 userdel.8.xml.out:43 +#: usermod.8.xml.out:44 vipw.8.xml.out:39 +msgid "4.11.1" msgstr "" -"rediger adgangskoden, gruppe, shadow-adgangskode- eller shadow-gruppe-fil" -#: vipw.8.xml:77(replaceable) vipw.8.xml:83(replaceable) -#: usermod.8.xml:79(replaceable) userdel.8.xml:76(arg) -#: useradd.8.xml:90(replaceable) useradd.8.xml:102(replaceable) -#: su.1.xml:88(replaceable) pwconv.8.xml:81(replaceable) -#: pwconv.8.xml:87(replaceable) pwconv.8.xml:93(replaceable) -#: pwconv.8.xml:99(replaceable) pwck.8.xml:77(arg) passwd.1.xml:79(replaceable) -#: newusers.8.xml:88(replaceable) lastlog.8.xml:74(replaceable) -#: grpck.8.xml:72(arg) groupmod.8.xml:73(replaceable) -#: groupdel.8.xml:73(replaceable) groupadd.8.xml:75(replaceable) -#: faillog.8.xml:72(replaceable) chsh.1.xml:75(replaceable) -#: chpasswd.8.xml:76(replaceable) chgpasswd.8.xml:72(replaceable) -#: chfn.1.xml:75(replaceable) chage.1.xml:72(replaceable) +#. (itstool) path: refnamediv/refpurpose +#: chage.1.xml.out:42 +msgid "change user password expiry information" +msgstr "ændr udløbsinformation om brugeradgangskode" + +#. (itstool) path: arg/replaceable +#. (itstool) path: cmdsynopsis/arg +#: chage.1.xml.out:48 chfn.1.xml.out:51 chgpasswd.8.xml.out:48 +#: chpasswd.8.xml.out:52 chsh.1.xml.out:51 faillog.8.xml.out:48 +#: groupadd.8.xml.out:51 groupdel.8.xml.out:49 groupmod.8.xml.out:49 +#: grpck.8.xml.out:47 lastlog.8.xml.out:50 newusers.8.xml.out:64 +#: passwd.1.xml.out:55 pwck.8.xml.out:54 pwconv.8.xml.out:57 +#: pwconv.8.xml.out:63 pwconv.8.xml.out:69 pwconv.8.xml.out:75 su.1.xml.out:64 +#: useradd.8.xml.out:66 useradd.8.xml.out:78 userdel.8.xml.out:52 +#: usermod.8.xml.out:55 vipw.8.xml.out:53 vipw.8.xml.out:59 msgid "options" msgstr "tilvalg" -#: vipw.8.xml:89(title) usermod.8.xml:86(title) userdel.8.xml:84(title) -#: useradd.8.xml:108(title) suauth.5.xml:75(title) su.1.xml:103(title) -#: sg.1.xml:81(title) shadow.5.xml:69(title) shadow.3.xml:118(title) -#: shadow.3.xml:174(title) pwconv.8.xml:105(title) pwck.8.xml:92(title) -#: porttime.5.xml:69(title) passwd.5.xml:69(title) passwd.1.xml:88(title) -#: nologin.8.xml:64(title) newusers.8.xml:97(title) newgrp.1.xml:77(title) -#: logoutd.8.xml:75(title) login.defs.5.xml:136(title) -#: login.access.5.xml:70(title) login.1.xml:125(title) limits.5.xml:72(title) -#: lastlog.8.xml:80(title) gshadow.5.xml:58(title) grpck.8.xml:83(title) -#: groups.1.xml:78(title) groupmod.8.xml:80(title) groupmems.8.xml:85(title) -#: groupdel.8.xml:80(title) groupadd.8.xml:84(title) gpasswd.1.xml:94(title) -#: faillog.8.xml:78(title) faillog.5.xml:69(title) expiry.1.xml:82(title) -#: chsh.1.xml:84(title) chpasswd.8.xml:82(title) chgpasswd.8.xml:78(title) -#: chfn.1.xml:84(title) chage.1.xml:81(title) +#. (itstool) path: arg/replaceable +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#. (itstool) path: para/emphasis +#: chage.1.xml.out:51 chfn.1.xml.out:54 chsh.1.xml.out:54 faillog.8.xml.out:179 +#: lastlog.8.xml.out:138 passwd.1.xml.out:58 useradd.8.xml.out:68 +#: useradd.8.xml.out:158 userdel.8.xml.out:54 userdel.8.xml.out:64 +#: usermod.8.xml.out:57 usermod.8.xml.out:220 usermod.8.xml.out:498 +msgid "LOGIN" +msgstr "LOGIND" + +#. (itstool) path: refsect1/title +#: chage.1.xml.out:57 chfn.1.xml.out:60 chgpasswd.8.xml.out:54 +#: chpasswd.8.xml.out:58 chsh.1.xml.out:60 expiry.1.xml.out:58 +#: faillog.5.xml.out:45 faillog.8.xml.out:54 gpasswd.1.xml.out:70 +#: groupadd.8.xml.out:60 groupdel.8.xml.out:56 groupmems.8.xml.out:61 +#: groupmod.8.xml.out:56 groups.1.xml.out:54 grpck.8.xml.out:58 +#: gshadow.5.xml.out:34 lastlog.8.xml.out:56 limits.5.xml.out:48 +#: login.1.xml.out:101 login.access.5.xml.out:46 login.defs.5.xml.out:114 +#: logoutd.8.xml.out:51 newgrp.1.xml.out:53 newusers.8.xml.out:73 +#: nologin.8.xml.out:40 passwd.1.xml.out:64 passwd.5.xml.out:45 +#: porttime.5.xml.out:45 pwck.8.xml.out:69 pwconv.8.xml.out:81 +#: shadow.3.xml.out:94 shadow.3.xml.out:150 shadow.5.xml.out:45 sg.1.xml.out:57 +#: su.1.xml.out:79 suauth.5.xml.out:51 useradd.8.xml.out:84 +#: userdel.8.xml.out:60 usermod.8.xml.out:62 vipw.8.xml.out:65 msgid "DESCRIPTION" msgstr "BESKRIVELSE" -#: vipw.8.xml:90(para) +#. (itstool) path: refsect1/para +#: chage.1.xml.out:58 msgid "" -"The vipw and vigr commands edits the " -"files /etc/passwd and /etc/group, " -"respectively. With the flag, they will edit the shadow " -"versions of those files, /etc/shadow and /etc/" -"gshadow, respectively. The programs will set the appropriate " -"locks to prevent file corruption. When looking for an editor, the programs " -"will first try the environment variable $VISUAL, then the " -"environment variable $EDITOR, and finally the default editor, " -"vi1." +"The <_:command-1/> command changes the number of days between password " +"changes and the date of the last password change. This information is used " +"by the system to determine when a user must change their password." msgstr "" -"Kommandoerne vipw og vigr redigerer " -"filerne /etc/passwd og /etc/group, " -"respektivt. Med flaget vil de redigere versionerne for " -"Shadow for disse filer, /etc/shadow og /etc/" -"gshadow, respektivt. Programmerne vil sætte de passende låse for " -"at forhindre filødelæggelse. Når der kigges efter et redigerngsprogram, så " -"vil programmet øfrst forsøge med miljøvariablen $VISUAL, " -"derefter miljøvariablen $EDITOR, og endelig " -"standardredigeringsprogrammet, vi1." -#: vipw.8.xml:107(title) usermod.8.xml:94(title) userdel.8.xml:93(title) -#: useradd.8.xml:126(title) su.1.xml:144(title) pwconv.8.xml:187(title) -#: pwck.8.xml:176(title) passwd.1.xml:174(title) newusers.8.xml:266(title) -#: login.1.xml:210(title) lastlog.8.xml:92(title) grpck.8.xml:147(title) -#: groupmod.8.xml:89(title) groupmems.8.xml:100(title) groupdel.8.xml:88(title) -#: groupadd.8.xml:93(title) gpasswd.1.xml:134(title) faillog.8.xml:89(title) -#: expiry.1.xml:91(title) chsh.1.xml:95(title) chpasswd.8.xml:130(title) -#: chgpasswd.8.xml:105(title) chfn.1.xml:111(title) chage.1.xml:91(title) +#. (itstool) path: refsect1/title +#: chage.1.xml.out:67 chfn.1.xml.out:87 chgpasswd.8.xml.out:81 +#: chpasswd.8.xml.out:106 chsh.1.xml.out:71 expiry.1.xml.out:67 +#: faillog.8.xml.out:65 gpasswd.1.xml.out:110 groupadd.8.xml.out:69 +#: groupdel.8.xml.out:64 groupmems.8.xml.out:76 groupmod.8.xml.out:65 +#: grpck.8.xml.out:122 lastlog.8.xml.out:68 login.1.xml.out:186 +#: newusers.8.xml.out:250 passwd.1.xml.out:150 pwck.8.xml.out:153 +#: pwconv.8.xml.out:163 su.1.xml.out:120 useradd.8.xml.out:102 +#: userdel.8.xml.out:69 usermod.8.xml.out:70 vipw.8.xml.out:83 msgid "OPTIONS" msgstr "TILVALG" -#: vipw.8.xml:108(para) -msgid "" -"The options which apply to the vipw and vigr commands are:" +#. (itstool) path: refsect1/para +#: chage.1.xml.out:68 chfn.1.xml.out:88 chgpasswd.8.xml.out:82 +#: chpasswd.8.xml.out:107 chsh.1.xml.out:72 expiry.1.xml.out:68 +#: faillog.8.xml.out:66 gpasswd.1.xml.out:118 groupadd.8.xml.out:70 +#: groupdel.8.xml.out:65 groupmems.8.xml.out:77 groupmod.8.xml.out:66 +#: grpck.8.xml.out:127 lastlog.8.xml.out:69 newusers.8.xml.out:251 +#: passwd.1.xml.out:151 pwck.8.xml.out:158 su.1.xml.out:121 +#: useradd.8.xml.out:103 userdel.8.xml.out:70 usermod.8.xml.out:71 +#, fuzzy +#| msgid "The options which apply to the chfn command are:" +msgid "The options which apply to the <_:command-1/> command are:" +msgstr "Tilvalgende som gælder for kommandoen chfn er:" + +#. (itstool) path: term/option +#. (itstool) path: para/option +#: chage.1.xml.out:74 gpasswd.1.xml.out:137 groupmems.8.xml.out:94 +#: passwd.1.xml.out:168 useradd.8.xml.out:122 useradd.8.xml.out:151 +#: useradd.8.xml.out:556 usermod.8.xml.out:112 usermod.8.xml.out:258 +msgid "-d" msgstr "" -"Tilvalgene som gælder for kommandoerne vipw og " -"vigr er:" -#: vipw.8.xml:114(term) -msgid ", " -msgstr ", " +#. (itstool) path: term/option +#: chage.1.xml.out:74 +msgid "--lastday" +msgstr "" -#: vipw.8.xml:116(para) -msgid "Edit group database." -msgstr "Rediger gruppedatabase." +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:74 chage.1.xml.out:81 chage.1.xml.out:175 +msgid "LAST_DAY" +msgstr "" -#: vipw.8.xml:120(term) userdel.8.xml:123(term) useradd.8.xml:278(term) -#: pwconv.8.xml:195(term) pwck.8.xml:196(term) passwd.1.xml:214(term) -#: newusers.8.xml:296(term) lastlog.8.xml:119(term) grpck.8.xml:157(term) -#: groupmod.8.xml:129(term) groupmems.8.xml:142(term) groupdel.8.xml:95(term) -#: groupadd.8.xml:131(term) gpasswd.1.xml:173(term) faillog.8.xml:122(term) -#: expiry.1.xml:112(term) chsh.1.xml:101(term) chpasswd.8.xml:171(term) -#: chgpasswd.8.xml:131(term) chage.1.xml:129(term) -msgid ", " -msgstr ", " +#. (itstool) path: varlistentry/term +#: chage.1.xml.out:73 chage.1.xml.out:88 chage.1.xml.out:127 +#: chage.1.xml.out:156 chage.1.xml.out:168 chage.1.xml.out:189 +#: chage.1.xml.out:201 chfn.1.xml.out:93 chfn.1.xml.out:101 chfn.1.xml.out:109 +#: chfn.1.xml.out:121 chfn.1.xml.out:129 chfn.1.xml.out:149 +#: chgpasswd.8.xml.out:122 chpasswd.8.xml.out:113 chpasswd.8.xml.out:164 +#: chpasswd.8.xml.out:176 chsh.1.xml.out:83 chsh.1.xml.out:95 +#: faillog.8.xml.out:104 faillog.8.xml.out:119 faillog.8.xml.out:156 +#: faillog.8.xml.out:168 gpasswd.1.xml.out:123 gpasswd.1.xml.out:136 +#: gpasswd.1.xml.out:157 groupadd.8.xml.out:90 groupadd.8.xml.out:143 +#: groupadd.8.xml.out:180 groupadd.8.xml.out:192 groupdel.8.xml.out:88 +#: groupdel.8.xml.out:100 groupmems.8.xml.out:83 groupmems.8.xml.out:94 +#: groupmems.8.xml.out:110 groupmems.8.xml.out:141 groupmod.8.xml.out:72 +#: groupmod.8.xml.out:81 groupmod.8.xml.out:120 groupmod.8.xml.out:142 +#: groupmod.8.xml.out:163 groupmod.8.xml.out:175 grpck.8.xml.out:148 +#: lastlog.8.xml.out:74 lastlog.8.xml.out:103 lastlog.8.xml.out:126 +#: newusers.8.xml.out:305 passwd.1.xml.out:196 passwd.1.xml.out:245 +#: passwd.1.xml.out:267 passwd.1.xml.out:277 passwd.1.xml.out:320 +#: passwd.1.xml.out:333 pwck.8.xml.out:196 pwconv.8.xml.out:177 +#: su.1.xml.out:125 su.1.xml.out:162 useradd.8.xml.out:117 +#: useradd.8.xml.out:138 useradd.8.xml.out:150 useradd.8.xml.out:178 +#: useradd.8.xml.out:195 useradd.8.xml.out:214 useradd.8.xml.out:262 +#: useradd.8.xml.out:398 useradd.8.xml.out:446 useradd.8.xml.out:458 +#: useradd.8.xml.out:475 useradd.8.xml.out:489 useradd.8.xml.out:524 +#: useradd.8.xml.out:548 useradd.8.xml.out:566 useradd.8.xml.out:578 +#: useradd.8.xml.out:593 useradd.8.xml.out:613 userdel.8.xml.out:122 +#: userdel.8.xml.out:134 usermod.8.xml.out:98 usermod.8.xml.out:111 +#: usermod.8.xml.out:128 usermod.8.xml.out:148 usermod.8.xml.out:169 +#: usermod.8.xml.out:214 usermod.8.xml.out:279 usermod.8.xml.out:317 +#: usermod.8.xml.out:329 usermod.8.xml.out:346 usermod.8.xml.out:357 +#: usermod.8.xml.out:489 vipw.8.xml.out:114 +msgid "<_:option-1/>, <_:option-2/> <_:replaceable-3/>" +msgstr "" -#: vipw.8.xml:122(para) userdel.8.xml:125(para) useradd.8.xml:280(para) -#: pwconv.8.xml:197(para) pwck.8.xml:198(para) passwd.1.xml:216(para) -#: newusers.8.xml:298(para) lastlog.8.xml:123(para) grpck.8.xml:159(para) -#: groupmod.8.xml:131(para) groupmems.8.xml:144(para) groupdel.8.xml:97(para) -#: groupadd.8.xml:133(para) gpasswd.1.xml:175(para) faillog.8.xml:124(para) -#: expiry.1.xml:114(para) chsh.1.xml:103(para) chpasswd.8.xml:173(para) -#: chgpasswd.8.xml:133(para) chfn.1.xml:169(para) chage.1.xml:131(para) +#. (itstool) path: para/emphasis +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:82 chage.1.xml.out:287 groupadd.8.xml.out:293 +#: groupdel.8.xml.out:167 groupmod.8.xml.out:258 grpck.8.xml.out:236 +#: login.defs.5.xml.out:138 passwd.1.xml.out:424 pwck.8.xml.out:286 +#: su.1.xml.out:385 useradd.8.xml.out:766 userdel.8.xml.out:234 +msgid "0" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:77 +msgid "" +"Set the number of days since January 1st, 1970 when the password was last " +"changed. The date may also be expressed in the format YYYY-MM-DD (or the " +"format more commonly used in your area). If the <_:replaceable-1/> is set to " +"<_:emphasis-2/> the user is forced to change his password on the next log on." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:89 +msgid "-E" +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:89 useradd.8.xml.out:179 useradd.8.xml.out:567 +#: usermod.8.xml.out:129 +msgid "--expiredate" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:89 chage.1.xml.out:109 useradd.8.xml.out:179 +#: useradd.8.xml.out:567 usermod.8.xml.out:129 usermod.8.xml.out:137 +#: usermod.8.xml.out:241 usermod.8.xml.out:405 +msgid "EXPIRE_DATE" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:92 +msgid "" +"Set the date or number of days since January 1, 1970 on which the user's " +"account will no longer be accessible. The date may also be expressed in the " +"format YYYY-MM-DD (or the format more commonly used in your area). A user " +"whose account is locked must contact the system administrator before being " +"able to use the system again." +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:100 +msgid "" +"For example the following can be used to set an account to expire in 180 " +"days:" +msgstr "" + +#. (itstool) path: listitem/programlisting +#: chage.1.xml.out:104 +msgid "chage -E $(date -d +180days +%Y-%m-%d)" +msgstr "" + +#. (itstool) path: para/emphasis +#. (itstool) path: para/replaceable +#: chage.1.xml.out:108 chage.1.xml.out:139 chage.1.xml.out:182 +#: passwd.1.xml.out:343 useradd.8.xml.out:298 +msgid "-1" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:107 +msgid "" +"Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an " +"account expiration date." +msgstr "" + +#. (itstool) path: term/option +#. (itstool) path: para/option +#: chage.1.xml.out:115 chfn.1.xml.out:102 chgpasswd.8.xml.out:107 +#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:107 +#: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 login.1.xml.out:204 +#: login.1.xml.out:229 newusers.8.xml.out:280 passwd.1.xml.out:190 +#: pwck.8.xml.out:173 pwconv.8.xml.out:171 useradd.8.xml.out:256 +#: userdel.8.xml.out:99 vipw.8.xml.out:96 +msgid "-h" +msgstr "" + +#. (itstool) path: term/option +#. (itstool) path: para/option +#: chage.1.xml.out:115 chfn.1.xml.out:142 chgpasswd.8.xml.out:107 +#: chpasswd.8.xml.out:147 chsh.1.xml.out:77 expiry.1.xml.out:88 +#: faillog.8.xml.out:98 gpasswd.1.xml.out:149 groupadd.8.xml.out:107 +#: groupdel.8.xml.out:82 groupmems.8.xml.out:118 groupmod.8.xml.out:114 +#: grpck.8.xml.out:132 lastlog.8.xml.out:96 newusers.8.xml.out:280 +#: passwd.1.xml.out:190 pwck.8.xml.out:173 pwconv.8.xml.out:171 +#: su.1.xml.out:387 useradd.8.xml.out:256 userdel.8.xml.out:99 +#: vipw.8.xml.out:96 +msgid "--help" +msgstr "" + +#. (itstool) path: varlistentry/term +#: chage.1.xml.out:115 chage.1.xml.out:121 chage.1.xml.out:146 +#: chfn.1.xml.out:141 chgpasswd.8.xml.out:88 chgpasswd.8.xml.out:101 +#: chgpasswd.8.xml.out:107 chgpasswd.8.xml.out:113 chgpasswd.8.xml.out:134 +#: chpasswd.8.xml.out:139 chpasswd.8.xml.out:147 chpasswd.8.xml.out:155 +#: chsh.1.xml.out:77 expiry.1.xml.out:73 expiry.1.xml.out:79 +#: expiry.1.xml.out:88 faillog.8.xml.out:72 faillog.8.xml.out:98 +#: faillog.8.xml.out:144 gpasswd.1.xml.out:149 gpasswd.1.xml.out:171 +#: gpasswd.1.xml.out:187 groupadd.8.xml.out:76 groupadd.8.xml.out:107 +#: groupadd.8.xml.out:133 groupadd.8.xml.out:164 groupadd.8.xml.out:209 +#: groupdel.8.xml.out:71 groupdel.8.xml.out:82 groupmems.8.xml.out:118 +#: groupmems.8.xml.out:124 groupmems.8.xml.out:130 groupmod.8.xml.out:114 +#: groupmod.8.xml.out:131 groupmod.8.xml.out:192 grpck.8.xml.out:132 +#: grpck.8.xml.out:138 grpck.8.xml.out:160 grpck.8.xml.out:171 +#: lastlog.8.xml.out:84 lastlog.8.xml.out:95 lastlog.8.xml.out:115 +#: newusers.8.xml.out:268 newusers.8.xml.out:280 newusers.8.xml.out:286 +#: newusers.8.xml.out:319 passwd.1.xml.out:156 passwd.1.xml.out:167 +#: passwd.1.xml.out:179 passwd.1.xml.out:190 passwd.1.xml.out:209 +#: passwd.1.xml.out:221 passwd.1.xml.out:257 passwd.1.xml.out:289 +#: passwd.1.xml.out:307 pwck.8.xml.out:173 pwck.8.xml.out:179 +#: pwck.8.xml.out:188 pwck.8.xml.out:208 pwconv.8.xml.out:171 +#: useradd.8.xml.out:168 useradd.8.xml.out:256 useradd.8.xml.out:312 +#: useradd.8.xml.out:331 useradd.8.xml.out:354 useradd.8.xml.out:367 +#: useradd.8.xml.out:386 useradd.8.xml.out:419 useradd.8.xml.out:507 +#: userdel.8.xml.out:75 userdel.8.xml.out:99 userdel.8.xml.out:105 +#: userdel.8.xml.out:151 usermod.8.xml.out:77 usermod.8.xml.out:88 +#: usermod.8.xml.out:228 usermod.8.xml.out:247 usermod.8.xml.out:268 +#: usermod.8.xml.out:306 usermod.8.xml.out:393 vipw.8.xml.out:90 +#: vipw.8.xml.out:96 vipw.8.xml.out:102 vipw.8.xml.out:108 vipw.8.xml.out:126 +#: vipw.8.xml.out:132 +#, fuzzy +#| msgid ", " +msgid "<_:option-1/>, <_:option-2/>" +msgstr ", " + +#. (itstool) path: listitem/para +#: chage.1.xml.out:117 chfn.1.xml.out:145 chgpasswd.8.xml.out:109 +#: chpasswd.8.xml.out:149 chsh.1.xml.out:79 expiry.1.xml.out:90 +#: faillog.8.xml.out:100 gpasswd.1.xml.out:151 groupadd.8.xml.out:109 +#: groupdel.8.xml.out:84 groupmems.8.xml.out:120 groupmod.8.xml.out:116 +#: grpck.8.xml.out:134 lastlog.8.xml.out:99 newusers.8.xml.out:282 +#: passwd.1.xml.out:192 pwck.8.xml.out:175 pwconv.8.xml.out:173 +#: useradd.8.xml.out:258 userdel.8.xml.out:101 vipw.8.xml.out:98 msgid "Display help message and exit." msgstr "Vis hjælpeteksten og afslut." -#: vipw.8.xml:126(term) -msgid ", " -msgstr ", " - -#: vipw.8.xml:128(para) -msgid "Edit passwd database." -msgstr "Rediger passwd-database." - -#: vipw.8.xml:132(term) pwck.8.xml:202(term) passwd.1.xml:281(term) -msgid ", " -msgstr ", " - -#: vipw.8.xml:134(para) passwd.1.xml:285(para) -msgid "Quiet mode." -msgstr "Stille tilstand." - -#: vipw.8.xml:138(term) usermod.8.xml:322(term) userdel.8.xml:146(term) -#: useradd.8.xml:457(term) pwconv.8.xml:201(term) pwck.8.xml:219(term) -#: passwd.1.xml:301(term) newusers.8.xml:321(term) lastlog.8.xml:127(term) -#: grpck.8.xml:173(term) groupmod.8.xml:178(term) groupmems.8.xml:165(term) -#: groupdel.8.xml:101(term) groupadd.8.xml:204(term) faillog.8.xml:180(term) -#: chsh.1.xml:107(term) chpasswd.8.xml:188(term) chgpasswd.8.xml:146(term) -#: chfn.1.xml:153(term) chage.1.xml:203(term) -msgid "" -",  CHROOT_DIR" +#. (itstool) path: term/option +#: chage.1.xml.out:121 passwd.1.xml.out:197 +msgid "-i" msgstr "" -",  CHROOT_DIR" -#: vipw.8.xml:142(para) usermod.8.xml:326(para) userdel.8.xml:150(para) -#: useradd.8.xml:461(para) pwconv.8.xml:205(para) pwck.8.xml:223(para) -#: passwd.1.xml:305(para) newusers.8.xml:325(para) lastlog.8.xml:131(para) -#: grpck.8.xml:177(para) groupmod.8.xml:182(para) groupmems.8.xml:169(para) -#: groupdel.8.xml:105(para) groupadd.8.xml:208(para) gpasswd.1.xml:185(para) -#: faillog.8.xml:184(para) chsh.1.xml:111(para) chpasswd.8.xml:192(para) -#: chgpasswd.8.xml:150(para) chfn.1.xml:157(para) chage.1.xml:207(para) +#. (itstool) path: term/option +#: chage.1.xml.out:121 +msgid "--iso8601" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:123 +msgid "When printing dates, use YYYY-MM-DD format." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:128 +msgid "-I" +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:128 passwd.1.xml.out:197 useradd.8.xml.out:196 +#: useradd.8.xml.out:579 usermod.8.xml.out:149 +msgid "--inactive" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#. (itstool) path: para/option +#: chage.1.xml.out:128 chage.1.xml.out:134 chage.1.xml.out:140 +#: passwd.1.xml.out:197 passwd.1.xml.out:203 useradd.8.xml.out:196 +#: useradd.8.xml.out:208 useradd.8.xml.out:579 useradd.8.xml.out:587 +#: usermod.8.xml.out:149 +msgid "INACTIVE" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:131 msgid "" -"Apply changes in the CHROOT_DIR directory and use " -"the configuration files from the CHROOT_DIR " -"directory." +"Set the number of days of inactivity after a password has expired before the " +"account is locked. The <_:replaceable-1/> option is the number of days of " +"inactivity. A user whose account is locked must contact the system " +"administrator before being able to use the system again." +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:138 +msgid "" +"Passing the number <_:emphasis-1/> as the <_:replaceable-2/> will remove an " +"account's inactivity." +msgstr "" + +#. (itstool) path: term/option +#. (itstool) path: para/option +#. (itstool) path: group/arg +#: chage.1.xml.out:147 chage.1.xml.out:241 faillog.8.xml.out:88 +#: faillog.8.xml.out:105 faillog.8.xml.out:184 faillog.8.xml.out:201 +#: groupmems.8.xml.out:55 groupmems.8.xml.out:124 passwd.1.xml.out:222 +#: passwd.1.xml.out:315 su.1.xml.out:144 su.1.xml.out:156 useradd.8.xml.out:312 +#: usermod.8.xml.out:215 +msgid "-l" +msgstr "-l" + +#. (itstool) path: term/option +#: chage.1.xml.out:147 groupmems.8.xml.out:124 +msgid "--list" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:150 +msgid "Show account aging information." +msgstr "" + +#. (itstool) path: term/option +#. (itstool) path: para/option +#: chage.1.xml.out:157 chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:113 +#: chpasswd.8.xml.out:78 chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 +#: chpasswd.8.xml.out:155 faillog.8.xml.out:88 faillog.8.xml.out:120 +#: faillog.8.xml.out:184 faillog.8.xml.out:201 su.1.xml.out:207 +#: useradd.8.xml.out:125 useradd.8.xml.out:272 useradd.8.xml.out:332 +#: useradd.8.xml.out:440 usermod.8.xml.out:119 usermod.8.xml.out:248 +msgid "-m" +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:157 passwd.1.xml.out:246 +msgid "--mindays" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:157 chage.1.xml.out:162 passwd.1.xml.out:246 +#: passwd.1.xml.out:251 +msgid "MIN_DAYS" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:160 passwd.1.xml.out:249 +msgid "" +"Set the minimum number of days between password changes to <_:replaceable-1/" +">. A value of zero for this field indicates that the user may change their " +"password at any time." +msgstr "" + +#. (itstool) path: term/option +#. (itstool) path: para/option +#: chage.1.xml.out:169 gpasswd.1.xml.out:81 gpasswd.1.xml.out:112 +#: gpasswd.1.xml.out:216 useradd.8.xml.out:162 useradd.8.xml.out:355 +msgid "-M" +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:169 passwd.1.xml.out:334 +msgid "--maxdays" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:169 chage.1.xml.out:174 chage.1.xml.out:183 +#: passwd.1.xml.out:334 passwd.1.xml.out:339 passwd.1.xml.out:344 +msgid "MAX_DAYS" +msgstr "" + +#. (itstool) path: para/option +#. (itstool) path: term/option +#: chage.1.xml.out:178 chage.1.xml.out:202 usermod.8.xml.out:470 +msgid "-W" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:172 +msgid "" +"Set the maximum number of days during which a password is valid. When <_:" +"replaceable-1/> plus <_:replaceable-2/> is less than the current day, the " +"user will be required to change their password before being able to use " +"their account. This occurrence can be planned for in advance by use of the " +"<_:option-3/> option, which provides the user with advance warning." +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:181 passwd.1.xml.out:342 +msgid "" +"Passing the number <_:emphasis-1/> as <_:replaceable-2/> will remove " +"checking a password's validity." +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 +#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:188 groupadd.8.xml.out:181 groupdel.8.xml.out:89 +#: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 +#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:447 +#: userdel.8.xml.out:123 usermod.8.xml.out:318 vipw.8.xml.out:115 +msgid "-R" +msgstr "" + +#. (itstool) path: term/option +#: chage.1.xml.out:190 chfn.1.xml.out:130 chgpasswd.8.xml.out:123 +#: chpasswd.8.xml.out:165 chsh.1.xml.out:84 faillog.8.xml.out:157 +#: gpasswd.1.xml.out:158 groupadd.8.xml.out:181 groupdel.8.xml.out:89 +#: groupmems.8.xml.out:142 groupmod.8.xml.out:164 grpck.8.xml.out:149 +#: lastlog.8.xml.out:104 newusers.8.xml.out:306 passwd.1.xml.out:278 +#: pwck.8.xml.out:197 pwconv.8.xml.out:178 useradd.8.xml.out:447 +#: userdel.8.xml.out:123 usermod.8.xml.out:318 vipw.8.xml.out:115 +msgid "--root" +msgstr "" + +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:190 chage.1.xml.out:194 chage.1.xml.out:196 +#: chfn.1.xml.out:130 chfn.1.xml.out:134 chfn.1.xml.out:136 +#: chgpasswd.8.xml.out:123 chgpasswd.8.xml.out:127 chgpasswd.8.xml.out:129 +#: chpasswd.8.xml.out:165 chpasswd.8.xml.out:169 chpasswd.8.xml.out:171 +#: chsh.1.xml.out:84 chsh.1.xml.out:88 chsh.1.xml.out:90 faillog.8.xml.out:157 +#: faillog.8.xml.out:161 faillog.8.xml.out:163 gpasswd.1.xml.out:158 +#: gpasswd.1.xml.out:162 gpasswd.1.xml.out:164 groupadd.8.xml.out:181 +#: groupadd.8.xml.out:185 groupadd.8.xml.out:187 groupdel.8.xml.out:89 +#: groupdel.8.xml.out:93 groupdel.8.xml.out:95 groupmems.8.xml.out:142 +#: groupmems.8.xml.out:146 groupmems.8.xml.out:148 groupmod.8.xml.out:164 +#: groupmod.8.xml.out:168 groupmod.8.xml.out:170 grpck.8.xml.out:149 +#: grpck.8.xml.out:153 grpck.8.xml.out:155 lastlog.8.xml.out:104 +#: lastlog.8.xml.out:108 lastlog.8.xml.out:110 newusers.8.xml.out:306 +#: newusers.8.xml.out:310 newusers.8.xml.out:312 passwd.1.xml.out:278 +#: passwd.1.xml.out:282 passwd.1.xml.out:284 pwck.8.xml.out:197 +#: pwck.8.xml.out:201 pwck.8.xml.out:203 pwconv.8.xml.out:178 +#: pwconv.8.xml.out:182 pwconv.8.xml.out:184 useradd.8.xml.out:447 +#: useradd.8.xml.out:451 useradd.8.xml.out:453 userdel.8.xml.out:123 +#: userdel.8.xml.out:127 userdel.8.xml.out:129 usermod.8.xml.out:318 +#: usermod.8.xml.out:322 usermod.8.xml.out:324 vipw.8.xml.out:115 +#: vipw.8.xml.out:119 vipw.8.xml.out:121 +msgid "CHROOT_DIR" +msgstr "" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:193 chfn.1.xml.out:133 chgpasswd.8.xml.out:126 +#: chpasswd.8.xml.out:168 chsh.1.xml.out:87 faillog.8.xml.out:160 +#: gpasswd.1.xml.out:161 groupadd.8.xml.out:184 groupdel.8.xml.out:92 +#: groupmems.8.xml.out:145 groupmod.8.xml.out:167 grpck.8.xml.out:152 +#: lastlog.8.xml.out:107 newusers.8.xml.out:309 passwd.1.xml.out:281 +#: pwck.8.xml.out:200 pwconv.8.xml.out:181 useradd.8.xml.out:450 +#: userdel.8.xml.out:126 usermod.8.xml.out:321 vipw.8.xml.out:118 +#, fuzzy +#| msgid "" +#| "Apply changes in the CHROOT_DIR directory and " +#| "use the configuration files from the CHROOT_DIR directory." +msgid "" +"Apply changes in the <_:replaceable-1/> directory and use the configuration " +"files from the <_:replaceable-2/> directory." msgstr "" "Brug ændringer i mappen CHROOT_DIR og brug " "konfigurationsfilerne fra mappen CHROOT_DIR." -#: vipw.8.xml:150(term) -msgid ", " -msgstr ", " +#. (itstool) path: term/option +#: chage.1.xml.out:202 passwd.1.xml.out:321 +msgid "--warndays" +msgstr "" -#: vipw.8.xml:152(para) -msgid "Edit shadow or gshadow database." -msgstr "Rediger shadow- eller gshadow-database." +#. (itstool) path: term/replaceable +#. (itstool) path: para/replaceable +#: chage.1.xml.out:202 chage.1.xml.out:207 passwd.1.xml.out:321 +#: passwd.1.xml.out:326 +msgid "WARN_DAYS" +msgstr "" -#: vipw.8.xml:156(term) -msgid ", " -msgstr ", " +#. (itstool) path: listitem/para +#: chage.1.xml.out:205 +msgid "" +"Set the number of days of warning before a password change is required. The " +"<_:replaceable-1/> option is the number of days prior to the password " +"expiring that a user will be warned their password is about to expire." +msgstr "" -#: vipw.8.xml:158(para) -msgid "Indicates which user's tcb shadow file to edit." -msgstr "Indikerer hvilken brugers tcb-shadowfil at redigere." +#. (itstool) path: para/emphasis +#: chage.1.xml.out:219 chfn.1.xml.out:162 chsh.1.xml.out:111 +msgid "[ ]" +msgstr "" -#: vipw.8.xml:165(title) usermod.8.xml:524(title) userdel.8.xml:188(title) -#: useradd.8.xml:676(title) su.1.xml:338(title) sg.1.xml:98(title) -#: pwconv.8.xml:227(title) pwck.8.xml:262(title) passwd.1.xml:395(title) -#: newusers.8.xml:375(title) newgrp.1.xml:109(title) login.1.xml:294(title) -#: lastlog.8.xml:205(title) grpck.8.xml:209(title) groupmod.8.xml:210(title) -#: groupmems.8.xml:199(title) groupdel.8.xml:145(title) -#: groupadd.8.xml:236(title) gpasswd.1.xml:264(title) chsh.1.xml:154(title) -#: chpasswd.8.xml:239(title) chgpasswd.8.xml:198(title) chfn.1.xml:193(title) -#: chage.1.xml:250(title) +#. (itstool) path: refsect1/para +#: chage.1.xml.out:214 +msgid "" +"If none of the options are selected, <_:command-1/> operates in an " +"interactive fashion, prompting the user with the current values for all of " +"the fields. Enter the new value to change the field, or leave the line blank " +"to use the current value. The current value is displayed between a pair of " +"<_:emphasis-2/> marks." +msgstr "" + +#. (itstool) path: refsect1/title +#: chage.1.xml.out:223 chsh.1.xml.out:116 groups.1.xml.out:66 +#: lastlog.8.xml.out:169 +msgid "NOTE" +msgstr "" + +#. (itstool) path: refsect1/para +#: chage.1.xml.out:224 +#, fuzzy +#| msgid "" +#| "The chage program requires a shadow password file to " +#| "be available." +msgid "" +"The <_:command-1/> program requires a shadow password file to be available." +msgstr "" +"Programmet chage kræver at en adgangskodefil for shadow " +"er tilgængelig." + +#. (itstool) path: refsect1/para +#: chage.1.xml.out:228 +msgid "" +"The chage program will report only the information from the shadow password " +"file. This implies that configuration from other sources (e.g. LDAP or empty " +"password hash field from the passwd file) that affect the user's login will " +"not be shown in the chage output." +msgstr "" + +#. (itstool) path: para/command +#. (itstool) path: citerefentry/refentrytitle +#. (itstool) path: varlistentry/term +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#. (itstool) path: cmdsynopsis/command +#: chage.1.xml.out:237 grpck.8.xml.out:293 login.defs.5.xml.out:410 +#: passwd.5.xml.out:185 pwck.8.xml.out:40 pwck.8.xml.out:47 pwck.8.xml.out:53 +#: pwck.8.xml.out:71 pwck.8.xml.out:147 pwck.8.xml.out:159 pwck.8.xml.out:191 +#: pwck.8.xml.out:222 pwck.8.xml.out:283 pwconv.8.xml.out:196 +#: pwconv.8.xml.out:247 shadow.5.xml.out:274 +msgid "pwck" +msgstr "" + +#. (itstool) path: refsect1/para +#: chage.1.xml.out:234 +msgid "" +"The <_:command-1/> program will also not report any inconsistency between " +"the shadow and passwd files (e.g. missing x in the passwd file). The <_:" +"command-2/> can be used to check for this kind of inconsistencies." +msgstr "" + +#. (itstool) path: refsect1/para +#: chage.1.xml.out:240 +#, fuzzy +#| msgid "" +#| "The chage command is restricted to the root user, " +#| "except for the option, which may be used by an " +#| "unprivileged user to determine when their password or account is due to " +#| "expire." +msgid "" +"The <_:command-1/> command is restricted to the root user, except for the <_:" +"option-2/> option, which may be used by an unprivileged user to determine " +"when their password or account is due to expire." +msgstr "" +"Kommandoen chage er begrænset til administratorbrugeren " +"(root), undtaget for tilvalget , som kan bruges af en " +"upriviligeret bruger til at bestemme hvornår denne brugers adgangskode eller " +"konto står til at udløbe." + +#. (itstool) path: refsect1/title +#: chage.1.xml.out:248 chfn.1.xml.out:169 chgpasswd.8.xml.out:174 +#: chpasswd.8.xml.out:215 chsh.1.xml.out:130 gpasswd.1.xml.out:240 +#: groupadd.8.xml.out:228 groupdel.8.xml.out:132 groupmems.8.xml.out:175 +#: groupmod.8.xml.out:211 grpck.8.xml.out:195 lastlog.8.xml.out:181 +#: login.1.xml.out:270 newgrp.1.xml.out:85 newusers.8.xml.out:359 +#: passwd.1.xml.out:371 pwck.8.xml.out:239 pwconv.8.xml.out:203 sg.1.xml.out:74 +#: su.1.xml.out:314 useradd.8.xml.out:665 userdel.8.xml.out:164 +#: usermod.8.xml.out:525 vipw.8.xml.out:141 msgid "CONFIGURATION" msgstr "KONFIGURATION" -#: vipw.8.xml:166(para) usermod.8.xml:525(para) userdel.8.xml:189(para) -#: useradd.8.xml:677(para) su.1.xml:339(para) sg.1.xml:99(para) -#: pwck.8.xml:263(para) passwd.1.xml:396(para) newusers.8.xml:376(para) -#: newgrp.1.xml:110(para) login.1.xml:295(para) lastlog.8.xml:206(para) -#: grpck.8.xml:210(para) groupmod.8.xml:211(para) groupmems.8.xml:200(para) -#: groupdel.8.xml:146(para) groupadd.8.xml:237(para) gpasswd.1.xml:265(para) -#: chsh.1.xml:155(para) chpasswd.8.xml:240(para) chgpasswd.8.xml:199(para) -#: chfn.1.xml:194(para) chage.1.xml:251(para) +#. (itstool) path: para/filename +#. (itstool) path: term/filename +#: chage.1.xml.out:251 chfn.1.xml.out:68 chfn.1.xml.out:172 chfn.1.xml.out:186 +#: chgpasswd.8.xml.out:70 chgpasswd.8.xml.out:154 chgpasswd.8.xml.out:177 +#: chgpasswd.8.xml.out:204 chpasswd.8.xml.out:77 chpasswd.8.xml.out:134 +#: chpasswd.8.xml.out:199 chpasswd.8.xml.out:218 chpasswd.8.xml.out:246 +#: chsh.1.xml.out:133 chsh.1.xml.out:158 gpasswd.1.xml.out:243 +#: groupadd.8.xml.out:118 groupadd.8.xml.out:220 groupadd.8.xml.out:231 +#: groupadd.8.xml.out:257 groupdel.8.xml.out:135 groupmems.8.xml.out:178 +#: groupmod.8.xml.out:109 groupmod.8.xml.out:203 groupmod.8.xml.out:214 +#: groupmod.8.xml.out:238 grpck.8.xml.out:198 lastlog.8.xml.out:184 +#: login.1.xml.out:273 login.1.xml.out:365 login.access.5.xml.out:100 +#: login.defs.5.xml.out:116 login.defs.5.xml.out:515 newgrp.1.xml.out:88 +#: newusers.8.xml.out:339 newusers.8.xml.out:362 newusers.8.xml.out:422 +#: passwd.1.xml.out:374 passwd.1.xml.out:404 pwck.8.xml.out:242 +#: pwconv.8.xml.out:148 pwconv.8.xml.out:206 pwconv.8.xml.out:214 +#: pwconv.8.xml.out:229 sg.1.xml.out:77 su.1.xml.out:109 su.1.xml.out:219 +#: su.1.xml.out:277 su.1.xml.out:317 su.1.xml.out:357 useradd.8.xml.out:226 +#: useradd.8.xml.out:292 useradd.8.xml.out:360 useradd.8.xml.out:381 +#: useradd.8.xml.out:431 useradd.8.xml.out:438 useradd.8.xml.out:519 +#: useradd.8.xml.out:602 useradd.8.xml.out:668 useradd.8.xml.out:752 +#: userdel.8.xml.out:87 userdel.8.xml.out:167 userdel.8.xml.out:190 +#: userdel.8.xml.out:296 usermod.8.xml.out:388 usermod.8.xml.out:528 +#: usermod.8.xml.out:558 vipw.8.xml.out:144 +msgid "/etc/login.defs" +msgstr "" + +#. (itstool) path: refsect1/para +#: chage.1.xml.out:249 chfn.1.xml.out:170 chgpasswd.8.xml.out:175 +#: chpasswd.8.xml.out:216 chsh.1.xml.out:131 gpasswd.1.xml.out:241 +#: groupadd.8.xml.out:229 groupdel.8.xml.out:133 groupmems.8.xml.out:176 +#: groupmod.8.xml.out:212 grpck.8.xml.out:196 lastlog.8.xml.out:182 +#: login.1.xml.out:271 newgrp.1.xml.out:86 newusers.8.xml.out:360 +#: passwd.1.xml.out:372 pwck.8.xml.out:240 sg.1.xml.out:75 su.1.xml.out:315 +#: useradd.8.xml.out:666 userdel.8.xml.out:165 usermod.8.xml.out:526 +#: vipw.8.xml.out:142 +#, fuzzy +#| msgid "" +#| "The following configuration variables in /etc/login.defs change the behavior of this tool:" msgid "" -"The following configuration variables in /etc/login.defs change the behavior of this tool:" +"The following configuration variables in <_:filename-1/> change the behavior " +"of this tool:" msgstr "" "De følgende konfigurationsvariabler i /etc/login.defs " "ændrer opførelsen for dette værktøj:" -#: vipw.8.xml:30(term) usermod.8.xml:30(term) userdel.8.xml:30(term) -#: useradd.8.xml:30(term) pwconv.8.xml:30(term) pwck.8.xml:30(term) -#: login.defs.5.xml:30(term) chage.1.xml:30(term) -msgid " (boolean)" +#. (itstool) path: term/option +#. (itstool) path: listitem/para +#. (itstool) path: para/phrase +#. (itstool) path: phrase/option +#. (itstool) path: para/option +#: chage.1.xml.out:6 login.defs.5.xml.out:6 login.defs.5.xml.out:235 +#: login.defs.5.xml.out:423 login.defs.5.xml.out:431 login.defs.5.xml.out:503 +#: pwck.8.xml.out:75 pwck.8.xml.out:215 pwck.8.xml.out:231 pwck.8.xml.out:6 +#: pwconv.8.xml.out:89 pwconv.8.xml.out:91 pwconv.8.xml.out:94 +#: pwconv.8.xml.out:105 pwconv.8.xml.out:107 pwconv.8.xml.out:6 +#: useradd.8.xml.out:6 userdel.8.xml.out:6 usermod.8.xml.out:6 vipw.8.xml.out:6 +msgid "USE_TCB" +msgstr "" + +#. (itstool) path: varlistentry/term +#: chage.1.xml.out:6 chfn.1.xml.out:8 chgpasswd.8.xml.out:8 +#: chpasswd.8.xml.out:8 chsh.1.xml.out:8 gpasswd.1.xml.out:8 login.1.xml.out:8 +#: login.defs.5.xml.out:8 login.defs.5.xml.out:6 login.defs.5.xml.out:9 +#: newgrp.1.xml.out:8 newusers.8.xml.out:8 passwd.1.xml.out:8 pwck.8.xml.out:6 +#: pwconv.8.xml.out:6 sg.1.xml.out:8 su.1.xml.out:8 su.1.xml.out:9 +#: useradd.8.xml.out:6 useradd.8.xml.out:8 userdel.8.xml.out:6 +#: userdel.8.xml.out:8 usermod.8.xml.out:6 vipw.8.xml.out:6 +#, fuzzy +#| msgid " (boolean)" +msgid "<_:option-1/> (boolean)" msgstr " (boolesk)" -#: vipw.8.xml:32(para) usermod.8.xml:32(para) userdel.8.xml:32(para) -#: useradd.8.xml:32(para) pwconv.8.xml:32(para) pwck.8.xml:32(para) -#: login.defs.5.xml:32(para) chage.1.xml:32(para) +#. (itstool) path: para/replaceable +#. (itstool) path: para/emphasis +#: chage.1.xml.out:9 chfn.1.xml.out:11 chfn.1.xml.out:19 chgpasswd.8.xml.out:12 +#: chpasswd.8.xml.out:12 chsh.1.xml.out:11 gpasswd.1.xml.out:12 +#: login.1.xml.out:15 login.1.xml.out:36 login.1.xml.out:16 +#: login.defs.5.xml.out:133 login.defs.5.xml.out:11 login.defs.5.xml.out:19 +#: login.defs.5.xml.out:15 login.defs.5.xml.out:36 login.defs.5.xml.out:12 +#: login.defs.5.xml.out:16 login.defs.5.xml.out:9 newusers.8.xml.out:12 +#: passwd.1.xml.out:12 passwd.1.xml.out:16 pwck.8.xml.out:9 pwconv.8.xml.out:9 +#: su.1.xml.out:15 su.1.xml.out:36 su.1.xml.out:12 su.1.xml.out:16 +#: useradd.8.xml.out:227 useradd.8.xml.out:362 useradd.8.xml.out:36 +#: useradd.8.xml.out:9 useradd.8.xml.out:16 userdel.8.xml.out:87 +#: userdel.8.xml.out:36 userdel.8.xml.out:9 userdel.8.xml.out:16 +#: userdel.8.xml.out:296 usermod.8.xml.out:36 usermod.8.xml.out:9 +#: vipw.8.xml.out:9 +msgid "yes" +msgstr "" + +#. (itstool) path: citerefentry/refentrytitle +#: chage.1.xml.out:10 login.defs.5.xml.out:10 pwck.8.xml.out:10 +#: pwconv.8.xml.out:10 useradd.8.xml.out:10 userdel.8.xml.out:10 +#: usermod.8.xml.out:10 vipw.8.xml.out:10 vipw.8.xml.out:219 +msgid "tcb" +msgstr "" + +#. (itstool) path: citerefentry/manvolnum +#. (itstool) path: para/manvolnum +#. (itstool) path: refmeta/manvolnum +#. (itstool) path: term/replaceable +#: chage.1.xml.out:10 chage.1.xml.out:318 chage.1.xml.out:321 +#: chfn.1.xml.out:207 chfn.1.xml.out:210 chgpasswd.8.xml.out:19 +#: chgpasswd.8.xml.out:222 chpasswd.8.xml.out:19 chpasswd.8.xml.out:271 +#: chsh.1.xml.out:173 chsh.1.xml.out:176 expiry.1.xml.out:118 +#: expiry.1.xml.out:121 faillog.5.xml.out:34 faillog.8.xml.out:237 +#: gpasswd.1.xml.out:19 gpasswd.1.xml.out:291 gpasswd.1.xml.out:294 +#: groupadd.8.xml.out:353 groupmod.8.xml.out:343 grpck.8.xml.out:266 +#: grpck.8.xml.out:279 grpck.8.xml.out:286 grpck.8.xml.out:290 +#: grpck.8.xml.out:296 gshadow.5.xml.out:23 gshadow.5.xml.out:153 +#: gshadow.5.xml.out:156 limits.5.xml.out:36 login.1.xml.out:25 +#: login.1.xml.out:389 login.1.xml.out:392 login.1.xml.out:395 +#: login.1.xml.out:398 login.access.5.xml.out:35 login.defs.5.xml.out:103 +#: login.defs.5.xml.out:19 login.defs.5.xml.out:25 login.defs.5.xml.out:10 +#: login.defs.5.xml.out:539 login.defs.5.xml.out:542 newgrp.1.xml.out:145 +#: newgrp.1.xml.out:148 newusers.8.xml.out:79 newusers.8.xml.out:19 +#: newusers.8.xml.out:25 newusers.8.xml.out:452 newusers.8.xml.out:459 +#: newusers.8.xml.out:462 nologin.8.xml.out:48 nologin.8.xml.out:63 +#: passwd.1.xml.out:19 passwd.1.xml.out:454 passwd.1.xml.out:476 +#: passwd.1.xml.out:479 passwd.1.xml.out:483 passwd.5.xml.out:34 +#: passwd.5.xml.out:80 passwd.5.xml.out:194 porttime.5.xml.out:34 +#: pwck.8.xml.out:10 pwck.8.xml.out:316 pwck.8.xml.out:335 pwck.8.xml.out:341 +#: pwck.8.xml.out:344 pwconv.8.xml.out:10 pwconv.8.xml.out:244 +#: shadow.3.xml.out:220 shadow.5.xml.out:34 shadow.5.xml.out:271 +#: sg.1.xml.out:134 sg.1.xml.out:137 su.1.xml.out:418 suauth.5.xml.out:34 +#: suauth.5.xml.out:91 useradd.8.xml.out:25 useradd.8.xml.out:10 +#: useradd.8.xml.out:854 useradd.8.xml.out:861 useradd.8.xml.out:864 +#: userdel.8.xml.out:10 userdel.8.xml.out:318 userdel.8.xml.out:334 +#: userdel.8.xml.out:337 usermod.8.xml.out:10 usermod.8.xml.out:618 +#: usermod.8.xml.out:622 usermod.8.xml.out:625 vipw.8.xml.out:10 +#: vipw.8.xml.out:207 vipw.8.xml.out:210 vipw.8.xml.out:213 vipw.8.xml.out:216 +#: vipw.8.xml.out:219 vipw.8.xml.out:222 +msgid "5" +msgstr "5" + +#. (itstool) path: listitem/para +#: chage.1.xml.out:8 login.defs.5.xml.out:8 pwck.8.xml.out:8 pwconv.8.xml.out:8 +#: useradd.8.xml.out:8 userdel.8.xml.out:8 usermod.8.xml.out:8 vipw.8.xml.out:8 +#, fuzzy +#| msgid "" +#| "If yes, the tcb5 password shadowing " +#| "scheme will be used." msgid "" -"If yes, the tcb5 password shadowing " -"scheme will be used." +"If <_:replaceable-1/>, the <_:citerefentry-2/> password shadowing scheme " +"will be used." msgstr "" "Hvis ja, så vil skemaet for adgangskodeskygge " "tcb5 blive brugt." -#: vipw.8.xml:177(title) -msgid "ENVIRONMENT" -msgstr "MILJØ" - -#: vipw.8.xml:180(option) -msgid "VISUAL" -msgstr "VISUEL" - -#: vipw.8.xml:182(para) -msgid "Editor to be used." -msgstr "Redigeringsprogram der skal bruges." - -#: vipw.8.xml:186(option) -msgid "EDITOR" -msgstr "REDIGERINGSPROGRAM" - -#: vipw.8.xml:188(para) -msgid "Editor to be used if is not set." -msgstr "" -"Redigeringsprogram der skal bruges hvis ikke er " -"angivet." - -#: vipw.8.xml:195(title) usermod.8.xml:542(title) userdel.8.xml:205(title) -#: useradd.8.xml:706(title) suauth.5.xml:193(title) su.1.xml:366(title) -#: sg.1.xml:110(title) shadow.5.xml:255(title) shadow.3.xml:226(title) -#: pwconv.8.xml:250(title) pwck.8.xml:279(title) porttime.5.xml:130(title) -#: passwd.5.xml:160(title) passwd.1.xml:413(title) newusers.8.xml:411(title) -#: newgrp.1.xml:121(title) logoutd.8.xml:89(title) -#: login.access.5.xml:121(title) login.1.xml:338(title) limits.5.xml:196(title) -#: lastlog.8.xml:217(title) gshadow.5.xml:156(title) grpck.8.xml:221(title) -#: groups.1.xml:100(title) groupmod.8.xml:222(title) groupmems.8.xml:211(title) -#: groupdel.8.xml:157(title) groupadd.8.xml:250(title) gpasswd.1.xml:279(title) -#: faillog.8.xml:243(title) faillog.5.xml:96(title) expiry.1.xml:121(title) -#: chsh.1.xml:167(title) chpasswd.8.xml:255(title) chgpasswd.8.xml:213(title) -#: chfn.1.xml:207(title) chage.1.xml:262(title) +#. (itstool) path: refsect1/title +#: chage.1.xml.out:260 chfn.1.xml.out:183 chgpasswd.8.xml.out:189 +#: chpasswd.8.xml.out:231 chsh.1.xml.out:143 expiry.1.xml.out:97 +#: faillog.5.xml.out:72 faillog.8.xml.out:219 gpasswd.1.xml.out:255 +#: groupadd.8.xml.out:242 groupdel.8.xml.out:144 groupmems.8.xml.out:187 +#: groupmod.8.xml.out:223 groups.1.xml.out:76 grpck.8.xml.out:207 +#: gshadow.5.xml.out:132 lastlog.8.xml.out:193 limits.5.xml.out:172 +#: login.1.xml.out:314 login.access.5.xml.out:97 logoutd.8.xml.out:65 +#: newgrp.1.xml.out:97 newusers.8.xml.out:395 passwd.1.xml.out:389 +#: passwd.5.xml.out:139 porttime.5.xml.out:106 pwck.8.xml.out:257 +#: pwconv.8.xml.out:226 shadow.3.xml.out:202 shadow.5.xml.out:231 +#: sg.1.xml.out:86 su.1.xml.out:342 suauth.5.xml.out:169 useradd.8.xml.out:695 +#: userdel.8.xml.out:181 usermod.8.xml.out:543 vipw.8.xml.out:171 msgid "FILES" msgstr "FILER" -#: vipw.8.xml:198(filename) usermod.8.xml:545(filename) -#: userdel.8.xml:208(filename) useradd.8.xml:721(filename) -#: sg.1.xml:125(filename) pwck.8.xml:282(filename) newusers.8.xml:426(filename) -#: newgrp.1.xml:136(filename) gshadow.5.xml:159(filename) -#: grpck.8.xml:224(filename) groups.1.xml:103(filename) -#: groupmod.8.xml:225(filename) groupmems.8.xml:214(filename) -#: groupdel.8.xml:160(filename) groupadd.8.xml:253(filename) -#: gpasswd.1.xml:72(filename) gpasswd.1.xml:75(filename) -#: gpasswd.1.xml:282(filename) chgpasswd.8.xml:216(filename) -msgid "/etc/group" -msgstr "/etc/group" - -#: vipw.8.xml:200(para) usermod.8.xml:547(para) userdel.8.xml:210(para) -#: useradd.8.xml:723(para) sg.1.xml:127(para) pwck.8.xml:284(para) -#: newusers.8.xml:428(para) newgrp.1.xml:138(para) gshadow.5.xml:161(para) -#: grpck.8.xml:226(para) groups.1.xml:105(para) groupmod.8.xml:227(para) -#: groupmems.8.xml:216(para) groupdel.8.xml:162(para) groupadd.8.xml:255(para) -#: gpasswd.1.xml:284(para) chgpasswd.8.xml:218(para) -msgid "Group account information." -msgstr "Information om gruppekonto." - -#: vipw.8.xml:204(filename) usermod.8.xml:551(filename) -#: useradd.8.xml:727(filename) sg.1.xml:131(filename) -#: newusers.8.xml:432(filename) newgrp.1.xml:142(filename) -#: gshadow.5.xml:165(filename) grpck.8.xml:230(filename) -#: groupmod.8.xml:231(filename) groupmems.8.xml:220(filename) -#: groupdel.8.xml:166(filename) groupadd.8.xml:259(filename) -#: gpasswd.1.xml:76(filename) gpasswd.1.xml:288(filename) -#: chgpasswd.8.xml:222(filename) -msgid "/etc/gshadow" -msgstr "/etc/gshadow" - -#: vipw.8.xml:206(para) usermod.8.xml:553(para) useradd.8.xml:729(para) -#: sg.1.xml:133(para) newusers.8.xml:434(para) newgrp.1.xml:144(para) -#: gshadow.5.xml:167(para) grpck.8.xml:232(para) groupmod.8.xml:233(para) -#: groupdel.8.xml:168(para) groupadd.8.xml:261(para) gpasswd.1.xml:290(para) -#: chgpasswd.8.xml:224(para) -msgid "Secure group account information." -msgstr "Information om sikret gruppekonto." - -#: vipw.8.xml:210(filename) usermod.8.xml:563(filename) -#: userdel.8.xml:220(filename) useradd.8.xml:709(filename) -#: su.1.xml:369(filename) sg.1.xml:113(filename) shadow.5.xml:258(filename) -#: pwck.8.xml:288(filename) passwd.5.xml:163(filename) -#: passwd.1.xml:416(filename) newusers.8.xml:414(filename) -#: newgrp.1.xml:124(filename) login.1.xml:353(filename) -#: grpck.8.xml:236(filename) groupmod.8.xml:243(filename) -#: expiry.1.xml:124(filename) chsh.1.xml:170(filename) -#: chpasswd.8.xml:258(filename) chfn.1.xml:216(filename) -#: chage.1.xml:266(filename) +#. (itstool) path: term/filename +#. (itstool) path: para/filename +#: chage.1.xml.out:264 chfn.1.xml.out:13 chfn.1.xml.out:192 +#: chpasswd.8.xml.out:234 chsh.1.xml.out:146 expiry.1.xml.out:100 +#: groupmod.8.xml.out:244 grpck.8.xml.out:222 lastlog.8.xml.out:63 +#: login.1.xml.out:145 login.1.xml.out:12 login.1.xml.out:329 +#: login.defs.5.xml.out:13 login.defs.5.xml.out:12 newgrp.1.xml.out:65 +#: newgrp.1.xml.out:70 newgrp.1.xml.out:100 newusers.8.xml.out:398 +#: passwd.1.xml.out:392 passwd.5.xml.out:47 passwd.5.xml.out:89 +#: passwd.5.xml.out:142 pwck.8.xml.out:73 pwck.8.xml.out:145 pwck.8.xml.out:211 +#: pwck.8.xml.out:223 pwck.8.xml.out:266 pwconv.8.xml.out:127 +#: shadow.5.xml.out:234 sg.1.xml.out:89 su.1.xml.out:185 su.1.xml.out:197 +#: su.1.xml.out:345 useradd.8.xml.out:698 userdel.8.xml.out:196 +#: usermod.8.xml.out:295 usermod.8.xml.out:564 vipw.8.xml.out:68 +#: vipw.8.xml.out:186 msgid "/etc/passwd" msgstr "/etc/passwd" -#: vipw.8.xml:212(para) usermod.8.xml:565(para) userdel.8.xml:222(para) -#: useradd.8.xml:711(para) su.1.xml:371(para) sg.1.xml:115(para) -#: shadow.5.xml:260(para) pwck.8.xml:290(para) passwd.5.xml:165(para) -#: passwd.1.xml:418(para) newusers.8.xml:416(para) newgrp.1.xml:126(para) -#: login.1.xml:355(para) grpck.8.xml:238(para) groupmod.8.xml:245(para) -#: expiry.1.xml:126(para) chsh.1.xml:172(para) chpasswd.8.xml:260(para) -#: chfn.1.xml:218(para) chage.1.xml:269(para) +#. (itstool) path: listitem/para +#: chage.1.xml.out:267 chfn.1.xml.out:194 chpasswd.8.xml.out:236 +#: chsh.1.xml.out:148 expiry.1.xml.out:102 groupmod.8.xml.out:246 +#: grpck.8.xml.out:224 login.1.xml.out:331 newgrp.1.xml.out:102 +#: newusers.8.xml.out:400 passwd.1.xml.out:394 passwd.5.xml.out:144 +#: pwck.8.xml.out:268 shadow.5.xml.out:236 sg.1.xml.out:91 su.1.xml.out:347 +#: useradd.8.xml.out:700 userdel.8.xml.out:198 usermod.8.xml.out:566 +#: vipw.8.xml.out:188 msgid "User account information." msgstr "Information om brugerkonto." -#: vipw.8.xml:216(filename) usermod.8.xml:569(filename) -#: userdel.8.xml:226(filename) useradd.8.xml:715(filename) -#: su.1.xml:375(filename) sg.1.xml:119(filename) shadow.5.xml:264(filename) -#: shadow.3.xml:229(filename) pwck.8.xml:294(filename) -#: passwd.5.xml:169(filename) passwd.1.xml:422(filename) -#: newusers.8.xml:420(filename) newgrp.1.xml:130(filename) -#: login.1.xml:359(filename) expiry.1.xml:130(filename) -#: chpasswd.8.xml:264(filename) chage.1.xml:274(filename) +#. (itstool) path: term/filename +#. (itstool) path: para/filename +#: chage.1.xml.out:272 chpasswd.8.xml.out:240 expiry.1.xml.out:106 +#: login.1.xml.out:335 newgrp.1.xml.out:68 newgrp.1.xml.out:106 +#: newusers.8.xml.out:295 newusers.8.xml.out:404 passwd.1.xml.out:398 +#: passwd.5.xml.out:82 passwd.5.xml.out:148 pwck.8.xml.out:73 +#: pwck.8.xml.out:106 pwck.8.xml.out:212 pwck.8.xml.out:224 pwck.8.xml.out:272 +#: pwconv.8.xml.out:128 pwconv.8.xml.out:149 shadow.3.xml.out:97 +#: shadow.3.xml.out:173 shadow.3.xml.out:205 shadow.5.xml.out:78 +#: shadow.5.xml.out:240 sg.1.xml.out:95 su.1.xml.out:351 useradd.8.xml.out:428 +#: useradd.8.xml.out:704 userdel.8.xml.out:202 usermod.8.xml.out:141 +#: usermod.8.xml.out:142 usermod.8.xml.out:162 usermod.8.xml.out:163 +#: usermod.8.xml.out:296 usermod.8.xml.out:570 vipw.8.xml.out:71 +#: vipw.8.xml.out:192 msgid "/etc/shadow" msgstr "/etc/shadow" -#: vipw.8.xml:218(para) usermod.8.xml:571(para) userdel.8.xml:228(para) -#: useradd.8.xml:717(para) su.1.xml:377(para) sg.1.xml:121(para) -#: shadow.5.xml:266(para) shadow.3.xml:231(para) pwck.8.xml:296(para) -#: passwd.1.xml:424(para) newusers.8.xml:422(para) newgrp.1.xml:132(para) -#: login.1.xml:361(para) expiry.1.xml:132(para) chpasswd.8.xml:266(para) -#: chage.1.xml:277(para) +#. (itstool) path: listitem/para +#: chage.1.xml.out:275 chpasswd.8.xml.out:242 expiry.1.xml.out:108 +#: login.1.xml.out:337 newgrp.1.xml.out:108 newusers.8.xml.out:406 +#: passwd.1.xml.out:400 pwck.8.xml.out:274 shadow.3.xml.out:207 +#: shadow.5.xml.out:242 sg.1.xml.out:97 su.1.xml.out:353 useradd.8.xml.out:706 +#: userdel.8.xml.out:204 usermod.8.xml.out:572 vipw.8.xml.out:194 msgid "Secure user account information." msgstr "Information om sikret brugerkonto." -#: vipw.8.xml:225(title) usermod.8.xml:590(title) userdel.8.xml:325(title) -#: useradd.8.xml:835(title) suauth.5.xml:222(title) su.1.xml:437(title) -#: sg.1.xml:140(title) shadow.5.xml:283(title) shadow.3.xml:238(title) -#: pwconv.8.xml:262(title) pwck.8.xml:354(title) porttime.5.xml:142(title) -#: passwd.5.xml:188(title) passwd.1.xml:494(title) nologin.8.xml:81(title) -#: newusers.8.xml:465(title) newgrp.1.xml:151(title) -#: login.defs.5.xml:547(title) login.access.5.xml:133(title) -#: login.1.xml:398(title) limits.5.xml:206(title) gshadow.5.xml:174(title) -#: grpck.8.xml:290(title) groups.1.xml:112(title) groupmod.8.xml:321(title) -#: groupmems.8.xml:229(title) groupdel.8.xml:214(title) -#: groupadd.8.xml:341(title) gpasswd.1.xml:297(title) faillog.8.xml:255(title) -#: faillog.5.xml:108(title) expiry.1.xml:139(title) chsh.1.xml:191(title) -#: chpasswd.8.xml:285(title) chgpasswd.8.xml:237(title) chfn.1.xml:225(title) -#: chage.1.xml:317(title) -msgid "SEE ALSO" -msgstr "SE OGSÅ" - -#: vipw.8.xml:226(para) -msgid "" -"vi1, group5, " -"gshadow5login.defs5, passwd5, tcb5, shadow5." -msgstr "" -"vi1, gruppe5, " -"gshadow5login.defs5, passwd5, tcb5, shadow5." - -#: usermod.8.xml:46(firstname) userdel.8.xml:45(firstname) -#: useradd.8.xml:58(firstname) su.1.xml:56(firstname) sg.1.xml:40(firstname) -#: shadow.5.xml:39(firstname) shadow.3.xml:39(firstname) -#: pwck.8.xml:45(firstname) porttime.5.xml:39(firstname) -#: passwd.5.xml:39(firstname) passwd.1.xml:46(firstname) -#: newusers.8.xml:55(firstname) newgrp.1.xml:40(firstname) -#: logoutd.8.xml:39(firstname) login.defs.5.xml:106(firstname) -#: login.1.xml:72(firstname) lastlog.8.xml:41(firstname) -#: grpck.8.xml:40(firstname) groups.1.xml:39(firstname) -#: groupmod.8.xml:40(firstname) groupdel.8.xml:40(firstname) -#: groupadd.8.xml:42(firstname) faillog.8.xml:39(firstname) -#: faillog.5.xml:39(firstname) expiry.1.xml:43(firstname) -#: chsh.1.xml:42(firstname) chpasswd.8.xml:43(firstname) -#: chfn.1.xml:42(firstname) chage.1.xml:40(firstname) -msgid "Julianne Frances" -msgstr "" - -#: usermod.8.xml:47(surname) userdel.8.xml:46(surname) -#: useradd.8.xml:59(surname) su.1.xml:57(surname) sg.1.xml:41(surname) -#: shadow.5.xml:40(surname) shadow.3.xml:40(surname) pwck.8.xml:46(surname) -#: porttime.5.xml:40(surname) passwd.5.xml:40(surname) passwd.1.xml:47(surname) -#: newusers.8.xml:56(surname) newgrp.1.xml:41(surname) -#: logoutd.8.xml:40(surname) login.defs.5.xml:107(surname) -#: login.1.xml:73(surname) lastlog.8.xml:42(surname) grpck.8.xml:41(surname) -#: groups.1.xml:40(surname) groupmod.8.xml:41(surname) -#: groupdel.8.xml:41(surname) groupadd.8.xml:43(surname) -#: faillog.8.xml:40(surname) faillog.5.xml:40(surname) expiry.1.xml:44(surname) -#: chsh.1.xml:43(surname) chpasswd.8.xml:44(surname) chfn.1.xml:43(surname) -#: chage.1.xml:41(surname) -msgid "Haugh" -msgstr "" - -#: usermod.8.xml:48(contrib) userdel.8.xml:47(contrib) -#: useradd.8.xml:60(contrib) sg.1.xml:42(contrib) newusers.8.xml:57(contrib) -#: newgrp.1.xml:42(contrib) logoutd.8.xml:41(contrib) -#: login.defs.5.xml:108(contrib) groups.1.xml:41(contrib) -#: groupmod.8.xml:42(contrib) groupdel.8.xml:42(contrib) -#: groupadd.8.xml:44(contrib) chpasswd.8.xml:45(contrib) -msgid "Creation, 1991" -msgstr "" - -#: usermod.8.xml:64(refentrytitle) usermod.8.xml:71(refname) -#: usermod.8.xml:77(command) login.defs.5.xml:510(term) -msgid "usermod" -msgstr "usermod" - -#: usermod.8.xml:72(refpurpose) -msgid "modify a user account" -msgstr "ændre en brugerkonto" - -#: usermod.8.xml:81(replaceable) userdel.8.xml:78(replaceable) -#: useradd.8.xml:92(replaceable) passwd.1.xml:82(replaceable) -#: chsh.1.xml:78(replaceable) chfn.1.xml:78(replaceable) -#: chage.1.xml:75(replaceable) -msgid "LOGIN" -msgstr "LOGIND" - -#: usermod.8.xml:87(para) -msgid "" -"The usermod command modifies the system account files to " -"reflect the changes that are specified on the command line." -msgstr "" -"Kommandoen usermod ændrer systemkontofilerne så de " -"reflekterer ændringerne som angives på kommandolinjen." - -#: usermod.8.xml:95(para) -msgid "The options which apply to the usermod command are:" -msgstr "" -"Tilvalgene som kan bruges for kommandoen usermod er:" - -#: usermod.8.xml:101(term) -msgid ", " -msgstr ", " - -#: usermod.8.xml:105(para) -msgid "" -"Add the user to the supplementary group(s). Use only with the ." - -#: usermod.8.xml:112(term) -#, fuzzy -#| msgid ", " -msgid ", " -msgstr ", " - -#: usermod.8.xml:116(para) useradd.8.xml:135(para) pwck.8.xml:190(para) -#: newusers.8.xml:276(para) -msgid "Allow names that do not conform to standards." -msgstr "" - -#: usermod.8.xml:122(term) useradd.8.xml:162(term) -msgid "" -",  COMMENT" -msgstr "" -",  KOMMENTAR" - -#: usermod.8.xml:126(para) -msgid "" -"The new value of the user's password file comment field. It is normally " -"modified using the chfn1 utility." -msgstr "" -"Den nye værdi for brugerens kommentar kommentarfelt i adgangskodefilen. Den " -"ændres normalt med redskabet chfn1." - -#: usermod.8.xml:135(term) -#, fuzzy -#| msgid "" -#| ",  " -#| "HOME_DIR" -msgid "" -",  HOME_DIR" -msgstr "" -",  " -"HJEMMEMAPPE" - -#: usermod.8.xml:139(para) -msgid "The user's new login directory." -msgstr "Brugerens nye logindmappe." - -#: usermod.8.xml:142(para) -msgid "" -"If the option is given, the contents of the current home " -"directory will be moved to the new home directory, which is created if it " -"does not already exist." -msgstr "" -"Hvis tilvalget er angivet, vil indholdet af den aktuelle " -"hjemmemappe blive flyttet til den nye hjemmemappe, som oprettes hvis denne " -"ikke allerede findes." - -#: usermod.8.xml:151(term) useradd.8.xml:200(term) useradd.8.xml:577(term) -msgid "" -",  " -"EXPIRE_DATE" -msgstr "" -",  " -"UDLØBSDATO" - -#: usermod.8.xml:155(para) useradd.8.xml:204(para) -msgid "" -"The date on which the user account will be disabled. The date is specified " -"in the format YYYY-MM-DD." -msgstr "" -"Datoen hvorpå brugerkontoen vil blive deaktiveret. Datoen er angivet i " -"formatet ÅÅÅÅ-MM-DD." - -#: usermod.8.xml:159(para) -msgid "" -"An empty EXPIRE_DATE argument will disable the " -"expiration of the account." -msgstr "" -"Et tomt argument for UDLØBSDATO vil deaktivere " -"udløb for kontoen." - -#: usermod.8.xml:163(para) usermod.8.xml:184(para) -msgid "" -"This option requires a /etc/shadow file. A /" -"etc/shadow entry will be created if there were none." -msgstr "" -"Dette tilvalg kræver en /etc/shadow-fil. Et /" -"etc/shadow-punkt vil blive oprettet hvis et sådant ikke fandtes." - -#: usermod.8.xml:171(term) useradd.8.xml:217(term) useradd.8.xml:589(term) -msgid "" -",  INACTIVE" -msgstr "" -",  INAKTIV" - -#: usermod.8.xml:175(para) -msgid "" -"The number of days after a password expires until the account is permanently " -"disabled." -msgstr "" -"Antallet af dage fra en adgangskode udløber til kontoen bliver permanent " -"deaktiveret." - -#: usermod.8.xml:179(para) -msgid "" -"A value of 0 disables the account as soon as the password has expired, and a " -"value of -1 disables the feature." -msgstr "" - -#: usermod.8.xml:192(term) useradd.8.xml:236(term) useradd.8.xml:604(term) -msgid "" -",  GROUP" -msgstr "" - -#: usermod.8.xml:196(para) -msgid "" -"The group name or number of the user's new initial login group. The group " -"must exist." -msgstr "" - -#: usermod.8.xml:200(para) -msgid "" -"Any file from the user's home directory owned by the previous primary group " -"of the user will be owned by this new group." -msgstr "" - -#: usermod.8.xml:204(para) -msgid "" -"The group ownership of files outside of the user's home directory must be " -"fixed manually." -msgstr "" - -#: usermod.8.xml:211(term) useradd.8.xml:263(term) -msgid "" -",  GROUP1[,GROUP2,...[,GROUPN]]]" -msgstr "" - -#: usermod.8.xml:215(para) -msgid "" -"A list of supplementary groups which the user is also a member of. Each " -"group is separated from the next by a comma, with no intervening whitespace. " -"The groups are subject to the same restrictions as the group given with the " -" option." -msgstr "" - -#: usermod.8.xml:222(para) -msgid "" -"If the user is currently a member of a group which is not listed, the user " -"will be removed from the group. This behaviour can be changed via the " -" option, which appends the user to the current " -"supplementary group list." -msgstr "" - -#: usermod.8.xml:231(term) -msgid "" -",  NEW_LOGIN" -msgstr "" - -#: usermod.8.xml:235(para) -msgid "" -"The name of the user will be changed from LOGIN " -"to NEW_LOGIN. Nothing else is changed. In " -"particular, the user's home directory or mail spool should probably be " -"renamed manually to reflect the new login name." -msgstr "" - -#: usermod.8.xml:245(term) -msgid ", " -msgstr "" - -#: usermod.8.xml:249(para) -msgid "" -"Lock a user's password. This puts a '!' in front of the encrypted password, " -"effectively disabling the password. You can't use this option with or ." -msgstr "" - -#: usermod.8.xml:255(para) -msgid "" -"Note: if you wish to lock the account (not only access with a password), you " -"should also set the EXPIRE_DATE to " -"1." -msgstr "" - -#: usermod.8.xml:264(term) -msgid ", " -msgstr "" - -#: usermod.8.xml:268(para) -msgid "Move the content of the user's home directory to the new location." -msgstr "" - -#: usermod.8.xml:272(para) -msgid "" -"This option is only valid in combination with the (or " -") option." -msgstr "" - -#: usermod.8.xml:276(para) -msgid "" -"usermod will try to adapt the ownership of the files and " -"to copy the modes, ACL and extended attributes, but manual changes might be " -"needed afterwards." -msgstr "" - -#: usermod.8.xml:284(term) useradd.8.xml:397(term) groupmod.8.xml:146(term) -#: groupadd.8.xml:157(term) -msgid ", " -msgstr "" - -#: usermod.8.xml:288(para) -msgid "" -"When used with the option, this option allows to change " -"the user ID to a non-unique value." -msgstr "" - -#: usermod.8.xml:295(term) useradd.8.xml:409(term) groupmod.8.xml:157(term) -#: groupadd.8.xml:167(term) -msgid "" -",  PASSWORD" -msgstr "" - -#: usermod.8.xml:299(para) groupmod.8.xml:161(para) -msgid "" -"The encrypted password, as returned by crypt3." -msgstr "" - -#: usermod.8.xml:304(para) useradd.8.xml:418(para) groupmod.8.xml:166(para) -#: groupadd.8.xml:176(para) -msgid "" -"Note: This option is not recommended " -"because the password (or encrypted password) will be visible by users " -"listing the processes." -msgstr "" - -#: usermod.8.xml:309(para) -msgid "" -"The password will be written in the local /etc/passwd " -"or /etc/shadow file. This might differ from the " -"password database configured in your PAM configuration." -msgstr "" - -#: usermod.8.xml:315(para) useradd.8.xml:423(para) groupmod.8.xml:171(para) -#: groupadd.8.xml:181(para) -msgid "" -"You should make sure the password respects the system's password policy." -msgstr "" - -#: usermod.8.xml:334(term) userdel.8.xml:158(term) useradd.8.xml:469(term) -#: groupmod.8.xml:190(term) groupdel.8.xml:113(term) groupadd.8.xml:216(term) -#, fuzzy -#| msgid "" -#| ",  " -#| "HOME_DIR" -msgid "" -",  PREFIX_DIR" -msgstr "" -",  " -"HJEMMEMAPPE" - -#: usermod.8.xml:338(para) userdel.8.xml:162(para) useradd.8.xml:473(para) -#: groupmod.8.xml:194(para) groupdel.8.xml:117(para) groupadd.8.xml:220(para) -msgid "" -"Apply changes in the PREFIX_DIR directory and use " -"the configuration files from the PREFIX_DIR " -"directory. This option does not chroot and is intended for preparing a cross-" -"compilation target. Some limitations: NIS and LDAP users/groups are not " -"verified. PAM authentication is using the host files. No SELINUX support." -msgstr "" - -#: usermod.8.xml:351(term) useradd.8.xml:486(term) useradd.8.xml:624(term) -#: su.1.xml:186(term) chsh.1.xml:119(term) -msgid "" -",  SHELL" -msgstr "" - -#: usermod.8.xml:355(para) chsh.1.xml:123(para) -msgid "" -"The name of the user's new login shell. Setting this field to blank causes " -"the system to select the default login shell." -msgstr "" - -#: usermod.8.xml:362(term) useradd.8.xml:500(term) -msgid "" -",  UID" -msgstr "" - -#: usermod.8.xml:366(para) -msgid "The new numerical value of the user's ID." -msgstr "" - -#: usermod.8.xml:369(para) -msgid "" -"This value must be unique, unless the option is used. " -"The value must be non-negative." -msgstr "" - -#: usermod.8.xml:374(para) -msgid "" -"The user's mailbox, and any files which the user owns and which are located " -"in the user's home directory will have the file user ID changed " -"automatically." -msgstr "" - -#: usermod.8.xml:379(para) -msgid "" -"The ownership of files outside of the user's home directory must be fixed " -"manually." -msgstr "" - -#: usermod.8.xml:383(para) -msgid "" -"No checks will be performed with regard to the , " -", , or " -" from /etc/login.defs." -msgstr "" - -#: usermod.8.xml:392(term) -msgid ", " -msgstr "" - -#: usermod.8.xml:396(para) -msgid "" -"Unlock a user's password. This removes the '!' in front of the encrypted " -"password. You can't use this option with or value " -"from /etc/default/useradd)." -msgstr "" - -#: usermod.8.xml:412(term) -#, fuzzy -#| msgid "" -#| ",  " -#| "INACTIVE" -msgid "" -",  FIRST-LAST" -msgstr "" -",  INAKTIV" - -#: usermod.8.xml:416(para) -msgid "Add a range of subordinate uids to the user's account." -msgstr "" - -#: usermod.8.xml:419(para) usermod.8.xml:457(para) -msgid "" -"This option may be specified multiple times to add multiple ranges to a " -"users account." -msgstr "" - -#: usermod.8.xml:422(para) usermod.8.xml:442(para) -msgid "" -"No checks will be performed with regard to , " -", or from /etc/" -"login.defs." -msgstr "" - -#: usermod.8.xml:430(term) -#, fuzzy -#| msgid "" -#| ",  " -#| "EXPIRE_DATE" -msgid "" -",  FIRST-LAST" -msgstr "" -",  " -"UDLØBSDATO" - -#: usermod.8.xml:434(para) -msgid "Remove a range of subordinate uids from the user's account." -msgstr "" - -#: usermod.8.xml:437(para) -msgid "" -"This option may be specified multiple times to remove multiple ranges to a " -"users account. When both and are specified, the removal of all subordinate uid ranges " -"happens before any subordinate uid range is added." -msgstr "" - -#: usermod.8.xml:450(term) -#, fuzzy -#| msgid "" -#| ",  " -#| "INACTIVE" -msgid "" -",  FIRST-LAST" -msgstr "" -",  INAKTIV" - -#: usermod.8.xml:454(para) -msgid "Add a range of subordinate gids to the user's account." -msgstr "" - -#: usermod.8.xml:460(para) usermod.8.xml:480(para) -msgid "" -"No checks will be performed with regard to , " -", or from /etc/" -"login.defs." -msgstr "" - -#: usermod.8.xml:468(term) -#, fuzzy -#| msgid "" -#| ",  " -#| "EXPIRE_DATE" -msgid "" -",  FIRST-LAST" -msgstr "" -",  " -"UDLØBSDATO" - -#: usermod.8.xml:472(para) -msgid "Remove a range of subordinate gids from the user's account." -msgstr "" - -#: usermod.8.xml:475(para) -msgid "" -"This option may be specified multiple times to remove multiple ranges to a " -"users account. When both and are specified, the removal of all subordinate gid ranges " -"happens before any subordinate gid range is added." -msgstr "" - -#: usermod.8.xml:488(term) useradd.8.xml:535(term) -msgid "" -",  " -"SEUSER" -msgstr "" - -#: usermod.8.xml:492(para) -msgid "The new SELinux user for the user's login." -msgstr "" - -#: usermod.8.xml:495(para) -msgid "" -"A blank SEUSER will remove the SELinux user " -"mapping for user LOGIN (if any)." -msgstr "" - -#: usermod.8.xml:506(title) userdel.8.xml:298(title) useradd.8.xml:652(title) -#: su.1.xml:330(title) shadow.3.xml:218(title) passwd.1.xml:377(title) -#: newusers.8.xml:363(title) login.1.xml:260(title) lastlog.8.xml:229(title) -#: groupdel.8.xml:133(title) groupadd.8.xml:274(title) gpasswd.1.xml:252(title) -#: faillog.8.xml:232(title) chpasswd.8.xml:231(title) -#: chgpasswd.8.xml:186(title) -msgid "CAVEATS" -msgstr "" - -#: usermod.8.xml:507(para) -msgid "" -"You must make certain that the named user is not executing any processes " -"when this command is being executed if the user's numerical user ID, the " -"user's name, or the user's home directory is being changed. " -"usermod checks this on Linux. On other platforms it only " -"uses utmp to check if the user is logged in." -msgstr "" - -#: usermod.8.xml:514(para) -msgid "" -"You must change the owner of any crontab files or " -"at jobs manually." -msgstr "" - -#: usermod.8.xml:518(para) -msgid "You must make any changes involving NIS on the NIS server." -msgstr "" - -#: usermod.8.xml:33(term) useradd.8.xml:33(term) login.defs.5.xml:33(term) -#: lastlog.8.xml:33(term) -#, fuzzy -#| msgid " (number)" -msgid " (number)" -msgstr " (nummer)" - -#: usermod.8.xml:35(para) useradd.8.xml:35(para) login.defs.5.xml:35(para) -#: lastlog.8.xml:35(para) -msgid "" -"Highest user ID number for which the lastlog entries should be updated. As " -"higher user IDs are usually tracked by remote user identity and " -"authentication services there is no need to create a huge sparse lastlog " -"file for them." -msgstr "" - -#: usermod.8.xml:41(para) useradd.8.xml:41(para) login.defs.5.xml:41(para) -#: lastlog.8.xml:41(para) -msgid "" -"No option present in the configuration " -"means that there is no user ID limit for writing lastlog entries." -msgstr "" - -#: usermod.8.xml:32(term) userdel.8.xml:32(term) useradd.8.xml:32(term) -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: usermod.8.xml:34(para) userdel.8.xml:34(para) useradd.8.xml:34(para) -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"The mail spool directory. This is needed to manipulate the mailbox when its " -"corresponding user account is modified or deleted. If not specified, a " -"compile-time default is used." -msgstr "" - -#: usermod.8.xml:41(term) userdel.8.xml:41(term) useradd.8.xml:41(term) -#: su.1.xml:41(term) login.defs.5.xml:41(term) login.1.xml:41(term) -msgid " (string)" -msgstr "" - -#: usermod.8.xml:43(para) userdel.8.xml:43(para) useradd.8.xml:43(para) -#: su.1.xml:43(para) login.defs.5.xml:43(para) login.1.xml:43(para) -msgid "" -"Defines the location of the users mail spool files relatively to their home " -"directory." -msgstr "" - -#. FIXME: MAIL_FILE not used in useradd -#: usermod.8.xml:50(para) userdel.8.xml:50(para) useradd.8.xml:50(para) -#: su.1.xml:50(para) login.defs.5.xml:50(para) login.1.xml:50(para) -msgid "" -"The and variables are " -"used by useradd, usermod, and " -"userdel to create, move, or delete the user's mail spool." -msgstr "" - -#: usermod.8.xml:56(para) userdel.8.xml:56(para) useradd.8.xml:56(para) -#: su.1.xml:56(para) login.defs.5.xml:56(para) login.1.xml:56(para) -msgid "" -"If is set to yes, they are also used to define the MAIL " -"environment variable." -msgstr "" - -#: usermod.8.xml:30(term) userdel.8.xml:30(term) useradd.8.xml:30(term) -#: pwconv.8.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) -#: grpck.8.xml:30(term) groupmod.8.xml:30(term) groupmems.8.xml:30(term) -#: groupdel.8.xml:30(term) groupadd.8.xml:30(term) gpasswd.1.xml:30(term) -#: chgpasswd.8.xml:30(term) -msgid " (number)" -msgstr "" - -#: usermod.8.xml:32(para) userdel.8.xml:32(para) useradd.8.xml:32(para) -#: pwconv.8.xml:32(para) newusers.8.xml:32(para) login.defs.5.xml:32(para) -#: grpck.8.xml:32(para) groupmod.8.xml:32(para) groupmems.8.xml:32(para) -#: groupdel.8.xml:32(para) groupadd.8.xml:32(para) gpasswd.1.xml:32(para) -#: chgpasswd.8.xml:32(para) -msgid "" -"Maximum members per group entry. When the maximum is reached, a new group " -"entry (line) is started in /etc/group (with the same " -"name, same password, and same GID)." -msgstr "" - -#: usermod.8.xml:37(para) userdel.8.xml:37(para) useradd.8.xml:37(para) -#: pwconv.8.xml:37(para) newusers.8.xml:37(para) login.defs.5.xml:37(para) -#: grpck.8.xml:37(para) groupmod.8.xml:37(para) groupmems.8.xml:37(para) -#: groupdel.8.xml:37(para) groupadd.8.xml:37(para) gpasswd.1.xml:37(para) -#: chgpasswd.8.xml:37(para) -msgid "" -"The default value is 0, meaning that there are no limits in the number of " -"members in a group." -msgstr "" - -#. Note: on HP, split groups have the same ID, but different -#. names. -#: usermod.8.xml:43(para) userdel.8.xml:43(para) useradd.8.xml:43(para) -#: pwconv.8.xml:43(para) newusers.8.xml:43(para) login.defs.5.xml:43(para) -#: grpck.8.xml:43(para) groupmod.8.xml:43(para) groupmems.8.xml:43(para) -#: groupdel.8.xml:43(para) groupadd.8.xml:43(para) gpasswd.1.xml:43(para) -#: chgpasswd.8.xml:43(para) -msgid "" -"This feature (split group) permits to limit the length of lines in the group " -"file. This is useful to make sure that lines for NIS groups are not larger " -"than 1024 characters." -msgstr "" - -#: usermod.8.xml:48(para) userdel.8.xml:48(para) useradd.8.xml:48(para) -#: pwconv.8.xml:48(para) newusers.8.xml:48(para) login.defs.5.xml:48(para) -#: grpck.8.xml:48(para) groupmod.8.xml:48(para) groupmems.8.xml:48(para) -#: groupdel.8.xml:48(para) groupadd.8.xml:48(para) gpasswd.1.xml:48(para) -#: chgpasswd.8.xml:48(para) -msgid "If you need to enforce such limit, you can use 25." -msgstr "" - -#: usermod.8.xml:51(para) userdel.8.xml:51(para) useradd.8.xml:51(para) -#: pwconv.8.xml:51(para) newusers.8.xml:51(para) login.defs.5.xml:51(para) -#: grpck.8.xml:51(para) groupmod.8.xml:51(para) groupmems.8.xml:51(para) -#: groupdel.8.xml:51(para) groupadd.8.xml:51(para) gpasswd.1.xml:51(para) -#: chgpasswd.8.xml:51(para) -msgid "" -"Note: split groups may not be supported by all tools (even in the Shadow " -"toolsuite). You should not use this variable unless you really need it." -msgstr "" - -#: usermod.8.xml:30(term) useradd.8.xml:30(term) newusers.8.xml:30(term) -#: login.defs.5.xml:30(term) -#, fuzzy -#| msgid " (number)" -msgid " (number)" -msgstr " (nummer)" - -#: usermod.8.xml:31(term) useradd.8.xml:31(term) newusers.8.xml:31(term) -#: login.defs.5.xml:31(term) -#, fuzzy -#| msgid " (number)" -msgid " (number)" -msgstr " (nummer)" - -#: usermod.8.xml:32(term) useradd.8.xml:32(term) newusers.8.xml:32(term) -#: login.defs.5.xml:32(term) -#, fuzzy -#| msgid " (number)" -msgid " (number)" -msgstr " (nummer)" - -#: usermod.8.xml:34(para) useradd.8.xml:34(para) newusers.8.xml:34(para) -#: login.defs.5.xml:34(para) -msgid "" -"If /etc/subuid exists, the commands useradd and newusers (unless the user already have " -"subordinate group IDs) allocate unused group " -"IDs from the range to (resp. , are respectively 100000, 600100000 " -"and 65536." -msgstr "" -"Standardværdien for (resp. (number)" -msgid " (number)" -msgstr " (nummer)" - -#: usermod.8.xml:31(term) useradd.8.xml:31(term) newusers.8.xml:31(term) -#: login.defs.5.xml:31(term) -#, fuzzy -#| msgid " (number)" -msgid " (number)" -msgstr " (nummer)" - -#: usermod.8.xml:32(term) useradd.8.xml:32(term) newusers.8.xml:32(term) -#: login.defs.5.xml:32(term) -#, fuzzy -#| msgid " (number)" -msgid " (number)" -msgstr " (nummer)" - -#: usermod.8.xml:34(para) useradd.8.xml:34(para) newusers.8.xml:34(para) -#: login.defs.5.xml:34(para) -msgid "" -"If /etc/subuid exists, the commands useradd and newusers (unless the user already have " -"subordinate user IDs) allocate unused user " -"IDs from the range to (resp. , are respectively 100000, 600100000 " -"and 65536." -msgstr "" -"Standardværdien for (resp. (boolean)" -msgstr "" - -#: usermod.8.xml:37(programlisting) userdel.8.xml:37(programlisting) -#: useradd.8.xml:37(programlisting) pwck.8.xml:37(programlisting) -#: login.defs.5.xml:37(programlisting) -#, no-wrap -msgid "" -"\n" -"if ( UID is less than 1000) {\n" -" use /etc/tcb/user\n" -"} else if ( UID is less than 1000000) {\n" -" kilos = UID / 1000\n" -" use /etc/tcb/:kilos/user\n" -" make symlink /etc/tcb/user to the above directory\n" -"} else {\n" -" megas = UID / 1000000\n" -" kilos = ( UID / megas * 1000000 ) / 1000\n" -" use /etc/tcb/:megas/:kilos/user\n" -" make symlink /etc/tcb/user to the above directory\n" -"}\n" -" " -msgstr "" - -#: usermod.8.xml:32(para) userdel.8.xml:32(para) useradd.8.xml:32(para) -#: pwck.8.xml:32(para) login.defs.5.xml:32(para) -msgid "" -"If yes, the location of the user tcb directory to " -"be created will not be automatically set to /etc/tcb/user, but will be " -"computed depending on the UID of the user, according to the following " -"algorithm: " -msgstr "" - -#: usermod.8.xml:557(filename) userdel.8.xml:214(filename) -#: useradd.8.xml:757(filename) su.1.xml:381(filename) -#: pwconv.8.xml:253(filename) passwd.1.xml:428(filename) -#: newusers.8.xml:438(filename) login.access.5.xml:124(filename) -#: login.1.xml:389(filename) groupmod.8.xml:237(filename) -#: groupadd.8.xml:265(filename) chsh.1.xml:182(filename) -#: chpasswd.8.xml:270(filename) chgpasswd.8.xml:228(filename) -#: chfn.1.xml:210(filename) -msgid "/etc/login.defs" -msgstr "" - -#: usermod.8.xml:559(para) userdel.8.xml:216(para) useradd.8.xml:759(para) -#: su.1.xml:383(para) pwconv.8.xml:255(para) passwd.1.xml:430(para) -#: newusers.8.xml:440(para) login.access.5.xml:126(para) login.1.xml:391(para) -#: groupmod.8.xml:239(para) groupadd.8.xml:267(para) chsh.1.xml:184(para) -#: chpasswd.8.xml:272(para) chgpasswd.8.xml:230(para) chfn.1.xml:212(para) -msgid "Shadow password suite configuration." -msgstr "" - -#: usermod.8.xml:575(filename) userdel.8.xml:232(filename) -#: useradd.8.xml:745(filename) newusers.8.xml:450(filename) -#, fuzzy -#| msgid "/etc/suauth" -msgid "/etc/subgid" -msgstr "/etc/suauth" - -#: usermod.8.xml:577(para) userdel.8.xml:234(para) useradd.8.xml:747(para) -#: newusers.8.xml:452(para) -msgid "Per user subordinate group IDs." -msgstr "" - -#: usermod.8.xml:581(filename) userdel.8.xml:238(filename) -#: useradd.8.xml:751(filename) newusers.8.xml:456(filename) -#, fuzzy -#| msgid "/etc/suauth" -msgid "/etc/subuid" -msgstr "/etc/suauth" - -#: usermod.8.xml:583(para) userdel.8.xml:240(para) useradd.8.xml:753(para) -#: newusers.8.xml:458(para) -msgid "Per user subordinate user IDs." -msgstr "" - -#: usermod.8.xml:591(para) -#, fuzzy -#| msgid "" -#| "vi1, group5, " -#| "gshadow5login.defs5, passwd5, tcb5, shadow5." -msgid "" -"chfn1, chsh1, " -"passwd1, crypt3, " -"gpasswd8, groupadd8, " -"groupdel8, groupmod8, " -"login.defs5, subgid5, subuid5, useradd8, userdel8." -msgstr "" -"vi1, gruppe5, " -"gshadow5login.defs5, passwd5, tcb5, shadow5." - -#: userdel.8.xml:63(refentrytitle) userdel.8.xml:70(refname) -#: userdel.8.xml:75(command) login.defs.5.xml:500(term) -msgid "userdel" -msgstr "" - -#: userdel.8.xml:71(refpurpose) -msgid "delete a user account and related files" -msgstr "" - -#: userdel.8.xml:85(para) -msgid "" -"The userdel command modifies the system account files, " -"deleting all entries that refer to the user name LOGIN. The named user must exist." -msgstr "" - -#: userdel.8.xml:94(para) -msgid "The options which apply to the userdel command are:" -msgstr "" - -#: userdel.8.xml:99(term) groupadd.8.xml:100(term) expiry.1.xml:103(term) -msgid ", " -msgstr "" - -#: userdel.8.xml:103(para) -msgid "" -"This option forces the removal of the user account, even if the user is " -"still logged in. It also forces userdel to remove the " -"user's home directory and mail spool, even if another user uses the same " -"home directory or if the mail spool is not owned by the specified user. If " -" is defined to yes in /etc/login.defs and if a group exists with " -"the same name as the deleted user, then this group will be removed, even if " -"it is still the primary group of another user." -msgstr "" - -#: userdel.8.xml:116(para) -msgid "" -"Note: This option is dangerous and may leave your " -"system in an inconsistent state." -msgstr "" - -#: userdel.8.xml:129(term) -msgid ", " -msgstr "" - -#: userdel.8.xml:133(para) -msgid "" -"Files in the user's home directory will be removed along with the home " -"directory itself and the user's mail spool. Files located in other file " -"systems will have to be searched for and deleted manually." -msgstr "" - -#: userdel.8.xml:139(para) -msgid "" -"The mail spool is defined by the variable in the " -"login.defs file." -msgstr "" - -#: userdel.8.xml:175(term) -msgid ", " -msgstr "" - -#: userdel.8.xml:179(para) -msgid "Remove any SELinux user mapping for the user's login." -msgstr "" - -#: userdel.8.xml:33(term) login.defs.5.xml:33(term) -msgid " (string)" -msgstr "" - -#: userdel.8.xml:35(para) login.defs.5.xml:35(para) -msgid "" -"If defined, this command is run when removing a user. It should remove any " -"at/cron/print jobs etc. owned by the user to be removed (passed as the first " -"argument)." -msgstr "" - -#: userdel.8.xml:40(para) login.defs.5.xml:40(para) -msgid "The return code of the script is not taken into account." -msgstr "" - -#: userdel.8.xml:46(programlisting) login.defs.5.xml:46(programlisting) -#, no-wrap -msgid "" -"\n" -"#! /bin/sh\n" -"\n" -"# Check for the required argument.\n" -"if [ $# != 1 ]; then\n" -"\techo \"Usage: $0 username\"\n" -"\texit 1\n" -"fi\n" -"\n" -"# Remove cron jobs.\n" -"crontab -r -u $1\n" -"\n" -"# Remove at jobs.\n" -"# Note that it will remove any jobs owned by the same UID,\n" -"# even if it was shared by a different username.\n" -"AT_SPOOL_DIR=/var/spool/cron/atjobs\n" -"find $AT_SPOOL_DIR -name \"[^.]*\" -type f -user $1 -delete \\;\n" -"\n" -"# Remove print jobs.\n" -"lprm $1\n" -"\n" -"# All done.\n" -"exit 0\n" -" " -msgstr "" - -#: userdel.8.xml:43(para) login.defs.5.xml:43(para) -msgid "" -"Here is an example script, which removes the user's cron, at and print jobs: " -"" -msgstr "" - -#: userdel.8.xml:32(term) useradd.8.xml:32(term) su.1.xml:32(term) -#: login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (boolean)" -msgstr "" - -#: userdel.8.xml:34(para) useradd.8.xml:34(para) su.1.xml:34(para) -#: login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"Enable setting of the umask group bits to be the same as owner bits " -"(examples: 022 -> 002, 077 -> 007) for non-root users, if the uid is " -"the same as gid, and username is the same as the primary group name." -msgstr "" - -#: userdel.8.xml:39(para) useradd.8.xml:39(para) su.1.xml:39(para) -#: login.defs.5.xml:39(para) login.1.xml:39(para) -msgid "" -"If set to yes, userdel will " -"remove the user's group if it contains no more members, and " -"useradd will create by default a group with the name of " -"the user." -msgstr "" - -#: userdel.8.xml:247(title) useradd.8.xml:766(title) su.1.xml:390(title) -#: pwck.8.xml:303(title) passwd.1.xml:443(title) grpck.8.xml:245(title) -#: groupmod.8.xml:252(title) groupdel.8.xml:175(title) -#: groupadd.8.xml:296(title) chage.1.xml:284(title) +#. (itstool) path: refsect1/title +#: chage.1.xml.out:282 groupadd.8.xml.out:288 groupdel.8.xml.out:162 +#: groupmod.8.xml.out:253 grpck.8.xml.out:231 passwd.1.xml.out:419 +#: pwck.8.xml.out:281 su.1.xml.out:366 useradd.8.xml.out:761 +#: userdel.8.xml.out:229 msgid "EXIT VALUES" msgstr "" -#: userdel.8.xml:252(replaceable) useradd.8.xml:771(replaceable) -#: su.1.xml:409(replaceable) pwck.8.xml:308(replaceable) -#: passwd.1.xml:448(replaceable) grpck.8.xml:250(replaceable) -#: groupmod.8.xml:257(replaceable) groupdel.8.xml:180(replaceable) -#: groupadd.8.xml:301(replaceable) chage.1.xml:289(replaceable) -msgid "0" -msgstr "" - -#: userdel.8.xml:254(para) useradd.8.xml:773(para) pwck.8.xml:310(para) -#: passwd.1.xml:450(para) grpck.8.xml:252(para) groupdel.8.xml:182(para) -#: groupadd.8.xml:303(para) chage.1.xml:291(para) +#. (itstool) path: listitem/para +#: chage.1.xml.out:289 groupadd.8.xml.out:295 groupdel.8.xml.out:169 +#: grpck.8.xml.out:238 passwd.1.xml.out:426 pwck.8.xml.out:288 +#: useradd.8.xml.out:768 userdel.8.xml.out:236 msgid "success" msgstr "" -#: userdel.8.xml:258(replaceable) useradd.8.xml:777(replaceable) -#: su.1.xml:75(manvolnum) su.1.xml:415(replaceable) sg.1.xml:59(manvolnum) -#: pwck.8.xml:314(replaceable) passwd.1.xml:65(manvolnum) -#: passwd.1.xml:454(replaceable) newgrp.1.xml:59(manvolnum) -#: login.1.xml:91(manvolnum) grpck.8.xml:256(replaceable) -#: groups.1.xml:58(manvolnum) gpasswd.1.xml:63(manvolnum) -#: expiry.1.xml:62(manvolnum) chsh.1.xml:61(manvolnum) chfn.1.xml:61(manvolnum) -#: chage.1.xml:59(manvolnum) chage.1.xml:295(replaceable) -msgid "1" -msgstr "" +#. (itstool) path: listitem/para +#: chage.1.xml.out:295 passwd.1.xml.out:432 +msgid "permission denied" +msgstr "tilladelse nægtet" -#: userdel.8.xml:260(para) useradd.8.xml:779(para) -msgid "can't update password file" -msgstr "" - -#: userdel.8.xml:264(replaceable) useradd.8.xml:783(replaceable) -#: pwck.8.xml:320(replaceable) passwd.1.xml:460(replaceable) -#: grpck.8.xml:262(replaceable) groupmod.8.xml:263(replaceable) -#: groupdel.8.xml:186(replaceable) groupadd.8.xml:307(replaceable) -#: chage.1.xml:301(replaceable) +#. (itstool) path: term/replaceable +#. (itstool) path: citerefentry/manvolnum +#: chage.1.xml.out:299 groupadd.8.xml.out:299 groupdel.8.xml.out:173 +#: groupmod.8.xml.out:264 groups.1.xml.out:94 groups.1.xml.out:97 +#: groups.1.xml.out:100 grpck.8.xml.out:248 limits.5.xml.out:90 +#: limits.5.xml.out:101 limits.5.xml.out:188 limits.5.xml.out:191 +#: passwd.1.xml.out:436 pwck.8.xml.out:298 useradd.8.xml.out:778 +#: userdel.8.xml.out:246 msgid "2" msgstr "" -#: userdel.8.xml:266(para) useradd.8.xml:785(para) pwck.8.xml:316(para) -#: grpck.8.xml:258(para) groupdel.8.xml:188(para) groupadd.8.xml:309(para) -#: chage.1.xml:303(para) +#. (itstool) path: listitem/para +#: chage.1.xml.out:301 groupadd.8.xml.out:301 groupdel.8.xml.out:175 +#: grpck.8.xml.out:244 pwck.8.xml.out:294 useradd.8.xml.out:780 +#: userdel.8.xml.out:248 msgid "invalid command syntax" msgstr "" -#: userdel.8.xml:270(replaceable) useradd.8.xml:801(replaceable) -#: pwck.8.xml:344(replaceable) passwd.1.xml:484(replaceable) -#: groupmod.8.xml:281(replaceable) groupdel.8.xml:192(replaceable) -msgid "6" -msgstr "" +#. (itstool) path: term/replaceable +#: chage.1.xml.out:305 +msgid "15" +msgstr "15" -#: userdel.8.xml:272(para) -msgid "specified user doesn't exist" -msgstr "" +#. (itstool) path: listitem/para +#: chage.1.xml.out:307 +msgid "can't find the shadow password file" +msgstr "Kan ikke finde shadows adgangskodefil" -#: userdel.8.xml:278(para) -msgid "user currently logged in" -msgstr "" - -#: userdel.8.xml:282(replaceable) useradd.8.xml:813(replaceable) -#: groupmod.8.xml:293(replaceable) groupdel.8.xml:204(replaceable) -#: groupadd.8.xml:331(replaceable) -msgid "10" -msgstr "" - -#: userdel.8.xml:284(para) useradd.8.xml:815(para) groupdel.8.xml:206(para) -#: groupadd.8.xml:333(para) -msgid "can't update group file" -msgstr "" - -#: userdel.8.xml:288(replaceable) useradd.8.xml:819(replaceable) -#: groupmod.8.xml:305(replaceable) -msgid "12" -msgstr "" - -#: userdel.8.xml:290(para) -msgid "can't remove home directory" -msgstr "" - -#: userdel.8.xml:248(para) -msgid "" -"The userdel command exits with the following values: " -"" -msgstr "" - -#: userdel.8.xml:299(para) -msgid "" -"userdel will not allow you to remove an account if there " -"are running processes which belong to this account. In that case, you may " -"have to kill those processes or lock the user's password or account and " -"remove the account later. The option can force the " -"deletion of this account." -msgstr "" - -#: userdel.8.xml:306(para) -msgid "" -"You should manually check all file systems to ensure that no files remain " -"owned by this user." -msgstr "" - -#: userdel.8.xml:310(para) -msgid "" -"You may not remove any NIS attributes on a NIS client. This must be " -"performed on the NIS server." -msgstr "" - -#: userdel.8.xml:313(para) -msgid "" -"If is defined to yes in /etc/login.defs, userdel will delete the group with the same name as the user. To avoid " -"inconsistencies in the passwd and group databases, userdel will check that this group is not used as a primary group for " -"another user, and will just warn without deleting the group otherwise. The " -" option can force the deletion of this group." -msgstr "" - -#: userdel.8.xml:326(para) +#. (itstool) path: refsect1/para +#: chage.1.xml.out:283 groupadd.8.xml.out:289 groupdel.8.xml.out:163 +#: groupmod.8.xml.out:254 grpck.8.xml.out:232 passwd.1.xml.out:420 +#: pwck.8.xml.out:282 useradd.8.xml.out:762 userdel.8.xml.out:230 #, fuzzy #| msgid "" -#| "vi1, group5, " -#| "gshadow5login.defs5, passwd5, tcb5, shadow5." +#| "The pwck command exits with the following values: " +#| "" msgid "" -"chfn1, chsh1, " -"passwd1, login.defs5, " -"gpasswd8, groupadd8, " -"groupdel8, groupmod8, subgid5, subuid5, useradd8, usermod8." +"The <_:command-1/> command exits with the following values: <_:" +"variablelist-2/>" msgstr "" -"vi1, gruppe5, " -"gshadow5login.defs5, passwd5, tcb5, shadow5." - -#: useradd.8.xml:76(refentrytitle) useradd.8.xml:83(refname) -#: useradd.8.xml:88(command) useradd.8.xml:95(command) -#: useradd.8.xml:99(command) login.defs.5.xml:482(term) -msgid "useradd" -msgstr "" - -#: useradd.8.xml:84(refpurpose) -msgid "create a new user or update default new user information" -msgstr "" - -#: useradd.8.xml:96(arg) useradd.8.xml:100(arg) -msgid "-D" -msgstr "" - -#: useradd.8.xml:109(para) -msgid "" -"When invoked without the option, the useradd command creates a new user account using the values specified on " -"the command line plus the default values from the system. Depending on " -"command line options, the useradd command will update " -"system files and may also create the new user's home directory and copy " -"initial files." -msgstr "" - -#: useradd.8.xml:118(para) -msgid "" -"By default, a group will also be created for the new user (see , , and " -")." -msgstr "" - -#: useradd.8.xml:127(para) -msgid "The options which apply to the useradd command are:" -msgstr "" - -#: useradd.8.xml:132(option) pwck.8.xml:187(option) newusers.8.xml:273(option) -msgid "--badname" -msgstr "" - -#: useradd.8.xml:141(term) useradd.8.xml:559(term) -msgid "" -",  BASE_DIR" -msgstr "" - -#: useradd.8.xml:145(para) -msgid "" -"The default base directory for the system if  " -"HOME_DIR is not specified. BASE_DIR is concatenated with the account name to define the home " -"directory. If the option is not used, " -"BASE_DIR must exist." -msgstr "" - -#: useradd.8.xml:152(para) -msgid "" -"If this option is not specified, useradd will use the " -"base directory specified by the variable in /" -"etc/default/useradd, or /home by default." -msgstr "" - -#: useradd.8.xml:166(para) -msgid "" -"Any text string. It is generally a short description of the login, and is " -"currently used as the field for the user's full name." -msgstr "" - -#: useradd.8.xml:174(term) -msgid "" -",  HOME_DIR" -msgstr "" -",  " -"HJEMMEMAPPE" - -#: useradd.8.xml:178(para) -msgid "" -"The new user will be created using HOME_DIR as " -"the value for the user's login directory. The default is to append the " -"LOGIN name to BASE_DIR " -"and use that as the login directory name. The directory " -"HOME_DIR does not have to exist but will not be " -"created if it is missing." -msgstr "" - -#: useradd.8.xml:190(term) -msgid ", " -msgstr "" - -#: useradd.8.xml:194(para) -msgid "See below, the subsection \"Changing the default values\"." -msgstr "" - -#: useradd.8.xml:208(para) -msgid "" -"If not specified, useradd will use the default expiry " -"date specified by the variable in /etc/" -"default/useradd, or an empty string (no expiry) by default." -msgstr "" - -#: useradd.8.xml:221(para) -msgid "" -"The number of days after a password expires until the account is permanently " -"disabled. A value of 0 disables the account as soon as the password has " -"expired, and a value of -1 disables the feature." -msgstr "" - -#: useradd.8.xml:227(para) -msgid "" -"If not specified, useradd will use the default inactivity " -"period specified by the variable in /etc/" -"default/useradd, or -1 by default." -msgstr "" - -#: useradd.8.xml:240(para) -msgid "" -"The group name or number of the user's initial login group. The group name " -"must exist. A group number must refer to an already existing group." -msgstr "" - -#: useradd.8.xml:245(para) -msgid "" -"If not specified, the behavior of useradd will depend on " -"the variable in /etc/login.defs. If this variable is set to yes (or " -" is specified on the command line), a group " -"will be created for the user, with the same name as her loginname. If the " -"variable is set to no (or is specified on the command line), useradd will set the " -"primary group of the new user to the value specified by the option. The default is for the user to belong only to " -"the initial group." -msgstr "" - -#: useradd.8.xml:284(term) -msgid "" -",  SKEL_DIR" -msgstr "" - -#: useradd.8.xml:288(para) -msgid "" -"The skeleton directory, which contains files and directories to be copied in " -"the user's home directory, when the home directory is created by " -"useradd." -msgstr "" - -#: useradd.8.xml:293(para) -msgid "" -"This option is only valid if the (or ) option is specified." -msgstr "" - -#: useradd.8.xml:297(para) -msgid "" -"If this option is not set, the skeleton directory is defined by the " -" variable in /etc/default/useradd " -"or, by default, /etc/skel." -msgstr "" - -#: useradd.8.xml:303(para) -msgid "If possible, the ACLs and extended attributes are copied." -msgstr "" - -#: useradd.8.xml:309(term) groupadd.8.xml:137(term) -msgid "" -",  KEY=VALUE" -msgstr "" - -#: useradd.8.xml:313(para) -msgid "" -"Overrides /etc/login.defs defaults (, , " -" and others). Example: " -" PASS_MAX_DAYS=-1 can be used when creating system " -"account to turn off password aging, even though system account has no " -"password at all. Multiple options can be specified, e." -"g.:  UID_MIN=100  " -"UID_MAX=499" -msgstr "" - -#: useradd.8.xml:334(term) -msgid ", " -msgstr "" - -#: useradd.8.xml:336(para) -msgid "Do not add the user to the lastlog and faillog databases." -msgstr "" - -#: useradd.8.xml:339(para) -msgid "" -"By default, the user's entries in the lastlog and faillog databases are " -"reset to avoid reusing the entry from a previously deleted user." -msgstr "" - -#: useradd.8.xml:347(term) -msgid ", " -msgstr "" - -#: useradd.8.xml:351(para) -msgid "" -"Create the user's home directory if it does not exist. The files and " -"directories contained in the skeleton directory (which can be defined with " -"the option) will be copied to the home directory." -msgstr "" - -#: useradd.8.xml:357(para) -msgid "" -"By default, if this option is not specified and " -"is not enabled, no home directories are created." -msgstr "" - -#: useradd.8.xml:365(term) -#, fuzzy -#| msgid ", " -msgid ", " -msgstr ", " - -#: useradd.8.xml:369(para) -msgid "" -"Do no create the user's home directory, even if the system wide setting from " -"/etc/login.defs () is set " -"to yes." -msgstr "" - -#: useradd.8.xml:378(term) -msgid ", " -msgstr "" - -#: useradd.8.xml:382(para) -msgid "" -"Do not create a group with the same name as the user, but add the user to " -"the group specified by the option or by the " -" variable in /etc/default/useradd." -msgstr "" - -#: useradd.8.xml:388(para) useradd.8.xml:526(para) -msgid "" -"The default behavior (if the , , and " -" options are not specified) is defined by the " -" variable in /etc/login.defs." -msgstr "" - -#: useradd.8.xml:401(para) -msgid "Allow the creation of a user account with a duplicate (non-unique) UID." -msgstr "" - -#: useradd.8.xml:402(para) -msgid "" -"This option is only valid in combination with the option." -msgstr "" - -#: useradd.8.xml:413(para) groupadd.8.xml:171(para) -msgid "" -"The encrypted password, as returned by crypt3. The default is to " -"disable the password." -msgstr "" - -#: useradd.8.xml:430(term) newusers.8.xml:302(term) groupadd.8.xml:188(term) -msgid ", " -msgstr "" - -#: useradd.8.xml:434(para) newusers.8.xml:306(para) -msgid "Create a system account." -msgstr "" - -#: useradd.8.xml:437(para) -msgid "" -"System users will be created with no aging information in /etc/" -"shadow, and their numeric identifiers are chosen in the " -"- range, defined in " -"/etc/login.defs, instead of -" -" (and their counterparts for " -"the creation of groups)." -msgstr "" - -#: useradd.8.xml:446(para) -msgid "" -"Note that useradd will not create a home directory for " -"such a user, regardless of the default setting in /etc/login.defs (). You have to specify the options if you want a home directory for a system account to be " -"created." -msgstr "" - -#: useradd.8.xml:490(para) -msgid "" -"The name of the user's login shell. The default is to leave this field " -"blank, which causes the system to select the default login shell specified " -"by the variable in /etc/default/useradd, or an empty string by default." -msgstr "" - -#: useradd.8.xml:504(para) -msgid "" -"The numerical value of the user's ID. This value must be unique, unless the " -" option is used. The value must be non-negative. The " -"default is to use the smallest ID value greater than or equal to " -" and greater than every other user." -msgstr "" - -#: useradd.8.xml:511(para) -msgid "" -"See also the option and the " -"description." -msgstr "" - -#: useradd.8.xml:518(term) -msgid ", " -msgstr "" - -#: useradd.8.xml:522(para) -msgid "" -"Create a group with the same name as the user, and add the user to this " -"group." -msgstr "" - -#: useradd.8.xml:539(para) -msgid "" -"The SELinux user for the user's login. The default is to leave this field " -"blank, which causes the system to select the default SELinux user." -msgstr "" - -#: useradd.8.xml:549(title) -msgid "Changing the default values" -msgstr "" - -#: useradd.8.xml:550(para) -msgid "" -"When invoked with only the option, useradd will display the current default values. When invoked with plus other options, useradd will update the " -"default values for the specified options. Valid default-changing options are:" -msgstr "" - -#: useradd.8.xml:563(para) -msgid "" -"The path prefix for a new user's home directory. The user's name will be " -"affixed to the end of BASE_DIR to form the new " -"user's home directory name, if the option is not used " -"when creating a new account." -msgstr "" - -#: useradd.8.xml:570(para) -msgid "" -"This option sets the variable in /etc/" -"default/useradd." -msgstr "" - -#: useradd.8.xml:581(para) -msgid "The date on which the user account is disabled." -msgstr "" - -#: useradd.8.xml:582(para) -msgid "" -"This option sets the variable in /etc/" -"default/useradd." -msgstr "" - -#: useradd.8.xml:593(para) -msgid "" -"The number of days after a password has expired before the account will be " -"disabled." -msgstr "" -"Antallet af dage efter en adgangskode er udløbet før kontoen vil blive " -"deaktiveret." - -#: useradd.8.xml:597(para) -msgid "" -"This option sets the variable in /etc/" -"default/useradd." -msgstr "" -"Dette tilvalg sætter variablen i /etc/" -"default/useradd." - -#: useradd.8.xml:608(para) -msgid "" -"The group name or ID for a new user's initial group (when the is used or when the " -"variable is set to no in /etc/login." -"defs). The named group must exist, and a numerical group ID must " -"have an existing entry." -msgstr "" - -#: useradd.8.xml:617(para) -msgid "" -"This option sets the variable in /etc/" -"default/useradd." -msgstr "" - -#: useradd.8.xml:628(para) -msgid "The name of a new user's login shell." -msgstr "Navnet på en ny brugers logindskal." - -#: useradd.8.xml:631(para) -msgid "" -"This option sets the variable in /etc/" -"default/useradd." -msgstr "" - -#: useradd.8.xml:643(title) -msgid "NOTES" -msgstr "" - -#: useradd.8.xml:644(para) -msgid "" -"The system administrator is responsible for placing the default user files " -"in the /etc/skel/ directory (or any other skeleton " -"directory specified in /etc/default/useradd or on the " -"command line)." -msgstr "" - -#: useradd.8.xml:653(para) -msgid "" -"You may not add a user to a NIS or LDAP group. This must be performed on the " -"corresponding server." -msgstr "" -"Du kan ikke tilføje en bruger til en NIS eller LDAP-gruppe. Dette skal " -"udføres på den tilsvarende server." - -#: useradd.8.xml:658(para) -msgid "" -"Similarly, if the username already exists in an external user database such " -"as NIS or LDAP, useradd will deny the user account " -"creation request." -msgstr "" - -#: useradd.8.xml:664(para) -msgid "" -"Usernames must start with a lower case letter or an underscore, followed by " -"lower case letters, digits, underscores, or dashes. They can end with a " -"dollar sign. In regular expression terms: [a-z_][a-z0-9_-]*[$]?" -msgstr "" - -#: useradd.8.xml:670(para) -msgid "Usernames may only be up to 32 characters long." -msgstr "Brugernavne må kun være op til 32 tegn lange." - -#: useradd.8.xml:30(term) login.defs.5.xml:30(term) -msgid " (boolean)" -msgstr " (boolesk)" - -#: useradd.8.xml:32(para) login.defs.5.xml:32(para) -msgid "" -"Indicate if a home directory should be created by default for new users." -msgstr "" -"Indikerer om en hjemmemappe skal oprettes som standard for nye brugere." - -#: useradd.8.xml:36(para) login.defs.5.xml:36(para) -msgid "" -"This setting does not apply to system users, and can be overridden on the " -"command line." -msgstr "" -"Denne indstilling gælder ikke for systembrugere og kan overskrives på " -"kommandolinjen." - -#: useradd.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) -#: groupadd.8.xml:32(term) -msgid " (number)" -msgstr " (nummer)" - -#: useradd.8.xml:33(term) newusers.8.xml:33(term) login.defs.5.xml:33(term) -#: groupadd.8.xml:33(term) -msgid " (number)" -msgstr " (nummer)" - -#: useradd.8.xml:35(para) newusers.8.xml:35(para) login.defs.5.xml:35(para) -#: groupadd.8.xml:35(para) -msgid "" -"Range of group IDs used for the creation of regular groups by " -"useradd, groupadd, or " -"newusers." -msgstr "" - -#: useradd.8.xml:40(para) newusers.8.xml:40(para) login.defs.5.xml:40(para) -#: groupadd.8.xml:40(para) -msgid "" -"The default value for (resp. (resp. (number)" -msgid " (number)" -msgstr " (nummer)" - -#: useradd.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) -msgid "" -"The mode for new home directories. If not specified, the (number)" -msgstr "" - -#: useradd.8.xml:34(para) pwconv.8.xml:34(para) pwck.8.xml:34(para) -#: newusers.8.xml:34(para) login.defs.5.xml:34(para) -msgid "" -"The maximum number of days a password may be used. If the password is older " -"than this, a password change will be forced. If not specified, -1 will be " -"assumed (which disables the restriction)." -msgstr "" - -#: useradd.8.xml:32(term) pwconv.8.xml:32(term) pwck.8.xml:32(term) -#: newusers.8.xml:32(term) login.defs.5.xml:32(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:34(para) pwconv.8.xml:34(para) pwck.8.xml:34(para) -#: newusers.8.xml:34(para) login.defs.5.xml:34(para) -msgid "" -"The minimum number of days allowed between password changes. Any password " -"changes attempted sooner than this will be rejected. If not specified, -1 " -"will be assumed (which disables the restriction)." -msgstr "" - -#: useradd.8.xml:32(term) pwconv.8.xml:32(term) pwck.8.xml:32(term) -#: newusers.8.xml:32(term) login.defs.5.xml:32(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:34(para) pwconv.8.xml:34(para) pwck.8.xml:34(para) -#: newusers.8.xml:34(para) login.defs.5.xml:34(para) -msgid "" -"The number of days warning given before a password expires. A zero means " -"warning is given only upon the day of expiration, a negative value means no " -"warning is given. If not specified, no warning will be provided." -msgstr "" - -#: useradd.8.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) -#: groupadd.8.xml:30(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:31(term) newusers.8.xml:31(term) login.defs.5.xml:31(term) -#: groupadd.8.xml:31(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:33(para) newusers.8.xml:33(para) login.defs.5.xml:33(para) -#: groupadd.8.xml:33(para) -msgid "" -"Range of group IDs used for the creation of system groups by " -"useradd, groupadd, or " -"newusers." -msgstr "" - -#: useradd.8.xml:38(para) newusers.8.xml:38(para) login.defs.5.xml:38(para) -#: groupadd.8.xml:38(para) -msgid "" -"The default value for (resp. " -") is 101 (resp. -1)." -msgstr "" - -#: useradd.8.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:31(term) newusers.8.xml:31(term) login.defs.5.xml:31(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:33(para) newusers.8.xml:33(para) login.defs.5.xml:33(para) -msgid "" -"Range of user IDs used for the creation of system users by useradd or newusers." -msgstr "" - -#: useradd.8.xml:37(para) newusers.8.xml:37(para) login.defs.5.xml:37(para) -msgid "" -"The default value for (resp. " -") is 101 (resp. -1)." -msgstr "" - -#: useradd.8.xml:30(term) pwck.8.xml:30(term) login.defs.5.xml:30(term) -msgid " (boolean)" -msgstr "" - -#: useradd.8.xml:32(para) pwck.8.xml:32(para) login.defs.5.xml:32(para) -msgid "" -"If yes, newly created tcb shadow files will be " -"group owned by the auth group." -msgstr "" - -#: useradd.8.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:33(term) newusers.8.xml:33(term) login.defs.5.xml:33(term) -msgid " (number)" -msgstr "" - -#: useradd.8.xml:35(para) newusers.8.xml:35(para) login.defs.5.xml:35(para) -msgid "" -"Range of user IDs used for the creation of regular users by " -"useradd or newusers." -msgstr "" - -#: useradd.8.xml:39(para) newusers.8.xml:39(para) login.defs.5.xml:39(para) -msgid "" -"The default value for (resp. (number)" -msgstr "" - -#: useradd.8.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) -#: login.1.xml:34(para) -msgid "" -"The file mode creation mask is initialized to this value. If not specified, " -"the mask will be initialized to 022." -msgstr "" - -#: useradd.8.xml:38(para) newusers.8.xml:38(para) login.defs.5.xml:38(para) -#: login.1.xml:38(para) -msgid "" -"useradd and newusers use this mask to " -"set the mode of the home directory they create if " -"is not set." -msgstr "" - -#: useradd.8.xml:43(para) newusers.8.xml:43(para) login.defs.5.xml:43(para) -#: login.1.xml:43(para) -msgid "" -"It is also used by login to define users' initial umask. " -"Note that this mask can be overridden by the user's GECOS line (if " -" is set) or by the specification of a limit with " -"the K identifier in " -"limits5." -msgstr "" - -#: useradd.8.xml:51(para) newusers.8.xml:51(para) login.defs.5.xml:51(para) -#: login.1.xml:51(para) -msgid "" -"It is also used by pam_umask as the default umask value." -msgstr "" - -#: useradd.8.xml:733(filename) -msgid "/etc/default/useradd" -msgstr "/etc/default/useradd" - -#: useradd.8.xml:735(para) -msgid "Default values for account creation." -msgstr "Standardværdier for kontooprettelse." - -#: useradd.8.xml:739(filename) -msgid "/etc/skel/" -msgstr "/etc/skel/" - -#: useradd.8.xml:741(para) -msgid "Directory containing default files." -msgstr "Mappe indeholdende standardfiler." - -#: useradd.8.xml:789(replaceable) shadow.3.xml:58(manvolnum) -#: pwck.8.xml:326(replaceable) passwd.1.xml:466(replaceable) -#: grpck.8.xml:268(replaceable) groupmod.8.xml:269(replaceable) -#: groupadd.8.xml:313(replaceable) -msgid "3" -msgstr "3" - -#: useradd.8.xml:791(para) passwd.1.xml:486(para) groupadd.8.xml:315(para) -msgid "invalid argument to option" -msgstr "Ugyldigt argument for tilvalg" - -#: useradd.8.xml:795(replaceable) pwck.8.xml:332(replaceable) -#: passwd.1.xml:472(replaceable) grpck.8.xml:274(replaceable) -#: groupmod.8.xml:275(replaceable) groupadd.8.xml:319(replaceable) -msgid "4" -msgstr "4" - -#: useradd.8.xml:797(para) -msgid "UID already in use (and no )" -msgstr "UID er allerede i brug (og intet )" - -#: useradd.8.xml:803(para) groupdel.8.xml:194(para) -msgid "specified group doesn't exist" -msgstr "angivet gruppe findes ikke" - -#: useradd.8.xml:807(replaceable) groupmod.8.xml:287(replaceable) -#: groupadd.8.xml:325(replaceable) -msgid "9" -msgstr "9" - -#: useradd.8.xml:809(para) -msgid "username already in use" -msgstr "brugernavn er allerede i brug" - -#: useradd.8.xml:821(para) -msgid "can't create home directory" -msgstr "kan ikke oprette hjemmemappe" - -#: useradd.8.xml:825(replaceable) -#, fuzzy -#| msgid "4" -msgid "14" -msgstr "4" - -#: useradd.8.xml:827(para) -msgid "can't update SELinux user mapping" -msgstr "" - -#: useradd.8.xml:767(para) -msgid "" -"The useradd command exits with the following values: " -"" -msgstr "" -"Kommandoen useradd findes med de følgende værdier: " +"Kommandoen pwck findes med de følgende værdier: " "" -#: useradd.8.xml:836(para) +#. (itstool) path: refsect1/title +#: chage.1.xml.out:315 chfn.1.xml.out:201 chgpasswd.8.xml.out:213 +#: chpasswd.8.xml.out:261 chsh.1.xml.out:167 expiry.1.xml.out:115 +#: faillog.5.xml.out:84 faillog.8.xml.out:231 gpasswd.1.xml.out:273 +#: groupadd.8.xml.out:333 groupdel.8.xml.out:201 groupmems.8.xml.out:205 +#: groupmod.8.xml.out:322 groups.1.xml.out:88 grpck.8.xml.out:276 +#: gshadow.5.xml.out:150 limits.5.xml.out:182 login.1.xml.out:374 +#: login.access.5.xml.out:109 login.defs.5.xml.out:527 newgrp.1.xml.out:127 +#: newusers.8.xml.out:449 nologin.8.xml.out:57 passwd.1.xml.out:470 +#: passwd.5.xml.out:167 porttime.5.xml.out:118 pwck.8.xml.out:332 +#: pwconv.8.xml.out:238 shadow.3.xml.out:214 shadow.5.xml.out:259 +#: sg.1.xml.out:116 su.1.xml.out:413 suauth.5.xml.out:198 useradd.8.xml.out:830 +#: userdel.8.xml.out:307 usermod.8.xml.out:591 vipw.8.xml.out:201 +msgid "SEE ALSO" +msgstr "SE OGSÅ" + +#. (itstool) path: citerefentry/refentrytitle +#. (itstool) path: para/filename +#. (itstool) path: varlistentry/term +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#. (itstool) path: cmdsynopsis/command +#. (itstool) path: para/command +#. (itstool) path: arg/replaceable +#. (itstool) path: para/replaceable +#. (itstool) path: para/emphasis +#: chage.1.xml.out:318 chfn.1.xml.out:210 chpasswd.8.xml.out:264 +#: chsh.1.xml.out:176 expiry.1.xml.out:118 groupadd.8.xml.out:341 +#: groupdel.8.xml.out:210 groupmems.8.xml.out:214 groupmod.8.xml.out:331 +#: grpck.8.xml.out:290 lastlog.8.xml.out:175 login.1.xml.out:128 +#: login.1.xml.out:380 login.1.xml.out:395 login.defs.5.xml.out:399 +#: login.defs.5.xml.out:516 login.defs.5.xml.out:533 login.defs.5.xml.out:539 +#: newusers.8.xml.out:79 newusers.8.xml.out:455 passwd.1.xml.out:40 +#: passwd.1.xml.out:47 passwd.1.xml.out:53 passwd.1.xml.out:66 +#: passwd.1.xml.out:69 passwd.1.xml.out:86 passwd.1.xml.out:116 +#: passwd.1.xml.out:152 passwd.1.xml.out:365 passwd.1.xml.out:412 +#: passwd.1.xml.out:421 passwd.1.xml.out:450 passwd.1.xml.out:456 +#: passwd.1.xml.out:476 passwd.5.xml.out:33 passwd.5.xml.out:40 +#: passwd.5.xml.out:182 pwck.8.xml.out:57 pwck.8.xml.out:227 pwck.8.xml.out:341 +#: pwconv.8.xml.out:84 pwconv.8.xml.out:99 shadow.5.xml.out:268 +#: shadow.5.xml.out:271 useradd.8.xml.out:839 userdel.8.xml.out:315 +#: usermod.8.xml.out:600 vipw.8.xml.out:216 +msgid "passwd" +msgstr "" + +#. (itstool) path: citerefentry/refentrytitle +#. (itstool) path: arg/replaceable +#. (itstool) path: phrase/emphasis +#. (itstool) path: para/filename +#. (itstool) path: para/replaceable +#. (itstool) path: para/emphasis +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#: chage.1.xml.out:321 expiry.1.xml.out:121 grpck.8.xml.out:51 +#: grpck.8.xml.out:189 grpck.8.xml.out:296 login.defs.5.xml.out:542 +#: passwd.1.xml.out:479 passwd.5.xml.out:79 passwd.5.xml.out:194 +#: pwck.8.xml.out:61 pwck.8.xml.out:105 pwck.8.xml.out:228 pwck.8.xml.out:232 +#: pwck.8.xml.out:344 pwconv.8.xml.out:84 pwconv.8.xml.out:85 +#: pwconv.8.xml.out:100 pwconv.8.xml.out:101 shadow.3.xml.out:33 +#: shadow.3.xml.out:40 shadow.3.xml.out:96 shadow.3.xml.out:220 +#: shadow.5.xml.out:33 shadow.5.xml.out:40 shadow.5.xml.out:47 +#: vipw.8.xml.out:222 +msgid "shadow" +msgstr "" + +#. (itstool) path: refsect1/para +#: chage.1.xml.out:316 expiry.1.xml.out:116 faillog.8.xml.out:232 +#: nologin.8.xml.out:58 shadow.3.xml.out:215 +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>." +msgstr "" + +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#. (itstool) path: cmdsynopsis/command +#. (itstool) path: para/command +#. (itstool) path: citerefentry/refentrytitle +#. (itstool) path: varlistentry/term +#: chfn.1.xml.out:36 chfn.1.xml.out:43 chfn.1.xml.out:49 chfn.1.xml.out:62 +#: chfn.1.xml.out:89 chfn.1.xml.out:158 chfn.1.xml.out:163 chfn.1.xml.out:11 +#: chfn.1.xml.out:14 chfn.1.xml.out:23 chsh.1.xml.out:170 +#: groupadd.8.xml.out:335 groupdel.8.xml.out:204 groupmems.8.xml.out:208 +#: groupmod.8.xml.out:325 login.defs.5.xml.out:11 login.defs.5.xml.out:14 +#: login.defs.5.xml.out:23 login.defs.5.xml.out:239 useradd.8.xml.out:833 +#: userdel.8.xml.out:309 usermod.8.xml.out:105 usermod.8.xml.out:594 +msgid "chfn" +msgstr "" + +#. (itstool) path: refnamediv/refpurpose +#: chfn.1.xml.out:44 +msgid "change real user name and information" +msgstr "" + +#. (itstool) path: citerefentry/refentrytitle +#: chfn.1.xml.out:65 passwd.5.xml.out:117 +msgid "finger" +msgstr "" + +#. (itstool) path: para/option +#. (itstool) path: term/option +#: chfn.1.xml.out:71 chfn.1.xml.out:110 groupadd.8.xml.out:95 +#: groupadd.8.xml.out:134 groupadd.8.xml.out:313 groupmod.8.xml.out:93 +#: groupmod.8.xml.out:132 useradd.8.xml.out:387 useradd.8.xml.out:495 +#: useradd.8.xml.out:792 usermod.8.xml.out:269 usermod.8.xml.out:366 +msgid "-o" +msgstr "" + +#. (itstool) path: refsect1/para +#: chfn.1.xml.out:61 +msgid "" +"The <_:command-1/> command changes user fullname, office room number, office " +"phone number, and home phone number information for a user's account. This " +"information is typically printed by <_:citerefentry-2/> and similar " +"programs. A normal user may only change the fields for her own account, " +"subject to the restrictions in <_:filename-3/>. (The default configuration " +"is to prevent users from changing their fullname.) The superuser may change " +"any field for any account. Additionally, only the superuser may use the <_:" +"option-4/> option to change the undefined portions of the GECOS field." +msgstr "" + +#. (itstool) path: para/emphasis +#: chfn.1.xml.out:77 chfn.1.xml.out:80 +msgid "other" +msgstr "" + +#. (itstool) path: refsect1/para +#: chfn.1.xml.out:75 +msgid "" +"These fields must not contain any colons. Except for the <_:emphasis-1/> " +"field, they should not contain any comma or equal sign. It is also " +"recommended to avoid non-US-ASCII characters, but this is only enforced for " +"the phone numbers. The <_:emphasis-2/> field is used to store accounting " +"information used by other applications." +msgstr "" + +#. (itstool) path: term/option +#. (itstool) path: para/option +#. (itstool) path: cmdsynopsis/arg +#: chfn.1.xml.out:94 expiry.1.xml.out:61 expiry.1.xml.out:79 +#: groupadd.8.xml.out:77 groupdel.8.xml.out:72 login.1.xml.out:90 +#: login.1.xml.out:190 login.1.xml.out:229 useradd.8.xml.out:196 +#: useradd.8.xml.out:579 userdel.8.xml.out:76 userdel.8.xml.out:286 +#: userdel.8.xml.out:301 usermod.8.xml.out:149 +msgid "-f" +msgstr "-f" + +#. (itstool) path: term/option +#: chfn.1.xml.out:94 +msgid "--full-name" +msgstr "" + +#. (itstool) path: term/replaceable +#: chfn.1.xml.out:94 +msgid "FULL_NAME" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:97 +msgid "Change the user's full name." +msgstr "Ændr brugerens navn." + +#. (itstool) path: term/option +#: chfn.1.xml.out:102 +msgid "--home-phone" +msgstr "" + +#. (itstool) path: term/replaceable +#: chfn.1.xml.out:102 +msgid "HOME_PHONE" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:105 +msgid "Change the user's home phone number." +msgstr "Ændr brugerens telefonnummer." + +#. (itstool) path: term/option +#: chfn.1.xml.out:110 +msgid "--other" +msgstr "" + +#. (itstool) path: term/replaceable +#: chfn.1.xml.out:110 +msgid "OTHER" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:113 +msgid "" +"Change the user's other GECOS information. This field is used to store " +"accounting information used by other applications, and can be changed only " +"by a superuser." +msgstr "" +"Ændr brugerens anden GECOS-information. Dette felt bruges til at gemme " +"kontoinformation brugt af andre programmer, og kan kun ændres af en " +"superbruger." + +#. (itstool) path: term/option +#. (itstool) path: para/option +#: chfn.1.xml.out:122 faillog.8.xml.out:89 faillog.8.xml.out:144 +#: faillog.8.xml.out:185 faillog.8.xml.out:202 gpasswd.1.xml.out:172 +#: groupadd.8.xml.out:101 groupadd.8.xml.out:165 grpck.8.xml.out:124 +#: grpck.8.xml.out:138 login.1.xml.out:220 login.1.xml.out:229 +#: newusers.8.xml.out:287 passwd.1.xml.out:268 pwck.8.xml.out:155 +#: pwck.8.xml.out:188 useradd.8.xml.out:420 useradd.8.xml.out:501 +#: userdel.8.xml.out:106 usermod.8.xml.out:307 +msgid "-r" +msgstr "-r" + +#. (itstool) path: term/option +#: chfn.1.xml.out:122 +msgid "--room" +msgstr "" + +#. (itstool) path: term/replaceable +#: chfn.1.xml.out:122 +msgid "ROOM_NUMBER" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:125 +msgid "Change the user's room number." +msgstr "Ændr brugerens værelsesnummer." + +#. (itstool) path: term/option +#. (itstool) path: para/option +#: chfn.1.xml.out:142 faillog.8.xml.out:80 faillog.8.xml.out:179 +#: faillog.8.xml.out:213 lastlog.8.xml.out:90 lastlog.8.xml.out:121 +#: lastlog.8.xml.out:138 passwd.1.xml.out:308 useradd.8.xml.out:393 +#: useradd.8.xml.out:490 usermod.8.xml.out:273 usermod.8.xml.out:358 +#: vipw.8.xml.out:132 +msgid "-u" +msgstr "" + +#. (itstool) path: term/option +#: chfn.1.xml.out:150 passwd.1.xml.out:321 usermod.8.xml.out:452 +msgid "-w" +msgstr "" + +#. (itstool) path: term/option +#: chfn.1.xml.out:150 +msgid "--work-phone" +msgstr "" + +#. (itstool) path: term/replaceable +#: chfn.1.xml.out:150 +msgid "WORK_PHONE" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:153 +msgid "Change the user's office phone number." +msgstr "Ændr brugerens arbejdsnummer." + +#. (itstool) path: refsect1/para +#: chfn.1.xml.out:157 +msgid "" +"If none of the options are selected, <_:command-1/> operates in an " +"interactive fashion, prompting the user with the current values for all of " +"the fields. Enter the new value to change the field, or leave the line blank " +"to use the current value. The current value is displayed between a pair of " +"<_:emphasis-2/> marks. Without options, <_:command-3/> prompts for the " +"current user account." +msgstr "" + +#. (itstool) path: term/option +#. (itstool) path: para/phrase +#: chfn.1.xml.out:8 login.defs.5.xml.out:8 login.defs.5.xml.out:242 +msgid "CHFN_AUTH" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:10 chsh.1.xml.out:10 login.defs.5.xml.out:10 +msgid "" +"If <_:replaceable-1/>, the <_:command-2/> program will require " +"authentication before making any changes, unless run by the superuser." +msgstr "" + +#. (itstool) path: term/option +#: chfn.1.xml.out:8 login.defs.5.xml.out:8 +msgid "CHFN_RESTRICT" +msgstr "" + +#. (itstool) path: varlistentry/term +#: chfn.1.xml.out:8 chgpasswd.8.xml.out:6 chpasswd.8.xml.out:6 chsh.1.xml.out:8 +#: gpasswd.1.xml.out:6 login.1.xml.out:8 login.1.xml.out:9 login.1.xml.out:19 +#: login.defs.5.xml.out:8 login.defs.5.xml.out:6 login.defs.5.xml.out:9 +#: login.defs.5.xml.out:19 newusers.8.xml.out:6 passwd.1.xml.out:6 +#: pwck.8.xml.out:8 su.1.xml.out:8 su.1.xml.out:9 su.1.xml.out:19 +#: useradd.8.xml.out:8 useradd.8.xml.out:19 userdel.8.xml.out:8 +#: userdel.8.xml.out:19 userdel.8.xml.out:9 usermod.8.xml.out:8 +#: usermod.8.xml.out:19 #, fuzzy -#| msgid "" -#| "vi1, group5, " -#| "gshadow5login.defs5, passwd5, tcb5, shadow5." -msgid "" -"chfn1, chsh1, " -"passwd1, crypt3, " -"groupadd8, groupdel8, " -"groupmod8, login.defs5, " -"newusers8, subgid5, subuid5, userdel8, usermod8." -msgstr "" -"vi1, gruppe5, " -"gshadow5login.defs5, passwd5, tcb5, shadow5." - -#: suauth.5.xml:41(contrib) pwconv.8.xml:47(contrib) -#: login.access.5.xml:42(contrib) gpasswd.1.xml:46(contrib) -msgid "Creation, 1996" -msgstr "" - -#: suauth.5.xml:57(refentrytitle) suauth.5.xml:64(refname) -msgid "suauth" -msgstr "" - -#: suauth.5.xml:58(manvolnum) shadow.5.xml:58(manvolnum) -#: pwck.8.xml:338(replaceable) porttime.5.xml:58(manvolnum) -#: passwd.5.xml:58(manvolnum) passwd.1.xml:478(replaceable) -#: login.defs.5.xml:125(manvolnum) login.access.5.xml:59(manvolnum) -#: limits.5.xml:60(manvolnum) gshadow.5.xml:47(manvolnum) -#: grpck.8.xml:280(replaceable) faillog.5.xml:58(manvolnum) -msgid "5" -msgstr "5" - -#: suauth.5.xml:59(refmiscinfo) shadow.5.xml:59(refmiscinfo) -#: porttime.5.xml:59(refmiscinfo) passwd.5.xml:59(refmiscinfo) -#: login.defs.5.xml:126(refmiscinfo) login.access.5.xml:60(refmiscinfo) -#: limits.5.xml:61(refmiscinfo) gshadow.5.xml:48(refmiscinfo) -#: faillog.5.xml:59(refmiscinfo) -msgid "File Formats and Conversions" -msgstr "" - -#: suauth.5.xml:65(refpurpose) -msgid "detailed su control file" -msgstr "" - -#: suauth.5.xml:70(command) suauth.5.xml:196(filename) -msgid "/etc/suauth" -msgstr "/etc/suauth" - -#: suauth.5.xml:76(para) -msgid "" -"The file /etc/suauth is referenced whenever the su " -"command is called. It can change the behaviour of the su command, based upon:" -msgstr "" - -#. .RS -#: suauth.5.xml:83(literallayout) -#, no-wrap -msgid "" -"\n" -" 1) the user su is targeting\n" -" " -msgstr "" - -#. .fi -#: suauth.5.xml:87(para) -msgid "" -"2) the user executing the su command (or any groups he might be a member of)" -msgstr "" - -#: suauth.5.xml:92(para) -msgid "" -"The file is formatted like this, with lines starting with a # being treated " -"as comment lines and ignored;" -msgstr "" - -#: suauth.5.xml:97(literallayout) -#, no-wrap -msgid "" -"\n" -" to-id:from-id:ACTION\n" -" " -msgstr "" - -#: suauth.5.xml:101(para) -msgid "" -"Where to-id is either the word ALL, a list of usernames " -"delimited by \",\" or the words ALL EXCEPT followed by " -"a list of usernames delimited by \",\"." -msgstr "" - -#: suauth.5.xml:107(para) -msgid "" -"from-id is formatted the same as to-id except the extra word " -"GROUP is recognized. ALL EXCEPT GROUP is perfectly valid too. Following GROUP " -"appears one or more group names, delimited by \",\". It is not sufficient to " -"have primary group id of the relevant group, an entry in " -"/etc/group5 is necessary." -msgstr "" - -#: suauth.5.xml:118(para) -msgid "Action can be one only of the following currently supported options." -msgstr "" - -#: suauth.5.xml:124(emphasis) -msgid "DENY" -msgstr "" - -#: suauth.5.xml:127(para) -msgid "The attempt to su is stopped before a password is even asked for." -msgstr "" - -#: suauth.5.xml:134(emphasis) -msgid "NOPASS" -msgstr "" - -#: suauth.5.xml:137(para) -msgid "" -"The attempt to su is automatically successful; no password is asked for." -msgstr "" - -#: suauth.5.xml:145(emphasis) -msgid "OWNPASS" -msgstr "" - -#: suauth.5.xml:148(para) -msgid "" -"For the su command to be successful, the user must enter his or her own " -"password. They are told this." -msgstr "" - -#: suauth.5.xml:156(para) -msgid "" -"Note there are three separate fields delimited by a colon. No whitespace " -"must surround this colon. Also note that the file is examined sequentially " -"line by line, and the first applicable rule is used without examining the " -"file further. This makes it possible for a system administrator to exercise " -"as fine control as he or she wishes." -msgstr "" - -#: suauth.5.xml:166(title) -msgid "EXAMPLE" -msgstr "" - -#: suauth.5.xml:167(literallayout) -#, no-wrap -msgid "" -"\n" -" # sample /etc/suauth file\n" -" #\n" -" # A couple of privileged usernames may\n" -" # su to root with their own password.\n" -" #\n" -" root:chris,birddog:OWNPASS\n" -" #\n" -" # Anyone else may not su to root unless in\n" -" # group wheel. This is how BSD does things.\n" -" #\n" -" root:ALL EXCEPT GROUP wheel:DENY\n" -" #\n" -" # Perhaps terry and birddog are accounts\n" -" # owned by the same person.\n" -" # Access can be arranged between them\n" -" # with no password.\n" -" #\n" -" terry:birddog:NOPASS\n" -" birddog:terry:NOPASS\n" -" #\n" -" " -msgstr "" - -#: suauth.5.xml:203(title) pwconv.8.xml:216(title) login.defs.5.xml:531(title) -msgid "BUGS" -msgstr "" - -#: suauth.5.xml:204(para) -msgid "" -"There could be plenty lurking. The file parser is particularly unforgiving " -"about syntax errors, expecting no spurious whitespace (apart from beginning " -"and end of lines), and a specific token delimiting different things." -msgstr "" - -#: suauth.5.xml:213(title) shadow.3.xml:208(title) -msgid "DIAGNOSTICS" -msgstr "" - -#: suauth.5.xml:214(para) -msgid "" -"An error parsing the file is reported using " -"syslogd8 as level ERR on facility AUTH." -msgstr "" - -#: suauth.5.xml:223(para) -msgid "" -"su1." -msgstr "" - -#: su.1.xml:58(contrib) shadow.5.xml:41(contrib) shadow.3.xml:41(contrib) -#: porttime.5.xml:41(contrib) passwd.5.xml:41(contrib) passwd.1.xml:48(contrib) -#: login.1.xml:74(contrib) faillog.8.xml:41(contrib) faillog.5.xml:41(contrib) -msgid "Creation, 1989" -msgstr "" - -#: su.1.xml:74(refentrytitle) su.1.xml:81(refname) su.1.xml:86(command) -#: login.defs.5.xml:456(term) -msgid "su" -msgstr "" - -#: su.1.xml:76(refmiscinfo) sg.1.xml:60(refmiscinfo) -#: passwd.1.xml:66(refmiscinfo) newgrp.1.xml:60(refmiscinfo) -#: login.1.xml:92(refmiscinfo) groups.1.xml:59(refmiscinfo) -#: gpasswd.1.xml:64(refmiscinfo) expiry.1.xml:63(refmiscinfo) -#: chsh.1.xml:62(refmiscinfo) chfn.1.xml:62(refmiscinfo) -#: chage.1.xml:60(refmiscinfo) -msgid "User Commands" -msgstr "" - -#: su.1.xml:82(refpurpose) -msgid "change user ID or become superuser" -msgstr "" - -#: su.1.xml:91(replaceable) sg.1.xml:72(arg) newgrp.1.xml:71(arg) -msgid "-" -msgstr "" - -#: su.1.xml:94(replaceable) login.1.xml:107(replaceable) -#: login.1.xml:115(replaceable) -msgid "username" -msgstr "" - -#: su.1.xml:96(replaceable) -msgid "args" -msgstr "" - -#: su.1.xml:104(para) -msgid "" -"The su command is used to become another user during a " -"login session. Invoked without a , su defaults to becoming the superuser. The option " -"may be used to provide an environment similar to what the user would expect " -"had the user logged in directly. The option may be used " -"to treat the next argument as a command by most shells." -msgstr "" - -#: su.1.xml:114(para) -msgid "" -"Options are recognized everywhere in the argument list. You can use the " -" argument to stop option parsing. The " -"option is special: it is also recognized after , but has " -"to be placed before ." -msgstr "" - -#: su.1.xml:122(para) -msgid "" -"The user will be prompted for a password, if appropriate. Invalid passwords " -"will produce an error message. All attempts, both valid and invalid, are " -"logged to detect abuse of the system." -msgstr "" -"Brugeren vil blive spurgt om sin adgangskode, hvis det er relevant. Ugyldige " -"adgangskoder vil medføre en fejlbesked. Alle forsøg, både gyldige og " -"ugyldige, logges for at deteketere misbrug af systemet." - -#: su.1.xml:127(para) -msgid "" -"The current environment is passed to the new shell. The value of " -"$PATH is reset to /bin:/usr/bin for normal " -"users, or /sbin:/bin:/usr/sbin:/usr/bin for the " -"superuser. This may be changed with the and " -" definitions in /etc/login.defs." -msgstr "" - -#: su.1.xml:136(para) login.1.xml:188(para) -msgid "" -"A subsystem login is indicated by the presence of a \"*\" as the first " -"character of the login shell. The given home directory will be used as the " -"root of a new file system which the user is actually logged into." -msgstr "" - -#: su.1.xml:145(para) -msgid "The options which apply to the su command are:" -msgstr "" - -#: su.1.xml:149(term) -msgid "" -",  COMMAND" -msgstr "" - -#: su.1.xml:153(para) -msgid "" -"Specify a command that will be invoked by the shell using its , , " -msgstr "" - -#: su.1.xml:171(para) -msgid "" -"Provide an environment similar to what the user would expect had the user " -"logged in directly." -msgstr "" - -#: su.1.xml:175(para) -msgid "" -"When is used, it must be specified before any " -". For portability it is recommended to use it as " -"last option, before any . The other forms ( and ) do not have this restriction." -msgstr "" - -#: su.1.xml:190(para) -msgid "The shell that will be invoked." -msgstr "" - -#: su.1.xml:198(para) -msgid "The shell specified with --shell." -msgstr "Skallen angivet med --shell." - -#: su.1.xml:201(para) -msgid "" -"If is used, the shell specified by " -"the $SHELL environment variable." -msgstr "" - -#: su.1.xml:208(para) -msgid "" -"The shell indicated in the /etc/passwd entry for the " -"target user." -msgstr "" - -#: su.1.xml:214(para) -msgid "" -"/bin/sh if a shell could not be found by any above " -"method." -msgstr "" - -#: su.1.xml:191(para) -msgid "" -"The invoked shell is chosen from (highest priority first): " -msgstr "" - -#: su.1.xml:219(para) -msgid "" -"If the target user has a restricted shell (i.e. the shell field of this " -"user's entry in /etc/passwd is not listed in /" -"etc/shells), then the option or the " -"$SHELL environment variable won't be taken into account, " -"unless su is called by root." -msgstr "" - -#: su.1.xml:230(term) -msgid "" -", , or (see below);" -msgstr "" - -#: su.1.xml:250(envar) -msgid "$IFS" -msgstr "" - -#: su.1.xml:252(para) -msgid "" -"reset to <space><tab><newline>, if it was " -"set." -msgstr "" - -#: su.1.xml:235(para) -msgid "Preserve the current environment, except for: " -msgstr "" - -#: su.1.xml:261(para) -msgid "" -"If the target user has a restricted shell, this option has no effect (unless " -"su is called by root)." -msgstr "" -"Hvis målbrugeren har en begrænset skal, så har dette tilvalg ingen effekt " -"(med mindre su kaldes af root)." - -#: su.1.xml:270(para) -msgid "" -"The $HOME, $SHELL, $USER, " -"$LOGNAME, $PATH, and $IFS " -"environment variables are reset." -msgstr "" - -#: su.1.xml:279(para) -msgid "" -"If is not used, the environment is copied, except " -"for the variables above." -msgstr "" - -#: su.1.xml:286(para) -msgid "" -"If is used, the $TERM, " -"$COLORTERM, $DISPLAY, and $XAUTHORITY " -"environment variables are copied if they were set." -msgstr "" - -#: su.1.xml:296(para) -msgid "" -"If is used, the $TZ, $HZ, and $MAIL environment variables are set according to " -"the /etc/login.defs options , " -", , and is used, other environment variables might be " -"set by the file (see below)." -msgstr "" - -#: su.1.xml:317(para) -msgid "Other environments might be set by PAM modules." -msgstr "" - -#: su.1.xml:265(para) -msgid "" -"Note that the default behavior for the environment is the following: " -"" -msgstr "" - -#: su.1.xml:331(para) -msgid "" -"This version of su has many compilation options, only " -"some of which may be in use at any particular site." -msgstr "" - -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"If defined, either full pathname of a file containing device names (one per " -"line) or a \":\" delimited list of device names. Root logins will be allowed " -"only upon these devices." -msgstr "" - -#: su.1.xml:39(para) login.defs.5.xml:39(para) login.1.xml:39(para) -msgid "If not defined, root will be allowed on any device." -msgstr "" -"Hvis ikke defineret så vil administrator (root) være tilladt på alle enheder" - -#: su.1.xml:42(para) login.defs.5.xml:42(para) login.1.xml:42(para) -msgid "The device should be specified without the /dev/ prefix." -msgstr "Enheden skal angives uden præfikset /dev/." - -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"List of groups to add to the user's supplementary groups set when logging in " -"on the console (as determined by the CONSOLE setting). Default is none. " -" Use with caution - it is possible for users to gain " -"permanent access to these groups, even when not logged in on the console." -msgstr "" - -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (boolean)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"Indicate if login is allowed if we can't cd to the home directory. Default " -"is no." -msgstr "" -"Indiker om logind er tilladt, hvis vi ikke kan cd til hjemmemappen. " -"Standarden er nej." - -#: su.1.xml:38(para) login.defs.5.xml:38(para) login.1.xml:38(para) -msgid "" -"If set to yes, the user will login in the root " -"(/) directory if it is not possible to cd to her home " -"directory." -msgstr "" - -#. XXX: When compiled with PAM support, only sulogin uses ENV_HZ -#: su.1.xml:33(term) login.defs.5.xml:33(term) login.1.xml:33(term) -msgid " (string)" +#| msgid " (string)" +msgid "<_:option-1/> (string)" msgstr " (streng)" -#: su.1.xml:35(para) login.defs.5.xml:35(para) login.1.xml:35(para) +#. (itstool) path: para/emphasis +#: chfn.1.xml.out:12 login.defs.5.xml.out:12 +msgid "gecos" +msgstr "" + +#. (itstool) path: para/replaceable +#: chfn.1.xml.out:15 login.defs.5.xml.out:15 +#, fuzzy +#| msgid "-f" +msgid "f" +msgstr "-f" + +#. (itstool) path: para/replaceable +#: chfn.1.xml.out:16 login.defs.5.xml.out:16 +#, fuzzy +#| msgid "-r" +msgid "r" +msgstr "-r" + +#. (itstool) path: para/replaceable +#: chfn.1.xml.out:16 login.defs.5.xml.out:16 +msgid "w" +msgstr "" + +#. (itstool) path: para/replaceable +#: chfn.1.xml.out:17 login.defs.5.xml.out:17 +msgid "h" +msgstr "" + +#. (itstool) path: para/replaceable +#: chfn.1.xml.out:20 login.defs.5.xml.out:20 +msgid "rwh" +msgstr "" + +#. (itstool) path: para/replaceable +#. (itstool) path: para/emphasis +#: chfn.1.xml.out:20 chgpasswd.8.xml.out:16 chgpasswd.8.xml.out:18 +#: chpasswd.8.xml.out:16 chpasswd.8.xml.out:18 gpasswd.1.xml.out:16 +#: gpasswd.1.xml.out:18 grpck.8.xml.out:143 login.defs.5.xml.out:134 +#: login.defs.5.xml.out:136 login.defs.5.xml.out:20 login.defs.5.xml.out:16 +#: login.defs.5.xml.out:18 newusers.8.xml.out:16 newusers.8.xml.out:18 +#: passwd.1.xml.out:16 passwd.1.xml.out:18 useradd.8.xml.out:231 +#: useradd.8.xml.out:601 +msgid "no" +msgstr "" + +#. (itstool) path: para/replaceable +#: chfn.1.xml.out:21 login.defs.5.xml.out:21 +msgid "frwh" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:10 login.defs.5.xml.out:10 msgid "" -"If set, it will be used to define the HZ environment variable when a user " -"login. The value must be preceded by HZ=. A " -"common value on Linux is HZ=100." +"This parameter specifies which values in the <_:emphasis-1/> field of the <_:" +"filename-2/> file may be changed by regular users using the <_:command-3/> " +"program. It can be any combination of letters <_:replaceable-4/>, <_:" +"replaceable-5/>, <_:replaceable-6/>, <_:replaceable-7/>, for Full name, Room " +"number, Work phone, and Home phone, respectively. For backward " +"compatibility, <_:replaceable-8/> is equivalent to <_:replaceable-9/> and <_:" +"replaceable-10/> is equivalent to <_:replaceable-11/>. If not specified, " +"only the superuser can make any changes. The most restrictive setting is " +"better achieved by not installing <_:command-12/> SUID." msgstr "" -#: su.1.xml:41(para) login.defs.5.xml:41(para) login.1.xml:41(para) -msgid "" -"The HZ environment variable is only set when the user (the " -"superuser) logs in with sulogin." -msgstr "" +#. (itstool) path: term/option +#. (itstool) path: para/phrase +#: chfn.1.xml.out:8 chsh.1.xml.out:8 login.1.xml.out:8 login.defs.5.xml.out:8 +#: login.defs.5.xml.out:244 login.defs.5.xml.out:359 su.1.xml.out:8 +#, fuzzy +#| msgid "user LIMITS_STRING" +msgid "LOGIN_STRING" +msgstr "bruger LIMITS_STRING" -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"If this file exists and is readable, login environment will be read from it. " -"Every line should be in the form name=value." -msgstr "" - -#: su.1.xml:38(para) login.defs.5.xml:38(para) login.1.xml:38(para) -msgid "Lines starting with a # are treated as comment lines and ignored." -msgstr "" - -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"If set, it will be used to define the PATH environment variable when a " -"regular user login. The value is a colon separated list of paths (for " -"example /bin:/usr/bin) and can be preceded by " -"PATH=. The default value is PATH=/" -"bin:/usr/bin." -msgstr "" - -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"If set, it will be used to define the PATH environment variable when the " -"superuser login. The value is a colon separated list of paths (for example " -"/sbin:/bin:/usr/sbin:/usr/bin) and can be " -"preceded by PATH=. The default value is " -"PATH=/sbin:/bin:/usr/sbin:/usr/bin." -msgstr "" - -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "" -"If set, it will be used to define the TZ environment variable when a user " -"login. The value can be the name of a timezone preceded by TZ= (for example TZ=CST6CDT), or the " -"full path to the file containing the timezone specification (for example " -"/etc/tzname)." -msgstr "" - -#. TODO: it can in fact be used to set any other variable -#: su.1.xml:43(para) login.defs.5.xml:43(para) login.1.xml:43(para) -msgid "" -"If a full path is specified but the file does not exist or cannot be read, " -"the default is to use TZ=CST6CDT." -msgstr "" - -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -#: chsh.1.xml:32(term) chfn.1.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -#: chsh.1.xml:34(para) chfn.1.xml:34(para) +#. (itstool) path: listitem/para +#: chfn.1.xml.out:10 chsh.1.xml.out:10 login.1.xml.out:10 +#: login.defs.5.xml.out:10 su.1.xml.out:10 msgid "" "The string used for prompting a password. The default is to use \"Password: " "\", or a translation of that string. If you set this variable, the prompt " "will not be translated." msgstr "" -#: su.1.xml:39(para) login.defs.5.xml:39(para) login.1.xml:39(para) -#: chsh.1.xml:39(para) chfn.1.xml:39(para) +#. (itstool) path: para/replaceable +#: chfn.1.xml.out:16 chsh.1.xml.out:16 login.1.xml.out:16 +#: login.defs.5.xml.out:16 su.1.xml.out:16 +msgid "%s" +msgstr "" + +#. (itstool) path: listitem/para +#: chfn.1.xml.out:15 chsh.1.xml.out:15 login.1.xml.out:15 +#: login.defs.5.xml.out:15 su.1.xml.out:15 msgid "" -"If the string contains %s, this will be replaced " -"by the user's name." +"If the string contains <_:replaceable-1/>, this will be replaced by the " +"user's name." msgstr "" -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (boolean)" +#. (itstool) path: listitem/para +#: chfn.1.xml.out:188 chgpasswd.8.xml.out:206 chpasswd.8.xml.out:248 +#: chsh.1.xml.out:160 groupadd.8.xml.out:259 groupmod.8.xml.out:240 +#: login.1.xml.out:367 login.access.5.xml.out:102 newusers.8.xml.out:424 +#: passwd.1.xml.out:406 pwconv.8.xml.out:231 su.1.xml.out:359 +#: useradd.8.xml.out:754 userdel.8.xml.out:192 usermod.8.xml.out:560 +msgid "Shadow password suite configuration." msgstr "" -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) -msgid "Enable checking and display of mailbox status upon login." +#. (itstool) path: citerefentry/refentrytitle +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#. (itstool) path: cmdsynopsis/command +#. (itstool) path: para/command +#. (itstool) path: varlistentry/term +#: chfn.1.xml.out:204 chsh.1.xml.out:36 chsh.1.xml.out:43 chsh.1.xml.out:49 +#: chsh.1.xml.out:62 chsh.1.xml.out:73 chsh.1.xml.out:108 chsh.1.xml.out:11 +#: groupadd.8.xml.out:338 groupdel.8.xml.out:207 groupmems.8.xml.out:211 +#: groupmod.8.xml.out:328 login.defs.5.xml.out:11 login.defs.5.xml.out:270 +#: useradd.8.xml.out:836 userdel.8.xml.out:312 usermod.8.xml.out:597 +msgid "chsh" msgstr "" -#: su.1.xml:37(para) login.defs.5.xml:37(para) login.1.xml:37(para) +#. (itstool) path: citerefentry/refentrytitle +#. (itstool) path: para/filename +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#: chfn.1.xml.out:207 chgpasswd.8.xml.out:222 chpasswd.8.xml.out:271 +#: chsh.1.xml.out:173 groupadd.8.xml.out:174 groupadd.8.xml.out:353 +#: groupmod.8.xml.out:343 login.1.xml.out:389 login.defs.5.xml.out:102 +#: login.defs.5.xml.out:109 newusers.8.xml.out:298 newusers.8.xml.out:452 +#: passwd.1.xml.out:483 pwconv.8.xml.out:92 pwconv.8.xml.out:94 +#: pwconv.8.xml.out:108 pwconv.8.xml.out:244 su.1.xml.out:418 +#: useradd.8.xml.out:854 userdel.8.xml.out:117 userdel.8.xml.out:318 +#: usermod.8.xml.out:618 vipw.8.xml.out:213 +msgid "login.defs" +msgstr "" + +#. (itstool) path: refsect1/para +#: chfn.1.xml.out:202 chgpasswd.8.xml.out:214 chsh.1.xml.out:168 +#: limits.5.xml.out:183 +msgid "<_:citerefentry-1/>, <_:citerefentry-2/>, <_:citerefentry-3/>." +msgstr "" + +#. (itstool) path: author/contrib +#: chgpasswd.8.xml.out:23 +msgid "Creation, 2006" +msgstr "" + +#. (itstool) path: refmeta/refentrytitle +#. (itstool) path: refnamediv/refname +#. (itstool) path: cmdsynopsis/command +#. (itstool) path: para/command +#. (itstool) path: varlistentry/term +#: chgpasswd.8.xml.out:33 chgpasswd.8.xml.out:40 chgpasswd.8.xml.out:46 +#: chgpasswd.8.xml.out:56 chgpasswd.8.xml.out:66 chgpasswd.8.xml.out:83 +#: login.defs.5.xml.out:249 +msgid "chgpasswd" +msgstr "" + +#. (itstool) path: refmeta/manvolnum +#. (itstool) path: citerefentry/manvolnum +#. (itstool) path: term/replaceable +#: chgpasswd.8.xml.out:34 chgpasswd.8.xml.out:219 chpasswd.8.xml.out:38 +#: chpasswd.8.xml.out:267 chpasswd.8.xml.out:275 faillog.5.xml.out:87 +#: faillog.8.xml.out:34 gpasswd.1.xml.out:279 gpasswd.1.xml.out:282 +#: gpasswd.1.xml.out:285 gpasswd.1.xml.out:288 groupadd.8.xml.out:37 +#: groupadd.8.xml.out:344 groupadd.8.xml.out:347 groupadd.8.xml.out:350 +#: groupadd.8.xml.out:356 groupadd.8.xml.out:359 groupadd.8.xml.out:362 +#: groupdel.8.xml.out:35 groupdel.8.xml.out:185 groupdel.8.xml.out:213 +#: groupdel.8.xml.out:216 groupdel.8.xml.out:219 groupdel.8.xml.out:222 +#: groupdel.8.xml.out:225 groupdel.8.xml.out:228 groupmems.8.xml.out:38 +#: groupmems.8.xml.out:217 groupmems.8.xml.out:220 groupmems.8.xml.out:223 +#: groupmems.8.xml.out:226 groupmems.8.xml.out:229 groupmod.8.xml.out:35 +#: groupmod.8.xml.out:334 groupmod.8.xml.out:337 groupmod.8.xml.out:340 +#: groupmod.8.xml.out:346 groupmod.8.xml.out:349 groupmod.8.xml.out:352 +#: grpck.8.xml.out:34 grpck.8.xml.out:282 grpck.8.xml.out:293 +#: gshadow.5.xml.out:159 gshadow.5.xml.out:162 lastlog.8.xml.out:36 +#: login.1.xml.out:174 login.1.xml.out:176 login.1.xml.out:249 +#: login.1.xml.out:251 login.1.xml.out:401 login.defs.5.xml.out:545 +#: logoutd.8.xml.out:34 newusers.8.xml.out:50 newusers.8.xml.out:466 +#: nologin.8.xml.out:23 passwd.1.xml.out:473 passwd.1.xml.out:487 +#: passwd.5.xml.out:185 passwd.5.xml.out:188 passwd.5.xml.out:191 +#: passwd.5.xml.out:200 pwck.8.xml.out:41 pwck.8.xml.out:338 pwck.8.xml.out:347 +#: pwconv.8.xml.out:40 pwconv.8.xml.out:241 pwconv.8.xml.out:247 +#: pwconv.8.xml.out:250 pwconv.8.xml.out:253 shadow.5.xml.out:274 +#: shadow.5.xml.out:277 shadow.5.xml.out:280 shadow.5.xml.out:286 +#: suauth.5.xml.out:192 useradd.8.xml.out:53 useradd.8.xml.out:845 +#: useradd.8.xml.out:848 useradd.8.xml.out:851 useradd.8.xml.out:857 +#: useradd.8.xml.out:868 useradd.8.xml.out:871 userdel.8.xml.out:40 +#: userdel.8.xml.out:258 userdel.8.xml.out:321 userdel.8.xml.out:324 +#: userdel.8.xml.out:327 userdel.8.xml.out:330 userdel.8.xml.out:341 +#: userdel.8.xml.out:344 usermod.8.xml.out:41 usermod.8.xml.out:606 +#: usermod.8.xml.out:609 usermod.8.xml.out:612 usermod.8.xml.out:615 +#: usermod.8.xml.out:629 usermod.8.xml.out:632 vipw.8.xml.out:36 +msgid "8" +msgstr "8" + +#. (itstool) path: refmeta/refmiscinfo +#: chgpasswd.8.xml.out:35 chpasswd.8.xml.out:39 faillog.8.xml.out:35 +#: groupadd.8.xml.out:38 groupdel.8.xml.out:36 groupmems.8.xml.out:39 +#: groupmod.8.xml.out:36 grpck.8.xml.out:35 lastlog.8.xml.out:37 +#: logoutd.8.xml.out:35 newusers.8.xml.out:51 nologin.8.xml.out:24 +#: pwck.8.xml.out:42 pwconv.8.xml.out:41 useradd.8.xml.out:54 +#: userdel.8.xml.out:41 usermod.8.xml.out:42 vipw.8.xml.out:37 +msgid "System Management Commands" +msgstr "Kommandoer for systemhåndtering" + +#. (itstool) path: refnamediv/refpurpose +#: chgpasswd.8.xml.out:41 +msgid "update group passwords in batch mode" +msgstr "" + +#. (itstool) path: refsect1/para +#: chgpasswd.8.xml.out:55 msgid "" -"You should disable it if the shell startup files already check for mail " -"(\"mailx -e\" or equivalent)." +"The <_:command-1/> command reads a list of group name and password pairs " +"from standard input and uses this information to update a set of existing " +"groups. Each line is of the format:" msgstr "" -#: su.1.xml:32(term) login.defs.5.xml:32(term) login.1.xml:32(term) -msgid " (boolean)" +#. (itstool) path: para/emphasis +#. (itstool) path: arg/replaceable +#. (itstool) path: term/replaceable +#: chgpasswd.8.xml.out:61 groupmems.8.xml.out:54 groupmems.8.xml.out:110 +msgid "group_name" msgstr "" -#: su.1.xml:34(para) login.defs.5.xml:34(para) login.1.xml:34(para) +#. (itstool) path: para/emphasis +#: chgpasswd.8.xml.out:62 chpasswd.8.xml.out:66 passwd.5.xml.out:77 +#: passwd.5.xml.out:86 passwd.5.xml.out:91 passwd.5.xml.out:95 +#: passwd.5.xml.out:98 +#, fuzzy +#| msgid "/etc/passwd" +msgid "password" +msgstr "/etc/passwd" + +#. (itstool) path: refsect1/para +#: chgpasswd.8.xml.out:60 chpasswd.8.xml.out:64 +msgid "<_:emphasis-1/>:<_:emphasis-2/>" +msgstr "" + +#. (itstool) path: refsect1/para +#: chgpasswd.8.xml.out:64 msgid "" -"Enable setting of resource limits from /etc/limits and " -"ulimit, umask, and niceness from the user's passwd gecos field." +"By default the supplied password must be in clear-text, and is encrypted by " +"<_:command-1/>." msgstr "" -#: su.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (string)" +#. (itstool) path: para/option +#. (itstool) path: term/option +#: chgpasswd.8.xml.out:70 chgpasswd.8.xml.out:6 chgpasswd.8.xml.out:21 +#: chgpasswd.8.xml.out:27 chgpasswd.8.xml.out:10 chpasswd.8.xml.out:75 +#: chpasswd.8.xml.out:132 chpasswd.8.xml.out:6 chpasswd.8.xml.out:21 +#: chpasswd.8.xml.out:27 chpasswd.8.xml.out:10 gpasswd.1.xml.out:6 +#: gpasswd.1.xml.out:21 gpasswd.1.xml.out:27 gpasswd.1.xml.out:10 +#: login.defs.5.xml.out:6 login.defs.5.xml.out:21 login.defs.5.xml.out:27 +#: login.defs.5.xml.out:10 newusers.8.xml.out:6 newusers.8.xml.out:21 +#: newusers.8.xml.out:27 newusers.8.xml.out:10 passwd.1.xml.out:129 +#: passwd.1.xml.out:6 passwd.1.xml.out:21 passwd.1.xml.out:27 +#: passwd.1.xml.out:10 +msgid "ENCRYPT_METHOD" msgstr "" -#: su.1.xml:34(para) login.defs.5.xml:34(para) -msgid "If defined, all su activity is logged to this file." +#. (itstool) path: para/option +#. (itstool) path: term/option +#: chgpasswd.8.xml.out:71 chgpasswd.8.xml.out:101 chpasswd.8.xml.out:78 +#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:130 chpasswd.8.xml.out:139 +#: passwd.1.xml.out:180 useradd.8.xml.out:179 useradd.8.xml.out:567 +#: usermod.8.xml.out:129 +msgid "-e" msgstr "" -#: su.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (string)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) -msgid "" -"If defined, the command name to display when running \"su -\". For example, " -"if this is defined as \"su\" then a \"ps\" will display the command is \"-su" -"\". If not defined, then \"ps\" would display the name of the shell actually " -"being run, e.g. something like \"-sh\"." -msgstr "" - -#: su.1.xml:33(term) login.defs.5.xml:33(term) -msgid " (boolean)" -msgstr "" - -#: su.1.xml:35(para) login.defs.5.xml:35(para) -msgid "" -"If yes, the user must be listed as a member of " -"the first gid 0 group in /etc/group (called " -"root on most Linux systems) to be able to " -"su to uid 0 accounts. If the group doesn't exist or is " -"empty, no one will be able to su to uid 0." -msgstr "" - -#: su.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (boolean)" -msgstr "" - -#: su.1.xml:34(para) login.defs.5.xml:34(para) -msgid "" -"Enable \"syslog\" logging of su activity - in addition to " -"sulog file logging." -msgstr "" - -#: su.1.xml:391(para) -msgid "" -"On success, su returns the exit value of the command it " -"executed." -msgstr "" - -#: su.1.xml:395(para) -msgid "" -"If this command was terminated by a signal, su returns " -"the number of this signal plus 128." -msgstr "" - -#: su.1.xml:399(para) -msgid "" -"If su has to kill the command (because it was asked to terminate, and the " -"command did not terminate in time), su returns 255." -msgstr "" - -#: su.1.xml:411(para) -msgid "success ( only)" -msgstr "" - -#: su.1.xml:417(para) -msgid "System or authentication failure" -msgstr "" - -#: su.1.xml:421(replaceable) -msgid "126" -msgstr "" - -#: su.1.xml:423(para) -msgid "The requested command was not found" -msgstr "" - -#: su.1.xml:427(replaceable) -msgid "127" -msgstr "" - -#: su.1.xml:429(para) -msgid "The requested command could not be executed" -msgstr "" - -#: su.1.xml:404(para) -msgid "" -"Some exit values from su are independent from the " -"executed command: " -msgstr "" - -#: su.1.xml:438(para) -msgid "" -"login1, login.defs5, " -"sg1, sh1." -msgstr "" - -#: sg.1.xml:58(refentrytitle) sg.1.xml:65(refname) sg.1.xml:71(command) -msgid "sg" -msgstr "" - -#: sg.1.xml:66(refpurpose) -msgid "execute command as different group ID" -msgstr "" - -#: sg.1.xml:74(arg) +#. (itstool) path: para/option +#. (itstool) path: term/option +#. (itstool) path: arg/arg +#: chgpasswd.8.xml.out:72 chgpasswd.8.xml.out:88 chpasswd.8.xml.out:78 +#: chpasswd.8.xml.out:84 chpasswd.8.xml.out:114 chpasswd.8.xml.out:129 +#: expiry.1.xml.out:60 expiry.1.xml.out:73 newusers.8.xml.out:268 +#: sg.1.xml.out:50 su.1.xml.out:86 su.1.xml.out:126 su.1.xml.out:131 +#: useradd.8.xml.out:139 usermod.8.xml.out:99 msgid "-c" msgstr "" -#: sg.1.xml:73(arg) -msgid "group command" -msgstr "" - -#: sg.1.xml:82(para) -msgid "" -"The sg command works similar to newgrp " -"but accepts a command. The command will be executed with the /bin/" -"sh shell. With most shells you may run sg " -"from, you need to enclose multi-word commands in quotes. Another difference " -"between newgrp and sg is that some " -"shells treat newgrp specially, replacing themselves with " -"a new instance of a shell that newgrp creates. This " -"doesn't happen with sg, so upon exit from a sg command you are returned to your previous group ID." -msgstr "" - -#: sg.1.xml:32(term) newgrp.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (boolean)" -msgstr "" - -#: sg.1.xml:34(para) newgrp.1.xml:34(para) login.defs.5.xml:34(para) -msgid "Enable \"syslog\" logging of sg activity." -msgstr "" - -#: sg.1.xml:141(para) -msgid "" -"id1, login1, " -"newgrp1, su1, gpasswd1, " -"group5, " -"gshadow5." -msgstr "" - -#: shadow.5.xml:57(refentrytitle) shadow.5.xml:64(refname) -#: shadow.3.xml:57(refentrytitle) shadow.3.xml:64(refname) -#: pwck.8.xml:84(replaceable) grpck.8.xml:76(replaceable) -msgid "shadow" -msgstr "" - -#: shadow.5.xml:65(refpurpose) -msgid "shadowed password file" -msgstr "" - -#: shadow.5.xml:70(para) -msgid "" -"shadow is a file which contains the password " -"information for the system's accounts and optional aging information." -msgstr "" - -#: shadow.5.xml:76(para) gshadow.5.xml:64(para) -msgid "" -"This file must not be readable by regular users if password security is to " -"be maintained." -msgstr "" - -#: shadow.5.xml:81(para) -msgid "" -"Each line of this file contains 9 fields, separated by colons (:), in the following order:" -msgstr "" - -#: shadow.5.xml:88(emphasis) passwd.5.xml:78(para) -msgid "login name" -msgstr "" - -#: shadow.5.xml:90(para) -msgid "It must be a valid account name, which exist on the system." -msgstr "" - -#: shadow.5.xml:96(emphasis) gshadow.5.xml:83(emphasis) -msgid "encrypted password" -msgstr "" - -#: shadow.5.xml:98(para) -msgid "" -"This field may be empty, in which case no passwords are required to " -"authenticate as the specified login name. However, some applications which " -"read the /etc/shadow file may decide not to permit any " -"access at all if the password field is empty." -msgstr "" - -#: shadow.5.xml:105(para) gshadow.5.xml:107(para) -msgid "" -"A password field which starts with an exclamation mark means that the " -"password is locked. The remaining characters on the line represent the " -"password field before the password was locked." -msgstr "" - -#: shadow.5.xml:111(para) passwd.5.xml:126(para) gshadow.5.xml:85(para) -msgid "" -"Refer to crypt3 for details on how this string is interpreted." -msgstr "" - -#: shadow.5.xml:116(para) passwd.5.xml:131(para) -msgid "" -"If the password field contains some string that is not a valid result of " -"crypt3, for instance ! or *, the user will not be able to use a unix " -"password to log in (but the user may log in the system by other means)." -msgstr "" - -#: shadow.5.xml:127(emphasis) -msgid "date of last password change" -msgstr "" - -#: shadow.5.xml:130(para) -msgid "" -"The date of the last password change, expressed as the number of days since " -"Jan 1, 1970." -msgstr "" - -#: shadow.5.xml:134(para) -msgid "" -"The value 0 has a special meaning, which is that the user should change her " -"password the next time she will log in the system." -msgstr "" - -#: shadow.5.xml:139(para) -msgid "An empty field means that password aging features are disabled." -msgstr "" - -#: shadow.5.xml:146(emphasis) -msgid "minimum password age" -msgstr "" - -#: shadow.5.xml:148(para) -msgid "" -"The minimum password age is the number of days the user will have to wait " -"before she will be allowed to change her password again." -msgstr "" - -#: shadow.5.xml:153(para) -msgid "An empty field and value 0 mean that there are no minimum password age." -msgstr "" - -#: shadow.5.xml:160(emphasis) -msgid "maximum password age" -msgstr "" - -#: shadow.5.xml:162(para) -msgid "" -"The maximum password age is the number of days after which the user will " -"have to change her password." -msgstr "" - -#: shadow.5.xml:166(para) -msgid "" -"After this number of days is elapsed, the password may still be valid. The " -"user should be asked to change her password the next time she will log in." -msgstr "" - -#: shadow.5.xml:171(para) -msgid "" -"An empty field means that there are no maximum password age, no password " -"warning period, and no password inactivity period (see below)." -msgstr "" - -#: shadow.5.xml:176(para) -msgid "" -"If the maximum password age is lower than the minimum password age, the user " -"cannot change her password." -msgstr "" - -#: shadow.5.xml:184(emphasis) -msgid "password warning period" -msgstr "" - -#: shadow.5.xml:187(para) -msgid "" -"The number of days before a password is going to expire (see the maximum " -"password age above) during which the user should be warned." -msgstr "" - -#: shadow.5.xml:192(para) -msgid "" -"An empty field and value 0 mean that there are no password warning period." -msgstr "" - -#: shadow.5.xml:200(emphasis) -msgid "password inactivity period" -msgstr "" - -#: shadow.5.xml:203(para) -msgid "" -"The number of days after a password has expired (see the maximum password " -"age above) during which the password should still be accepted (and the user " -"should update her password during the next login)." -msgstr "" - -#: shadow.5.xml:209(para) -msgid "" -"After expiration of the password and this expiration period is elapsed, no " -"login is possible using the current user's password. The user should contact " -"her administrator." -msgstr "" - -#: shadow.5.xml:214(para) -msgid "" -"An empty field means that there are no enforcement of an inactivity period." -msgstr "" - -#: shadow.5.xml:222(emphasis) -msgid "account expiration date" -msgstr "" - -#: shadow.5.xml:225(para) -msgid "" -"The date of expiration of the account, expressed as the number of days since " -"Jan 1, 1970." -msgstr "" - -#: shadow.5.xml:229(para) -msgid "" -"Note that an account expiration differs from a password expiration. In case " -"of an account expiration, the user shall not be allowed to login. In case of " -"a password expiration, the user is not allowed to login using her password." -msgstr "" - -#: shadow.5.xml:235(para) -msgid "An empty field means that the account will never expire." -msgstr "" - -#: shadow.5.xml:238(para) -msgid "" -"The value 0 should not be used as it is interpreted as either an account " -"with no expiration, or as an expiration on Jan 1, 1970." -msgstr "" - -#: shadow.5.xml:246(emphasis) -msgid "reserved field" -msgstr "" - -#: shadow.5.xml:248(para) -msgid "This field is reserved for future use." -msgstr "Dette felt er reserveret for fremtidig brug." - -#: shadow.5.xml:270(filename) -msgid "/etc/shadow-" -msgstr "/etc/shadow-" - -#: shadow.5.xml:272(para) -msgid "Backup file for /etc/shadow." -msgstr "Sikkerhedskopi for /etc/shadow." - -#: shadow.5.xml:273(para) passwd.5.xml:178(para) -msgid "" -"Note that this file is used by the tools of the shadow toolsuite, but not by " -"all user and password management tools." -msgstr "" -"Bemærk at denne fil bruges af værktøjer fra shodows værktøjssæt, men ikke af " -"alle håndteringsværktøjer for brugere og adgangskoder." - -#: shadow.5.xml:284(para) -msgid "" -"chage1, login1, " -"passwd1, passwd5, " -"pwck8, pwconv8, " -"pwunconv8, su1, " -"sulogin8." -msgstr "" - -#: shadow.3.xml:59(refmiscinfo) -msgid "Library Calls" -msgstr "" - -#: shadow.3.xml:65(refname) -msgid "getspnam" -msgstr "" - -#: shadow.3.xml:66(refpurpose) -msgid "encrypted password file routines" -msgstr "" - -#: shadow.3.xml:70(title) -msgid "SYNTAX" -msgstr "SYNTAKS" - -#: shadow.3.xml:72(emphasis) -msgid "#include <shadow.h>" -msgstr "" - -#: shadow.3.xml:76(emphasis) -msgid "struct spwd *getspent();" -msgstr "" - -#: shadow.3.xml:80(emphasis) -msgid "struct spwd *getspnam(char" -msgstr "" - -#: shadow.3.xml:81(emphasis) -msgid "*name" -msgstr "" - -#: shadow.3.xml:81(emphasis) shadow.3.xml:94(emphasis) -#: shadow.3.xml:99(emphasis) shadow.3.xml:105(emphasis) -msgid ");" -msgstr "" - -#: shadow.3.xml:85(emphasis) -msgid "void setspent();" -msgstr "" - -#: shadow.3.xml:89(emphasis) -msgid "void endspent();" -msgstr "" - -#: shadow.3.xml:93(emphasis) -msgid "struct spwd *fgetspent(FILE" -msgstr "" - -#: shadow.3.xml:94(emphasis) shadow.3.xml:105(emphasis) -msgid "*fp" -msgstr "" - -#: shadow.3.xml:98(emphasis) -msgid "struct spwd *sgetspent(char" -msgstr "" - -#: shadow.3.xml:99(emphasis) -msgid "*cp" -msgstr "" - -#: shadow.3.xml:103(emphasis) -msgid "int putspent(struct spwd" -msgstr "" - -#: shadow.3.xml:104(emphasis) -msgid "*p," -msgstr "" - -#: shadow.3.xml:104(emphasis) -msgid "FILE" -msgstr "" - -#: shadow.3.xml:109(emphasis) -msgid "int lckpwdf();" -msgstr "" - -#: shadow.3.xml:113(emphasis) -msgid "int ulckpwdf();" -msgstr "" - -#: shadow.3.xml:119(para) -msgid "" -"shadow manipulates the contents of the " -"shadow password file, /etc/shadow. The structure in the " -"#include file is:" -msgstr "" - -#: shadow.3.xml:124(programlisting) -#, no-wrap -msgid "" -"struct spwd {\n" -" char\t\t*sp_namp; /* user login name */\n" -" char\t\t*sp_pwdp; /* encrypted password */\n" -" long int\t\tsp_lstchg; /* last password change */\n" -" long int\t\tsp_min; /* days until change allowed. */\n" -" long int\t\tsp_max; /* days before change required */\n" -" long int\t\tsp_warn; /* days warning for expiration */\n" -" long int\t\tsp_inact; /* days before account inactive */\n" -" long int\t\tsp_expire; /* date when account expires */\n" -" unsigned long int\tsp_flag; /* reserved for future use */\n" -"}\n" -" " -msgstr "" - -#: shadow.3.xml:136(para) -msgid "The meanings of each field are:" -msgstr "" - -#: shadow.3.xml:139(para) -msgid "sp_namp - pointer to null-terminated user name" -msgstr "" - -#: shadow.3.xml:142(para) -msgid "sp_pwdp - pointer to null-terminated password" -msgstr "" - -#: shadow.3.xml:145(para) -msgid "sp_lstchg - days since Jan 1, 1970 password was last changed" -msgstr "" - -#: shadow.3.xml:148(para) -msgid "sp_min - days before which password may not be changed" -msgstr "sp_min - antal dage hvor adgangskode ikke må ændres" - -#: shadow.3.xml:151(para) -msgid "sp_max - days after which password must be changed" -msgstr "sp_max - antal dage hvorefter adgangskode skal ændres" - -#: shadow.3.xml:154(para) -msgid "" -"sp_warn - days before password is to expire that user is warned of pending " -"password expiration" -msgstr "" - -#: shadow.3.xml:159(para) -msgid "" -"sp_inact - days after password expires that account is considered inactive " -"and disabled" -msgstr "" - -#: shadow.3.xml:164(para) -msgid "sp_expire - days since Jan 1, 1970 when account will be disabled" -msgstr "" - -#: shadow.3.xml:167(para) -msgid "sp_flag - reserved for future use" -msgstr "sp_flag - reserveret for fremtidig brug" - -#: shadow.3.xml:175(para) -msgid "" -"getspent, getspname, " -"fgetspent, and sgetspent each " -"return a pointer to a struct spwd. getspent returns the next entry from the file, and fgetspent returns the next entry from the given stream, which is assumed to " -"be a file of the proper format. sgetspent returns a " -"pointer to a struct spwd using the provided string as " -"input. getspnam searches from the current position in " -"the file for an entry matching name." -msgstr "" - -#: shadow.3.xml:188(para) -msgid "" -"setspent and endspent may be used " -"to begin and end, respectively, access to the shadow password file." -msgstr "" - -#: shadow.3.xml:194(para) -msgid "" -"The lckpwdf and ulckpwdf routines " -"should be used to insure exclusive access to the /etc/shadow file. lckpwdf attempts to acquire a lock " -"using pw_lock for up to 15 seconds. It continues by " -"attempting to acquire a second lock using spw_lock for " -"the remainder of the initial 15 seconds. Should either attempt fail after a " -"total of 15 seconds, lckpwdf returns -1. When both " -"locks are acquired 0 is returned." -msgstr "" - -#: shadow.3.xml:209(para) -msgid "" -"Routines return NULL if no more entries are available or if an error occurs " -"during processing. Routines which have int as the " -"return value return 0 for success and -1 for failure." -msgstr "" - -#: shadow.3.xml:219(para) -msgid "" -"These routines may only be used by the superuser as access to the shadow " -"password file is restricted." -msgstr "" - -#: shadow.3.xml:239(para) -msgid "" -"getpwent3, shadow5." -msgstr "" - -#: pwconv.8.xml:63(refentrytitle) pwconv.8.xml:70(refname) -#: pwconv.8.xml:79(command) login.defs.5.xml:439(term) -msgid "pwconv" -msgstr "" - -#: pwconv.8.xml:71(refname) pwconv.8.xml:85(command) login.defs.5.xml:448(term) -msgid "pwunconv" -msgstr "" - -#: pwconv.8.xml:72(refname) pwconv.8.xml:91(command) login.defs.5.xml:344(term) -msgid "grpconv" -msgstr "" - -#: pwconv.8.xml:73(refname) pwconv.8.xml:97(command) login.defs.5.xml:350(term) -msgid "grpunconv" -msgstr "" - -#: pwconv.8.xml:74(refpurpose) -msgid "convert to and from shadow passwords and groups" -msgstr "" - -#: pwconv.8.xml:106(para) -msgid "" -"The pwconv command creates shadow from passwd and an optionally " -"existing shadow." -msgstr "" - -#: pwconv.8.xml:111(para) -msgid "" -"pwconv does not work with " -"enabled. To convert to tcb passwords, you should first use pwconv to convert to shadowed passwords by disabling " -"in login.defs.)" -msgstr "" - -#: pwconv.8.xml:121(para) -msgid "" -"The pwunconv command creates passwd from passwd and " -"shadow and then removes shadow." -msgstr "" - -#: pwconv.8.xml:127(para) -msgid "" -"pwunconv does not work with " -"enabled. You should first switch back from tcb to shadowed passwords using " -"tcb_unconvert, and then disable " -"in login.defs before using pwunconv." -msgstr "" - -#: pwconv.8.xml:136(para) -msgid "" -"The grpconv command creates gshadow from group and an " -"optionally existing gshadow." -msgstr "" - -#: pwconv.8.xml:142(para) -msgid "" -"The grpunconv command creates group from group and " -"gshadow and then removes gshadow." -msgstr "" - -#: pwconv.8.xml:149(para) -msgid "" -"These four programs all operate on the normal and shadow password and group " -"files: /etc/passwd, /etc/group, " -"/etc/shadow, and /etc/gshadow." -msgstr "" - -#: pwconv.8.xml:156(para) -msgid "" -"Each program acquires the necessary locks before conversion. " -"pwconv and grpconv are similar. First, " -"entries in the shadowed file which don't exist in the main file are removed. " -"Then, shadowed entries which don't have `x' as the password in the main file " -"are updated. Any missing shadowed entries are added. Finally, passwords in " -"the main file are replaced with `x'. These programs can be used for initial " -"conversion as well to update the shadowed file if the main file is edited by " -"hand." -msgstr "" - -#: pwconv.8.xml:167(para) -msgid "" -"pwconv will use the values of PASS_MIN_DAYS, PASS_MAX_DAYS, " -"and PASS_WARN_AGE from /etc/login." -"defs when adding new entries to /etc/shadow." -msgstr "" - -#: pwconv.8.xml:176(para) -msgid "" -"Likewise pwunconv and grpunconv are " -"similar. Passwords in the main file are updated from the shadowed file. " -"Entries which exist in the main file but not in the shadowed file are left " -"alone. Finally, the shadowed file is removed. Some password aging " -"information is lost by pwunconv. It will convert what it " -"can." -msgstr "" - -#: pwconv.8.xml:188(para) -msgid "" -"The options which apply to the pwconv, pwunconv, grpconv, and grpunconv " -"commands are:" -msgstr "" - -#: pwconv.8.xml:217(para) -msgid "" -"Errors in the password or group files (such as invalid or duplicate entries) " -"may cause these programs to loop forever or fail in other strange ways. " -"Please run pwck and grpck to correct " -"any such errors before converting to or from shadow passwords or groups." -msgstr "" - -#: pwconv.8.xml:228(para) -msgid "" -"The following configuration variable in /etc/login.defs " -"changes the behavior of grpconv and grpunconv:" -msgstr "" - -#: pwconv.8.xml:236(para) -msgid "" -"The following configuration variables in /etc/login.defs change the behavior of pwconv:" -msgstr "" - -#: pwconv.8.xml:263(para) -msgid "" -"grpck8, login.defs5, " -"pwck8, " -"tcb_convert8, tcb_unconvert8." -msgstr "" - -#: pwck.8.xml:47(contrib) lastlog.8.xml:43(contrib) grpck.8.xml:42(contrib) -msgid "Creation, 1992" -msgstr "" - -#: pwck.8.xml:63(refentrytitle) pwck.8.xml:70(refname) pwck.8.xml:76(command) -#: login.defs.5.xml:430(term) -msgid "pwck" -msgstr "" - -#: pwck.8.xml:71(refpurpose) -msgid "verify integrity of password files" -msgstr "" - -#: pwck.8.xml:80(replaceable) passwd.5.xml:57(refentrytitle) -#: passwd.5.xml:64(refname) passwd.1.xml:64(refentrytitle) -#: passwd.1.xml:71(refname) passwd.1.xml:77(command) login.defs.5.xml:419(term) -msgid "passwd" -msgstr "" - -#: pwck.8.xml:93(para) -msgid "" -"The pwck command verifies the integrity of the users and " -"authentication information. It checks that all entries in /etc/" -"passwd and /etc/shadow(or the files in /etc/tcb, when have the proper format and contain valid data. " -"The user is prompted to delete entries that are improperly formatted or " -"which have other uncorrectable errors." -msgstr "" - -#: pwck.8.xml:105(para) grpck.8.xml:94(para) -msgid "Checks are made to verify that each entry has:" -msgstr "" - -#: pwck.8.xml:108(para) grpck.8.xml:98(para) -msgid "the correct number of fields" -msgstr "" - -#: pwck.8.xml:111(para) -msgid "a unique and valid user name" -msgstr "" - -#: pwck.8.xml:114(para) -msgid "a valid user and group identifier" -msgstr "" - -#: pwck.8.xml:117(para) -msgid "a valid primary group" -msgstr "" - -#: pwck.8.xml:120(para) -msgid "a valid home directory" -msgstr "" - -#: pwck.8.xml:123(para) -msgid "a valid login shell" -msgstr "" - -#: pwck.8.xml:127(para) -msgid "" -"shadow checks are enabled when a second file parameter " -"is specified or when /etc/shadow exists on the system." -msgstr "" - -#: pwck.8.xml:132(para) -msgid "These checks are the following:" -msgstr "" - -#: pwck.8.xml:137(para) -msgid "" -"every passwd entry has a matching shadow entry, and every shadow entry has a " -"matching passwd entry" -msgstr "" - -#: pwck.8.xml:143(para) -msgid "passwords are specified in the shadowed file" -msgstr "" - -#: pwck.8.xml:146(para) -msgid "shadow entries have the correct number of fields" -msgstr "" - -#: pwck.8.xml:149(para) -msgid "shadow entries are unique in shadow" -msgstr "" - -#: pwck.8.xml:152(para) -msgid "the last password changes are not in the future" -msgstr "" - -#: pwck.8.xml:156(para) -msgid "" -"The checks for correct number of fields and unique user name are fatal. If " -"the entry has the wrong number of fields, the user will be prompted to " -"delete the entire line. If the user does not answer affirmatively, all " -"further checks are bypassed. An entry with a duplicated user name is " -"prompted for deletion, but the remaining checks will still be made. All " -"other errors are warning and the user is encouraged to run the " -"usermod command to correct the error." -msgstr "" - -#: pwck.8.xml:167(para) -msgid "" -"The commands which operate on the /etc/passwd file are " -"not able to alter corrupted or duplicated entries. pwck " -"should be used in those circumstances to remove the offending entry." -msgstr "" - -#: pwck.8.xml:177(para) grpck.8.xml:148(para) -msgid "" -"The and options cannot be combined." -msgstr "" - -#: pwck.8.xml:181(para) -msgid "The options which apply to the pwck command are:" -msgstr "" - -#: pwck.8.xml:204(para) -msgid "" -"Report errors only. The warnings which do not require any action from the " -"user won't be displayed." -msgstr "" - -#: pwck.8.xml:211(term) grpck.8.xml:163(term) -msgid ", " -msgstr "" - -#: pwck.8.xml:213(para) -msgid "Execute the pwck command in read-only mode." -msgstr "" - -#: pwck.8.xml:231(term) grpck.8.xml:185(term) -msgid ", " -msgstr "" - -#: pwck.8.xml:233(para) -msgid "" -"Sort entries in /etc/passwd and /etc/shadow by UID." -msgstr "" - -#: pwck.8.xml:237(para) -msgid "This option has no effect when is enabled." -msgstr "" - -#: pwck.8.xml:244(para) -msgid "" -"By default, pwck operates on the files /etc/" -"passwd and /etc/shadow (or the files in /etc/tcb). The user may " -"select alternate files with the passwd and " -"shadow parameters." -msgstr "" - -#: pwck.8.xml:253(para) -msgid "" -"Note that when is enabled, you cannot specify an " -"alternative shadow file. In future releases, this " -"parameter could be replaced by an alternate TCB directory." -msgstr "" - -#: pwck.8.xml:322(para) -msgid "one or more bad password entries" -msgstr "" - -#: pwck.8.xml:328(para) -msgid "can't open password files" -msgstr "kan ikke åbne adgangskodefiler" - -#: pwck.8.xml:334(para) -msgid "can't lock password files" -msgstr "kan ikke låse adgangskodefiler" - -#: pwck.8.xml:340(para) -msgid "can't update password files" -msgstr "kan ikke opdatere adgangskodefiler" - -#: pwck.8.xml:346(para) -msgid "can't sort password files" -msgstr "kan ikke sortere adgangskodefiler" - -#: pwck.8.xml:304(para) -msgid "" -"The pwck command exits with the following values: " -"" -msgstr "" -"Kommandoen pwck findes med de følgende værdier: " -"" - -#: pwck.8.xml:355(para) -msgid "" -"group5, grpck8, " -"passwd5, shadow5, " -"usermod8." -msgstr "" - -#: porttime.5.xml:57(refentrytitle) porttime.5.xml:64(refname) -msgid "porttime" -msgstr "" - -#: porttime.5.xml:65(refpurpose) -msgid "port access time file" -msgstr "" - -#: porttime.5.xml:70(para) -msgid "" -"porttime contains a list of tty devices, " -"user names, and permitted login times." -msgstr "" - -#: porttime.5.xml:75(para) -msgid "" -"Each entry consists of three colon separated fields. The first field is a " -"comma separated list of tty devices, or an asterisk to indicate that all tty " -"devices are matched by this entry. The second field is a comma separated " -"list of user names, or an asterisk to indicated that all user names are " -"matched by this entry. The third field is a comma separated list of " -"permitted access times." -msgstr "" - -#: porttime.5.xml:84(para) -msgid "" -"Each access time entry consists of zero or more days of the week, " -"abbreviated Su, Mo, Tu, We, Th, Fr, and Sa, followed by a pair of times " -"separated by a hyphen. The abbreviation Wk may be used " -"to represent Monday thru Friday, and Al may be used to " -"indicate every day. If no days are given, Al is assumed." -msgstr "" - -#: porttime.5.xml:98(title) -msgid "EXAMPLES" -msgstr "EKSEMPLER" - -#: porttime.5.xml:99(para) -msgid "" -"The following entry allows access to user jfh on every port during weekdays from 9am to 5pm." -msgstr "" - -#: porttime.5.xml:105(para) -msgid "*:jfh:Wk0900-1700" -msgstr "" - -#: porttime.5.xml:107(para) -msgid "" -"The following entries allow access only to the users root and oper on /dev/console " -"at any time. This illustrates how the /etc/porttime " -"file is an ordered list of access times. Any other user would match the " -"second entry which does not permit access at any time." -msgstr "" - -#: porttime.5.xml:116(programlisting) -#, no-wrap -msgid "" -"\n" -" console:root,oper:Al0000-2400\n" -" console:*:\n" -" " -msgstr "" - -#: porttime.5.xml:121(para) -msgid "" -"The following entry allows access for the user games on " -"any port during non-working hours." -msgstr "" - -#: porttime.5.xml:126(para) -msgid "*:games:Wk1700-0900,SaSu0000-2400" -msgstr "" - -#: porttime.5.xml:133(filename) logoutd.8.xml:92(filename) -msgid "/etc/porttime" -msgstr "" - -#: porttime.5.xml:135(para) logoutd.8.xml:94(para) -msgid "File containing port access." -msgstr "" - -#: porttime.5.xml:143(para) login.access.5.xml:134(para) -msgid "" -"login1." -msgstr "" - -#: passwd.5.xml:65(refpurpose) -msgid "the password file" -msgstr "" - -#: passwd.5.xml:70(para) -msgid "" -"/etc/passwd contains one line for each user account, " -"with seven fields delimited by colons (:). These fields are:" -msgstr "" - -#: passwd.5.xml:81(para) -msgid "optional encrypted password" -msgstr "" - -#: passwd.5.xml:84(para) -msgid "numerical user ID" -msgstr "" - -#: passwd.5.xml:87(para) -msgid "numerical group ID" -msgstr "" - -#: passwd.5.xml:90(para) -msgid "user name or comment field" -msgstr "" - -#: passwd.5.xml:93(para) -msgid "user home directory" -msgstr "" - -#: passwd.5.xml:96(para) -msgid "optional user command interpreter" -msgstr "" - -#: passwd.5.xml:100(para) -msgid "" -"If the password field is a lower-case x, " -"then the encrypted password is actually stored in the " -"shadow5 file instead; there must be a " -"corresponding line in the /etc/shadow file, or else the " -"user account is invalid." -msgstr "" - -#: passwd.5.xml:109(para) -msgid "" -"The encrypted password field may be empty, in which " -"case no password is required to authenticate as the specified login name. " -"However, some applications which read the /etc/passwd " -"file may decide not to permit any access at all if the " -"password field is blank." -msgstr "" - -#: passwd.5.xml:118(para) -msgid "" -"A password field which starts with an exclamation mark " -"means that the password is locked. The remaining characters on the line " -"represent the password field before the password was " -"locked." -msgstr "" - -#: passwd.5.xml:138(para) -msgid "" -"The comment field is used by various system utilities, such as " -"finger1." -msgstr "" - -#: passwd.5.xml:144(para) -msgid "" -"The home directory field provides the name of the initial working directory. " -"The login program uses this information to set the value " -"of the $HOME environmental variable." -msgstr "" - -#: passwd.5.xml:150(para) -msgid "" -"The command interpreter field provides the name of the user's command " -"language interpreter, or the name of the initial program to execute. The " -"login program uses this information to set the value of " -"the $SHELL environmental variable. If this field is empty, it " -"defaults to the value /bin/sh." -msgstr "" - -#: passwd.5.xml:171(para) -msgid "optional encrypted password file" -msgstr "" - -#: passwd.5.xml:175(filename) -msgid "/etc/passwd-" -msgstr "" - -#: passwd.5.xml:177(para) -msgid "Backup file for /etc/passwd." -msgstr "" - -#: passwd.5.xml:189(para) -msgid "" -"crypt3, getent1, " -"getpwnam3, login1, " -"passwd1, pwck8, " -"pwconv8, pwunconv8, " -"shadow5, su1, sulogin8." -msgstr "" - -#: passwd.1.xml:72(refpurpose) -msgid "change user password" -msgstr "" - -#: passwd.1.xml:89(para) -msgid "" -"The passwd command changes passwords for user accounts. A " -"normal user may only change the password for their own account, while the " -"superuser may change the password for any account. passwd " -"also changes the account or associated password validity period." -msgstr "" - -#: passwd.1.xml:98(title) -msgid "Password Changes" -msgstr "" - -#: passwd.1.xml:99(para) -msgid "" -"The user is first prompted for their old password, if one is present. This " -"password is then encrypted and compared against the stored password. The " -"user has only one chance to enter the correct password. The superuser is " -"permitted to bypass this step so that forgotten passwords may be changed." -msgstr "" - -#: passwd.1.xml:107(para) -msgid "" -"After the password has been entered, password aging information is checked " -"to see if the user is permitted to change the password at this time. If not, " -"passwd refuses to change the password and exits." -msgstr "" - -#: passwd.1.xml:114(para) -msgid "" -"The user is then prompted twice for a replacement password. The second entry " -"is compared against the first and both are required to match in order for " -"the password to be changed." -msgstr "" - -#: passwd.1.xml:120(para) -msgid "" -"Then, the password is tested for complexity. As a general guideline, " -"passwords should consist of 6 to 8 characters including one or more " -"characters from each of the following sets:" -msgstr "" - -#: passwd.1.xml:128(para) -msgid "lower case alphabetics" -msgstr "" - -#: passwd.1.xml:131(para) -msgid "digits 0 thru 9" -msgstr "" - -#: passwd.1.xml:134(para) -msgid "punctuation marks" -msgstr "" - -#: passwd.1.xml:138(para) -msgid "" -"Care must be taken not to include the system default erase or kill " -"characters. passwd will reject any password which is not " -"suitably complex." -msgstr "" - -#: passwd.1.xml:147(title) -msgid "Hints for user passwords" -msgstr "" - -#: passwd.1.xml:148(para) -msgid "" -"The security of a password depends upon the strength of the encryption " -"algorithm and the size of the key space. The legacy UNIX System encryption method is based on the NBS DES algorithm. More " -"recent methods are now recommended (see ). " -"The size of the key space depends upon the randomness of the password which " -"is selected." -msgstr "" - -#: passwd.1.xml:157(para) -msgid "" -"Compromises in password security normally result from careless password " -"selection or handling. For this reason, you should not select a password " -"which appears in a dictionary or which must be written down. The password " -"should also not be a proper name, your license number, birth date, or street " -"address. Any of these may be used as guesses to violate system security." -msgstr "" - -#: passwd.1.xml:166(para) -#, fuzzy -#| msgid "" -#| "You can find advices on how to choose a strong password on http://en." -#| "wikipedia.org/wiki/Password_strength" -msgid "" -"You can find advice on how to choose a strong password on http://en." -"wikipedia.org/wiki/Password_strength" -msgstr "" -"Du kan finde råd om hvordan du vælger en god adgangskode på http://en." -"wikipedia.org/wiki/Password_strength" - -#: passwd.1.xml:175(para) -msgid "The options which apply to the passwd command are:" -msgstr "Tilvalgene som gælder for kommandoen passwd er:" - -#: passwd.1.xml:180(term) faillog.8.xml:96(term) -msgid ", " -msgstr ", " - -#: passwd.1.xml:184(para) -msgid "" -"This option can be used only with and causes show status " -"for all users." -msgstr "" -"Dette tilvalg kan kun bruges med medfører vis status for " -"alle brugere." - -#: passwd.1.xml:191(term) -msgid ", " -msgstr ", " - -#: passwd.1.xml:195(para) -msgid "" -"Delete a user's password (make it empty). This is a quick way to disable a " -"password for an account. It will set the named account passwordless." -msgstr "" -"Slet en brugers adgangskode (gør den tom). Dette er en hurtig måde at " -"deaktivere en adgangskode for en konto. Den vil sætte den navngivne konto " -"uden adgangskode." - -#: passwd.1.xml:203(term) -msgid ", " -msgstr ", " - -#: passwd.1.xml:207(para) -msgid "" -"Immediately expire an account's password. This in effect can force a user to " -"change their password at the user's next login." -msgstr "" -"Angiv øjeblikkelig en kontos adgangskode som udløbet. Dette kan tvinge en " -"bruger til at ændre sin adgangskode ved brugerens næste logind." - -#: passwd.1.xml:220(term) -msgid "" -",  INACTIVE" -msgstr "" -",  INAKTIV" - -#: passwd.1.xml:224(para) -msgid "" -"This option is used to disable an account after the password has been " -"expired for a number of days. After a user account has had an expired " -"password for INACTIVE days, the user may no " -"longer sign on to the account." -msgstr "" -"Denne indstilling bruges til at deaktivere en konto efter at adgangskoden er " -"udløbet i et antal dage. Efter at en brugerkonto har haft en udløbet " -"adgangskode for INAKTIV dage, kan brugeren ikke " -"længere logge ind på kontoen." - -#: passwd.1.xml:233(term) -msgid ", " -msgstr ", " - -#: passwd.1.xml:237(para) -msgid "" -"Indicate password change should be performed only for expired authentication " -"tokens (passwords). The user wishes to keep their non-expired tokens as " -"before." -msgstr "" - -#: passwd.1.xml:245(term) -msgid ", " -msgstr "" - -#: passwd.1.xml:249(para) -msgid "" -"Lock the password of the named account. This option disables a password by " -"changing it to a value which matches no possible encrypted value (it adds a " -"´!´ at the beginning of the password)." -msgstr "" - -#: passwd.1.xml:255(para) -msgid "" -"Note that this does not disable the account. The user may still be able to " -"login using another authentication token (e.g. an SSH key). To disable the " -"account, administrators should use usermod --expiredate 1 " -"(this set the account's expire date to Jan 2, 1970)." -msgstr "" - -#: passwd.1.xml:262(para) -msgid "Users with a locked password are not allowed to change their password." -msgstr "" - -#: passwd.1.xml:269(term) -msgid "" -",  MIN_DAYS" -msgstr "" - -#: passwd.1.xml:273(para) chage.1.xml:174(para) -msgid "" -"Set the minimum number of days between password changes to " -"MIN_DAYS. A value of zero for this field " -"indicates that the user may change their password at any time." -msgstr "" - -#: passwd.1.xml:291(term) -msgid "" -",  " -"REPOSITORY" -msgstr "" - -#: passwd.1.xml:295(para) -msgid "change password in REPOSITORY repository" -msgstr "" - -#: passwd.1.xml:313(term) -msgid ", " -msgstr "" - -#: passwd.1.xml:317(para) -msgid "" -"Display account status information. The status information consists of 7 " -"fields. The first field is the user's login name. The second field indicates " -"if the user account has a locked password (L), has no password (NP), or has " -"a usable password (P). The third field gives the date of the last password " -"change. The next four fields are the minimum age, maximum age, warning " -"period, and inactivity period for the password. These ages are expressed in " -"days." -msgstr "" - -#: passwd.1.xml:331(term) -msgid ", " -msgstr "" - -#: passwd.1.xml:335(para) -msgid "" -"Unlock the password of the named account. This option re-enables a password " -"by changing the password back to its previous value (to the value before " -"using the option)." -msgstr "" - -#: passwd.1.xml:344(term) -msgid "" -",  " -"WARN_DAYS" -msgstr "" - -#: passwd.1.xml:348(para) -msgid "" -"Set the number of days of warning before a password change is required. The " -"WARN_DAYS option is the number of days prior to " -"the password expiring that a user will be warned that their password is " -"about to expire." -msgstr "" - -#: passwd.1.xml:357(term) -msgid "" -",  MAX_DAYS" -msgstr "" - -#: passwd.1.xml:361(para) -msgid "" -"Set the maximum number of days a password remains valid. After " -"MAX_DAYS, the password is required to be changed." -msgstr "" - -#: passwd.1.xml:366(para) chage.1.xml:195(para) -msgid "" -"Passing the number -1 as " -"MAX_DAYS will remove checking a password's " -"validity." -msgstr "" - -#: passwd.1.xml:378(para) -msgid "" -"Password complexity checking may vary from site to site. The user is urged " -"to select a password as complex as he or she feels comfortable with." -msgstr "" - -#: passwd.1.xml:383(para) -msgid "" -"Users may not be able to change their password on a system if NIS is enabled " -"and they are not logged into the NIS server." -msgstr "" - -#: passwd.1.xml:388(para) -msgid "" -"passwd uses PAM to authenticate users and to change their " -"passwords." -msgstr "" - -#: passwd.1.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) -#: gpasswd.1.xml:30(term) chpasswd.8.xml:30(term) chgpasswd.8.xml:30(term) -msgid " (string)" -msgstr "" - -#: passwd.1.xml:32(para) newusers.8.xml:32(para) login.defs.5.xml:32(para) -#: gpasswd.1.xml:32(para) chpasswd.8.xml:32(para) chgpasswd.8.xml:32(para) -msgid "" -"This defines the system default encryption algorithm for encrypting " -"passwords (if no algorithm are specified on the command line)." -msgstr "" - -#: passwd.1.xml:36(para) newusers.8.xml:36(para) login.defs.5.xml:36(para) -#: gpasswd.1.xml:36(para) chpasswd.8.xml:36(para) chgpasswd.8.xml:36(para) -msgid "" -"It can take one of these values: DES (default), " -"MD5, " -"SHA256, SHA512." -msgstr "" - -#: passwd.1.xml:43(para) newusers.8.xml:43(para) login.defs.5.xml:43(para) -#: gpasswd.1.xml:43(para) chpasswd.8.xml:43(para) chgpasswd.8.xml:43(para) -msgid "" -"Note: this parameter overrides the variable." -msgstr "" - -#: passwd.1.xml:47(para) passwd.1.xml:53(para) passwd.1.xml:62(para) -#: newusers.8.xml:47(para) newusers.8.xml:53(para) newusers.8.xml:62(para) -#: login.defs.5.xml:47(para) login.defs.5.xml:53(para) -#: login.defs.5.xml:62(para) gpasswd.1.xml:47(para) gpasswd.1.xml:53(para) -#: gpasswd.1.xml:62(para) chpasswd.8.xml:47(para) chpasswd.8.xml:53(para) -#: chpasswd.8.xml:62(para) chgpasswd.8.xml:47(para) chgpasswd.8.xml:53(para) -#: chgpasswd.8.xml:62(para) -msgid "" -"Note: This only affect the generation of group passwords. The generation of " -"user passwords is done by PAM and subject to the PAM configuration. It is " -"recommended to set this variable consistently with the PAM configuration." -msgstr "" - -#: passwd.1.xml:32(term) newusers.8.xml:32(term) login.defs.5.xml:32(term) -#: gpasswd.1.xml:32(term) chpasswd.8.xml:32(term) chgpasswd.8.xml:32(term) -msgid " (boolean)" -msgstr "" - -#: passwd.1.xml:34(para) newusers.8.xml:34(para) login.defs.5.xml:34(para) -#: gpasswd.1.xml:34(para) chpasswd.8.xml:34(para) chgpasswd.8.xml:34(para) -msgid "" -"Indicate if passwords must be encrypted using the MD5-based algorithm. If " -"set to yes, new passwords will be encrypted using " -"the MD5-based algorithm compatible with the one used by recent releases of " -"FreeBSD. It supports passwords of unlimited length and longer salt strings. " -"Set to no if you need to copy encrypted passwords " -"to other systems which don't understand the new algorithm. Default is " -"no." -msgstr "" - -#: passwd.1.xml:44(para) newusers.8.xml:44(para) login.defs.5.xml:44(para) -#: gpasswd.1.xml:44(para) chpasswd.8.xml:44(para) chgpasswd.8.xml:44(para) -msgid "" -"This variable is superseded by the variable " -"or by any command line option used to configure the encryption algorithm." -msgstr "" - -#: passwd.1.xml:49(para) newusers.8.xml:49(para) login.defs.5.xml:49(para) -#: gpasswd.1.xml:49(para) chpasswd.8.xml:49(para) chgpasswd.8.xml:49(para) -msgid "" -"This variable is deprecated. You should use ." -msgstr "" -"Denne variabel er forældet, du skal bruge ." - -#: passwd.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (boolean)" -msgstr " (boolesk)" - -#: passwd.1.xml:34(para) login.defs.5.xml:34(para) -msgid "Enable additional checks upon password changes." -msgstr "Aktiver yderligere kontroller før ændringer af adgangskode." - -#: passwd.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (boolean)" -msgstr " (boolesk)" - -#: passwd.1.xml:34(para) login.defs.5.xml:34(para) -msgid "Warn about weak passwords (but still allow them) if you are root." -msgstr "" -"Advar om svage adgangskoder (men tillad dem stadig) hvis du er administrator " -"(root)." - -#: passwd.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (number)" -msgstr " (antal)" - -#: passwd.1.xml:34(para) login.defs.5.xml:34(para) -msgid "Maximum number of attempts to change password if rejected (too easy)." -msgstr "Maksimalt antal forsøg at ændre adgangskode hvis afvist (for nemt)." - -#: passwd.1.xml:32(term) login.defs.5.xml:32(term) -msgid " (number)" -msgstr " (antal)" - -#: passwd.1.xml:33(term) login.defs.5.xml:33(term) -msgid " (number)" -msgstr " (antal)" - -#: passwd.1.xml:35(para) login.defs.5.xml:35(para) -msgid "" -"Number of significant characters in the password for crypt(). " -" is 8 by default. Don't change unless your " -"crypt() is better. This is ignored if set to " -"yes." -msgstr "" - -#: passwd.1.xml:30(term) newusers.8.xml:30(term) login.defs.5.xml:30(term) -#: gpasswd.1.xml:30(term) chpasswd.8.xml:30(term) chgpasswd.8.xml:30(term) -msgid " (number)" -msgstr " (antal)" - -#: passwd.1.xml:31(term) newusers.8.xml:31(term) login.defs.5.xml:31(term) -#: gpasswd.1.xml:31(term) chpasswd.8.xml:31(term) chgpasswd.8.xml:31(term) -msgid " (number)" -msgstr "" - -#: passwd.1.xml:33(para) newusers.8.xml:33(para) login.defs.5.xml:33(para) -#: gpasswd.1.xml:33(para) chpasswd.8.xml:33(para) chgpasswd.8.xml:33(para) -msgid "" -"When is set to SHA256 or SHA512, this defines the number " -"of SHA rounds used by the encryption algorithm by default (when the number " -"of rounds is not specified on the command line)." -msgstr "" - -#: passwd.1.xml:40(para) newusers.8.xml:40(para) login.defs.5.xml:40(para) -#: gpasswd.1.xml:40(para) chpasswd.8.xml:40(para) chgpasswd.8.xml:40(para) -msgid "" -"With a lot of rounds, it is more difficult to brute forcing the password. " -"But note also that more CPU resources will be needed to authenticate users." -msgstr "" - -#: passwd.1.xml:45(para) newusers.8.xml:45(para) login.defs.5.xml:45(para) -#: gpasswd.1.xml:45(para) chpasswd.8.xml:45(para) chgpasswd.8.xml:45(para) -msgid "" -"If not specified, the libc will choose the default number of rounds (5000)." -msgstr "" - -#: passwd.1.xml:49(para) newusers.8.xml:49(para) login.defs.5.xml:49(para) -#: gpasswd.1.xml:49(para) chpasswd.8.xml:49(para) chgpasswd.8.xml:49(para) -msgid "The values must be inside the 1000-999,999,999 range." -msgstr "" - -#: passwd.1.xml:52(para) newusers.8.xml:52(para) login.defs.5.xml:52(para) -#: gpasswd.1.xml:52(para) chpasswd.8.xml:52(para) chgpasswd.8.xml:52(para) -msgid "" -"If only one of the or " -" values is set, then this value will be " -"used." -msgstr "" - -#: passwd.1.xml:57(para) newusers.8.xml:57(para) login.defs.5.xml:57(para) -#: gpasswd.1.xml:57(para) chpasswd.8.xml:57(para) chgpasswd.8.xml:57(para) -msgid "" -"If > @@ -341,6 +319,12 @@ databases are reset to avoid reusing the entry from a previously deleted user. + + If this option is not specified, useradd + will also consult the variable in + the /etc/default/useradd if set to no + the user will not be added to the lastlog and faillog databases. + @@ -359,6 +343,11 @@ is not enabled, no home directories are created. + + The directory where the user's home directory is created must + exist and have proper SELinux context and permissions. Otherwise + the user's home directory cannot be created or accessed. + @@ -736,6 +725,12 @@ + /etc/shadow-maint/useradd-pre.d/*, /etc/shadow-maint/useradd-post.d/* + + Run-part files to execute during user addition. The environment variable ACTION will be populated with useradd and SUBJECT with the username. useradd-pre.d will be executed prior to any user addition. useradd-post.d will execute after user addition. If a script exits non-zero then execution will terminate. + + + /etc/skel/ Directory containing default files. diff --git a/man/userdel.8.xml b/man/userdel.8.xml index b086383b..e6f57d4d 100644 --- a/man/userdel.8.xml +++ b/man/userdel.8.xml @@ -1,32 +1,8 @@ Secure user account information. + + /etc/shadow-maint/userdel-pre.d/*, /etc/shadow-maint/userdel-post.d/* + + Run-part files to execute during user deletion. The environment variable ACTION will be populated with userdel and SUBJECT with the username. userdel-pre.d will be executed prior to any user deletion. userdel-post.d will execute after user deletion. If a script exits non-zero then execution will terminate. + + /etc/subgid diff --git a/man/usermod.8.xml b/man/usermod.8.xml index a1d0efd8..d121bfd7 100644 --- a/man/usermod.8.xml +++ b/man/usermod.8.xml @@ -1,32 +1,8 @@ -m option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does - not already exist. + not already exist. If the current home directory does not exist + the new home directory will not be created. @@ -205,6 +182,12 @@ The group ownership of files outside of the user's home directory must be fixed manually. + + The change of the group ownership of files inside of the user's + home directory is also not done if the home dir owner uid is + different from the current or new user id. This is a safety measure + for special home directories such as /. + @@ -267,7 +250,8 @@ Move the content of the user's home directory to the new - location. + location. If the current home directory does not exist + the new home directory will not be created. This option is only valid in combination with the @@ -318,6 +302,17 @@ + + + , + + + + Remove the user from named supplementary group(s). Use only with the + option. + + + ,  CHROOT_DIR @@ -353,7 +348,7 @@ - The name of the user's new login shell. Setting this field to + The path of the user's new login shell. Setting this field to blank causes the system to select the default login shell. @@ -380,6 +375,12 @@ The ownership of files outside of the user's home directory must be fixed manually. + + The change of the user ownership of files inside of the user's + home directory is also not done if the home dir owner uid is + different from the current or new user id. This is a safety measure + for special home directories such as /. + No checks will be performed with regard to the , , diff --git a/man/vipw.8.xml b/man/vipw.8.xml index 810ef597..3e99743c 100644 --- a/man/vipw.8.xml +++ b/man/vipw.8.xml @@ -1,33 +1,9 @@ -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "CHAGE" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "CHAGE" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,13 +45,30 @@ command are: .PP \fB\-d\fR, \fB\-\-lastday\fR\ \&\fILAST_DAY\fR .RS 4 -Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. +Set the number of days since January 1st, 1970 when the password was last changed\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. If the +\fILAST_DAY\fR +is set to +\fI0\fR +the user is forced to change his password on the next log on\&. .RE .PP \fB\-E\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR .RS 4 Set the date or number of days since January 1, 1970 on which the user\*(Aqs account will no longer be accessible\&. The date may also be expressed in the format YYYY\-MM\-DD (or the format more commonly used in your area)\&. A user whose account is locked must contact the system administrator before being able to use the system again\&. .sp +For example the following can be used to set an account to expire in 180 days: +.sp +.if n \{\ +.RS 4 +.\} +.nf + chage \-E $(date \-d +180days +%Y\-%m\-%d) + +.fi +.if n \{\ +.RE +.\} +.sp Passing the number \fI\-1\fR as the @@ -61,7 +78,7 @@ will remove an account expiration date\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-i\fR, \fB\-\-iso8601\fR @@ -84,7 +101,7 @@ will remove an account\*(Aqs inactivity\&. .PP \fB\-l\fR, \fB\-\-list\fR .RS 4 -现实账户年龄信息。 +显示账户年龄信息。 .RE .PP \fB\-m\fR, \fB\-\-mindays\fR\ \&\fIMIN_DAYS\fR @@ -137,6 +154,14 @@ The \fBchage\fR program requires a shadow password file to be available\&. .PP +The chage program will report only the information from the shadow password file\&. This implies that configuration from other sources (e\&.g\&. LDAP or empty password hash field from the passwd file) that affect the user\*(Aqs login will not be shown in the chage output\&. +.PP +The +\fBchage\fR +program will also not report any inconsistency between the shadow and passwd files (e\&.g\&. missing x in the passwd file)\&. The +\fBpwck\fR +can be used to check for this kind of inconsistencies\&. +.PP The \fBchage\fR command is restricted to the root user, except for the diff --git a/man/zh_CN/man1/chfn.1 b/man/zh_CN/man1/chfn.1 index c0a2f2ed..a5d72d47 100644 --- a/man/zh_CN/man1/chfn.1 +++ b/man/zh_CN/man1/chfn.1 @@ -2,12 +2,12 @@ .\" Title: chfn .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "CHFN" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "CHFN" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -85,7 +85,7 @@ directory\&. .PP \fB\-u\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-w\fR, \fB\-\-work\-phone\fR\ \&\fIWORK_PHONE\fR diff --git a/man/zh_CN/man1/chsh.1 b/man/zh_CN/man1/chsh.1 index e9147a74..a2f36a85 100644 --- a/man/zh_CN/man1/chsh.1 +++ b/man/zh_CN/man1/chsh.1 @@ -2,12 +2,12 @@ .\" Title: chsh .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "CHSH" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "CHSH" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,7 +45,7 @@ command are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR diff --git a/man/zh_CN/man1/expiry.1 b/man/zh_CN/man1/expiry.1 index afd3255c..0460fec0 100644 --- a/man/zh_CN/man1/expiry.1 +++ b/man/zh_CN/man1/expiry.1 @@ -2,12 +2,12 @@ .\" Title: expiry .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "EXPIRY" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "EXPIRY" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -55,7 +55,7 @@ Check the password expiration of the current user\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .SH "文件" .PP diff --git a/man/zh_CN/man1/gpasswd.1 b/man/zh_CN/man1/gpasswd.1 index 3b4f3515..bbb9e228 100644 --- a/man/zh_CN/man1/gpasswd.1 +++ b/man/zh_CN/man1/gpasswd.1 @@ -2,12 +2,12 @@ .\" Title: gpasswd .\" Author: Rafal Maszkowski .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GPASSWD" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "GPASSWD" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -89,7 +89,7 @@ from the named .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-Q\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -147,7 +147,9 @@ change the behavior of this tool: It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -196,7 +198,7 @@ or .sp 使用很多轮转,会让暴力破解更加困难。但是需要注意,认证用户时也会需要更多的 CPU 资源。 .sp -如果没有指定,libc 会选择默认的轮转数(5000)。 +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp 值必须在 1000 \- 999,999,999 之间。 .sp diff --git a/man/zh_CN/man1/groups.1 b/man/zh_CN/man1/groups.1 index 4b7982a9..38d0e2cd 100644 --- a/man/zh_CN/man1/groups.1 +++ b/man/zh_CN/man1/groups.1 @@ -2,12 +2,12 @@ .\" Title: groups .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GROUPS" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "GROUPS" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -28,7 +28,7 @@ .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "名称" -groups \- 现实当前组名 +groups \- 显示当前组名 .SH "大纲" .HP \w'\fBgroups\fR\ 'u \fBgroups\fR [\fI用户\fR] diff --git a/man/zh_CN/man1/id.1 b/man/zh_CN/man1/id.1 index 637c0d55..30df3929 100644 --- a/man/zh_CN/man1/id.1 +++ b/man/zh_CN/man1/id.1 @@ -2,12 +2,12 @@ .\" Title: id .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "ID" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "ID" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/login.1 b/man/zh_CN/man1/login.1 index 7ecfde7b..ffbe1164 100644 --- a/man/zh_CN/man1/login.1 +++ b/man/zh_CN/man1/login.1 @@ -2,12 +2,12 @@ .\" Title: login .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "LOGIN" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "LOGIN" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -263,7 +263,7 @@ If defined, this file can inhibit all the usual chatter during the login sequenc .PP \fBISSUE_FILE\fR (string) .RS 4 -如果定义了,此文件将在每次的登录提示之前现实。 +如果定义了,此文件将在每次的登录提示之前显示。 .RE .PP \fBKILLCHAR\fR (number) @@ -311,14 +311,16 @@ If the string contains .PP \fBMAIL_CHECK_ENAB\fR (boolean) .RS 4 -启用登录时检查和现实邮箱状态。 +启用登录时检查和显示邮箱状态。 .sp 如果 shell 的启动文件已经检查了邮件("mailx \-e" 或者其它同功能的工具),您应该禁用它。 .RE .PP \fBMAIL_DIR\fR (string) .RS 4 -邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。 +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -467,7 +469,7 @@ System message of the day file\&. .PP $HOME/\&.hushlogin .RS 4 -阻止现实系统信息。 +阻止显示系统信息。 .RE .PP /etc/login\&.defs diff --git a/man/zh_CN/man1/newgrp.1 b/man/zh_CN/man1/newgrp.1 index c696e0c4..1a142d07 100644 --- a/man/zh_CN/man1/newgrp.1 +++ b/man/zh_CN/man1/newgrp.1 @@ -2,12 +2,12 @@ .\" Title: newgrp .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "NEWGRP" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "NEWGRP" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/passwd.1 b/man/zh_CN/man1/passwd.1 index 5d934a10..d204974c 100644 --- a/man/zh_CN/man1/passwd.1 +++ b/man/zh_CN/man1/passwd.1 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "PASSWD" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "PASSWD" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -122,7 +122,7 @@ and causes show status for all users\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-i\fR, \fB\-\-inactive\fR\ \&\fIINACTIVE\fR @@ -223,7 +223,9 @@ change the behavior of this tool: It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -282,7 +284,7 @@ or .sp 使用很多轮转,会让暴力破解更加困难。但是需要注意,认证用户时也会需要更多的 CPU 资源。 .sp -如果没有指定,libc 会选择默认的轮转数(5000)。 +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp 值必须在 1000 \- 999,999,999 之间。 .sp diff --git a/man/zh_CN/man1/sg.1 b/man/zh_CN/man1/sg.1 index bda6a5ec..62f9a33a 100644 --- a/man/zh_CN/man1/sg.1 +++ b/man/zh_CN/man1/sg.1 @@ -2,12 +2,12 @@ .\" Title: sg .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "SG" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "SG" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man1/su.1 b/man/zh_CN/man1/su.1 index c4d29c1d..3abb8301 100644 --- a/man/zh_CN/man1/su.1 +++ b/man/zh_CN/man1/su.1 @@ -2,12 +2,12 @@ .\" Title: su .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 用户命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "SU" "1" "2020-01-23" "shadow\-utils 4\&.8\&.1" "用户命令" +.TH "SU" "1" "2022-01-02" "shadow\-utils 4\&.11\&.1" "用户命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -305,14 +305,16 @@ If the string contains .PP \fBMAIL_CHECK_ENAB\fR (boolean) .RS 4 -启用登录时检查和现实邮箱状态。 +启用登录时检查和显示邮箱状态。 .sp 如果 shell 的启动文件已经检查了邮件("mailx \-e" 或者其它同功能的工具),您应该禁用它。 .RE .PP \fBMAIL_DIR\fR (string) .RS 4 -邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。 +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/zh_CN/man3/shadow.3 b/man/zh_CN/man3/shadow.3 index cb8e8b6a..e7fa9b68 100644 --- a/man/zh_CN/man3/shadow.3 +++ b/man/zh_CN/man3/shadow.3 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 库函数调用 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "SHADOW" "3" "2020-01-23" "shadow\-utils 4\&.8\&.1" "库函数调用" +.TH "SHADOW" "3" "2022-01-02" "shadow\-utils 4\&.11\&.1" "库函数调用" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/faillog.5 b/man/zh_CN/man5/faillog.5 index 39a982f2..45537303 100644 --- a/man/zh_CN/man5/faillog.5 +++ b/man/zh_CN/man5/faillog.5 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "FAILLOG" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "FAILLOG" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuratio" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/gshadow.5 b/man/zh_CN/man5/gshadow.5 index ac163c80..007fcc59 100644 --- a/man/zh_CN/man5/gshadow.5 +++ b/man/zh_CN/man5/gshadow.5 @@ -2,12 +2,12 @@ .\" Title: gshadow .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GSHADOW" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "GSHADOW" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/limits.5 b/man/zh_CN/man5/limits.5 index 1328a85a..37fca3f5 100644 --- a/man/zh_CN/man5/limits.5 +++ b/man/zh_CN/man5/limits.5 @@ -2,12 +2,12 @@ .\" Title: limits .\" Author: Luca Berra .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "LIMITS" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "LIMITS" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/login.access.5 b/man/zh_CN/man5/login.access.5 index 1e91af42..9853a126 100644 --- a/man/zh_CN/man5/login.access.5 +++ b/man/zh_CN/man5/login.access.5 @@ -2,12 +2,12 @@ .\" Title: login.access .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "LOGIN\&.ACCESS" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "LOGIN\&.ACCESS" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/login.defs.5 b/man/zh_CN/man5/login.defs.5 index 6267e1fc..c93b21e1 100644 --- a/man/zh_CN/man5/login.defs.5 +++ b/man/zh_CN/man5/login.defs.5 @@ -2,12 +2,12 @@ .\" Title: login.defs .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "LOGIN\&.DEFS" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "LOGIN\&.DEFS" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -126,7 +126,9 @@ If set to It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -223,6 +225,15 @@ The default value for \fBGID_MAX\fR) is 1000 (resp\&. 60000)\&. .RE .PP +\fBHMAC_CRYPTO_ALGO\fR (string) +.RS 4 +Used to select the HMAC cryptography algorithm that the pam_timestamp module is going to use to calculate the keyed\-hash message authentication code\&. +.sp +Note: Check +hmac(3) +to see the possible algorithms that are available in your system\&. +.RE +.PP \fBHOME_MODE\fR (number) .RS 4 The mode for new home directories\&. If not specified, the @@ -242,7 +253,7 @@ If defined, this file can inhibit all the usual chatter during the login sequenc .PP \fBISSUE_FILE\fR (string) .RS 4 -如果定义了,此文件将在每次的登录提示之前现实。 +如果定义了,此文件将在每次的登录提示之前显示。 .RE .PP \fBKILLCHAR\fR (number) @@ -299,14 +310,16 @@ If the string contains .PP \fBMAIL_CHECK_ENAB\fR (boolean) .RS 4 -启用登录时检查和现实邮箱状态。 +启用登录时检查和显示邮箱状态。 .sp 如果 shell 的启动文件已经检查了邮件("mailx \-e" 或者其它同功能的工具),您应该禁用它。 .RE .PP \fBMAIL_DIR\fR (string) .RS 4 -邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。 +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -372,6 +385,11 @@ If defined, ":" delimited list of "message of the day" files to be displayed upo If defined, name of file whose presence will inhibit non\-root logins\&. The contents of this file should be a message indicating why logins are inhibited\&. .RE .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBOBSCURE_CHECKS_ENAB\fR (boolean) .RS 4 对密码更改启用附加检查。 @@ -394,7 +412,7 @@ If defined, name of file whose presence will inhibit non\-root logins\&. The con .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -两次更改密码时间的最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定,假定为 \-1,将会禁用这个限制。 +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -442,7 +460,7 @@ or .sp 使用很多轮转,会让暴力破解更加困难。但是需要注意,认证用户时也会需要更多的 CPU 资源。 .sp -如果没有指定,libc 会选择默认的轮转数(5000)。 +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp 值必须在 1000 \- 999,999,999 之间。 .sp diff --git a/man/zh_CN/man5/passwd.5 b/man/zh_CN/man5/passwd.5 index 6bd853b3..9dddad4e 100644 --- a/man/zh_CN/man5/passwd.5 +++ b/man/zh_CN/man5/passwd.5 @@ -2,12 +2,12 @@ .\" Title: passwd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "PASSWD" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "PASSWD" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -145,8 +145,8 @@ for details on how this string is interpreted\&. If the password field contains some string that is not a valid result of \fBcrypt\fR(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in the system by other means)\&. .PP -The comment field is used by various system utilities, such as -\fBfinger\fR(1)\&. +The comment field, also known as the gecos field, is used by various system utilities, such as +\fBfinger\fR(1)\&. The use of an ampersand here will be replaced by the capitalised login name when the field is used or displayed by such system utilities\&. .PP The home directory field provides the name of the initial working directory\&. The \fBlogin\fR diff --git a/man/zh_CN/man5/porttime.5 b/man/zh_CN/man5/porttime.5 index 3fcc9512..2c0b1f0c 100644 --- a/man/zh_CN/man5/porttime.5 +++ b/man/zh_CN/man5/porttime.5 @@ -2,12 +2,12 @@ .\" Title: porttime .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "PORTTIME" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "PORTTIME" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man5/shadow.5 b/man/zh_CN/man5/shadow.5 index 4c9fe5cd..c6c2acd0 100644 --- a/man/zh_CN/man5/shadow.5 +++ b/man/zh_CN/man5/shadow.5 @@ -2,12 +2,12 @@ .\" Title: shadow .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "SHADOW" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "SHADOW" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -61,7 +61,7 @@ If the password field contains some string that is not a valid result of .PP \fB最后一次更改密码的日期\fR .RS 4 -最近一次更改密码的时间,表示从1970年1月1日开始的天数。 +The date of the last password change, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp The value 0 has a special meaning, which is that the user should change her password the next time she will log in the system\&. .sp @@ -72,7 +72,7 @@ The value 0 has a special meaning, which is that the user should change her pass .RS 4 最小密码年龄是指,用户一次更改密码之后,要等多长时间才再次被允许更改密码。 .sp -空字段或 0 表示没有最小密码年龄。 +An empty field and value 0 mean that there is no minimum password age\&. .RE .PP \fB最大密码年龄\fR @@ -97,14 +97,14 @@ The value 0 has a special meaning, which is that the user should change her pass .RS 4 密码过期(查看上边的密码最大年龄)后,仍然接受此密码的天数(在此期间,用户应该在下次登录时修改密码)。 .sp -密码到期并且过了这个宽限期之后,使用用户的当前的密码将会不能登录。用户需要联系系统管理员。 +After expiration of the password and this expiration period is elapsed, no login is possible for the user\&. The user should contact her administrator\&. .sp 空字段表示没有强制密码过期。 .RE .PP \fB账户过期日期\fR .RS 4 -账户过期的日期,表示从1970年1月1日开始的天数。 +The date of expiration of the account, expressed as the number of days since Jan 1, 1970 00:00 UTC\&. .sp Note that an account expiration differs from a password expiration\&. In case of an account expiration, the user shall not be allowed to login\&. In case of a password expiration, the user is not allowed to login using her password\&. .sp diff --git a/man/zh_CN/man5/suauth.5 b/man/zh_CN/man5/suauth.5 index 1a1de530..7efdb752 100644 --- a/man/zh_CN/man5/suauth.5 +++ b/man/zh_CN/man5/suauth.5 @@ -2,12 +2,12 @@ .\" Title: suauth .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 -.\" Manual: 文件格式和转化 -.\" Source: shadow-utils 4.8.1 +.\" Date: 2022-01-02 +.\" Manual: File Formats and Configuration Files +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "SUAUTH" "5" "2020-01-23" "shadow\-utils 4\&.8\&.1" "文件格式和转化" +.TH "SUAUTH" "5" "2022-01-02" "shadow\-utils 4\&.11\&.1" "File Formats and Configuration" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/chgpasswd.8 b/man/zh_CN/man8/chgpasswd.8 index ff0204e9..869433e0 100644 --- a/man/zh_CN/man8/chgpasswd.8 +++ b/man/zh_CN/man8/chgpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chgpasswd .\" Author: Thomas K\(/loczko .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "CHGPASSWD" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "CHGPASSWD" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -73,7 +73,7 @@ command are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-m\fR, \fB\-\-md5\fR @@ -121,7 +121,9 @@ change the behavior of this tool: It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -170,7 +172,7 @@ or .sp 使用很多轮转,会让暴力破解更加困难。但是需要注意,认证用户时也会需要更多的 CPU 资源。 .sp -如果没有指定,libc 会选择默认的轮转数(5000)。 +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp 值必须在 1000 \- 999,999,999 之间。 .sp diff --git a/man/zh_CN/man8/chpasswd.8 b/man/zh_CN/man8/chpasswd.8 index b26ed565..3de93bb9 100644 --- a/man/zh_CN/man8/chpasswd.8 +++ b/man/zh_CN/man8/chpasswd.8 @@ -2,12 +2,12 @@ .\" Title: chpasswd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "CHPASSWD" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "CHPASSWD" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -89,7 +89,7 @@ variables of .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-m\fR, \fB\-\-md5\fR @@ -139,7 +139,9 @@ change the behavior of this tool: It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -173,7 +175,7 @@ or .sp 使用很多轮转,会让暴力破解更加困难。但是需要注意,认证用户时也会需要更多的 CPU 资源。 .sp -如果没有指定,libc 会选择默认的轮转数(5000)。 +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp 值必须在 1000 \- 999,999,999 之间。 .sp diff --git a/man/zh_CN/man8/faillog.8 b/man/zh_CN/man8/faillog.8 index 50b154bf..58075793 100644 --- a/man/zh_CN/man8/faillog.8 +++ b/man/zh_CN/man8/faillog.8 @@ -2,12 +2,12 @@ .\" Title: faillog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "FAILLOG" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "FAILLOG" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -66,7 +66,7 @@ options, the users\*(Aq records are changed, even if the user does not exist on .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-l\fR, \fB\-\-lock\-secs\fR\ \&\fISEC\fR diff --git a/man/zh_CN/man8/groupadd.8 b/man/zh_CN/man8/groupadd.8 index f150550e..89a08c50 100644 --- a/man/zh_CN/man8/groupadd.8 +++ b/man/zh_CN/man8/groupadd.8 @@ -2,12 +2,12 @@ .\" Title: groupadd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GROUPADD" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "GROUPADD" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,7 @@ description\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-K\fR, \fB\-\-key\fR\ \&\fIKEY\fR=\fIVALUE\fR @@ -132,6 +132,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "配置文件" .PP The following configuration variables in @@ -229,14 +243,13 @@ invalid argument to option .PP \fI4\fR .RS 4 -GID not unique (when -\fB\-o\fR -not used) +GID is already used (when called without +\fB\-o\fR) .RE .PP \fI9\fR .RS 4 -group name not unique +group name is already used .RE .PP \fI10\fR diff --git a/man/zh_CN/man8/groupdel.8 b/man/zh_CN/man8/groupdel.8 index dd5804de..3b3e0777 100644 --- a/man/zh_CN/man8/groupdel.8 +++ b/man/zh_CN/man8/groupdel.8 @@ -2,12 +2,12 @@ .\" Title: groupdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GROUPDEL" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "GROUPDEL" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -44,9 +44,14 @@ The options which apply to the \fBgroupdel\fR command are: .PP +\fB\-f\fR, \fB\-\-force\fR +.RS 4 +This option forces the removal of the group, even if there\*(Aqs some user having the group as the primary one\&. +.RE +.PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR diff --git a/man/zh_CN/man8/groupmems.8 b/man/zh_CN/man8/groupmems.8 index fdfe2c38..e94fc5da 100644 --- a/man/zh_CN/man8/groupmems.8 +++ b/man/zh_CN/man8/groupmems.8 @@ -2,12 +2,12 @@ .\" Title: groupmems .\" Author: George Kraft, IV .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GROUPMEMS" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "GROUPMEMS" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -82,7 +82,7 @@ file, a new entry will be created\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-l\fR, \fB\-\-list\fR diff --git a/man/zh_CN/man8/groupmod.8 b/man/zh_CN/man8/groupmod.8 index 9701a5e4..82c95beb 100644 --- a/man/zh_CN/man8/groupmod.8 +++ b/man/zh_CN/man8/groupmod.8 @@ -2,12 +2,12 @@ .\" Title: groupmod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GROUPMOD" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "GROUPMOD" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -45,6 +45,11 @@ The options which apply to the \fBgroupmod\fR command are: .PP +\fB\-a\fR, \fB\-\-append\fR\ \&\fIGID\fR +.RS 4 +If group members are specified with \-U, append them to the existing member list, rather than replacing it\&. +.RE +.PP \fB\-g\fR, \fB\-\-gid\fR\ \&\fIGID\fR .RS 4 The group ID of the given @@ -74,7 +79,7 @@ from .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-n\fR, \fB\-\-new\-name\fR\ \&\fINEW_GROUP\fR @@ -123,6 +128,20 @@ directory and use the configuration files from the \fIPREFIX_DIR\fR directory\&. This option does not chroot and is intended for preparing a cross\-compilation target\&. Some limitations: NIS and LDAP users/groups are not verified\&. PAM authentication is using the host files\&. No SELINUX support\&. .RE +.PP +\fB\-U\fR, \fB\-\-users\fR +.RS 4 +A list of usernames to add as members of the group\&. +.sp +The default behavior (if the +\fB\-g\fR, +\fB\-N\fR, and +\fB\-U\fR +options are not specified) is defined by the +\fBUSERGROUPS_ENAB\fR +variable in +/etc/login\&.defs\&. +.RE .SH "配置文件" .PP The following configuration variables in @@ -187,7 +206,7 @@ E_BAD_ARG: invalid argument to option .PP \fI4\fR .RS 4 -E_GID_IN_USE: specified group doesn\*(Aqt exist +E_GID_IN_USE: group id already in use .RE .PP \fI6\fR diff --git a/man/zh_CN/man8/grpck.8 b/man/zh_CN/man8/grpck.8 index eb8f146e..b3e80b1b 100644 --- a/man/zh_CN/man8/grpck.8 +++ b/man/zh_CN/man8/grpck.8 @@ -2,12 +2,12 @@ .\" Title: grpck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "GRPCK" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "GRPCK" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -130,7 +130,7 @@ command are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-r\fR, \fB\-\-read\-only\fR @@ -159,6 +159,14 @@ and /etc/gshadow by GID\&. .RE .PP +\fB\-S\fR, \fB\-\-silence\-warnings\fR +.RS 4 +Suppress more controversial warnings, in particular warnings about inconsistency between group members listed in +/etc/group +and +/etc/ghadow\&. +.RE +.PP By default, \fBgrpck\fR operates on diff --git a/man/zh_CN/man8/lastlog.8 b/man/zh_CN/man8/lastlog.8 index 52dcc9c2..175e9237 100644 --- a/man/zh_CN/man8/lastlog.8 +++ b/man/zh_CN/man8/lastlog.8 @@ -2,12 +2,12 @@ .\" Title: lastlog .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "LASTLOG" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "LASTLOG" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -64,7 +64,7 @@ Clear lastlog record of a user\&. This option can be used only together with .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -91,7 +91,7 @@ Print the lastlog records more recent than .PP \fB\-u\fR, \fB\-\-user\fR\ \&\fILOGIN\fR|\fIRANGE\fR .RS 4 -现实指定用户的最近登录记录。 +显示指定用户的最近登录记录。 .sp The users can be specified by a login name, a numerical user ID, or a \fIRANGE\fR @@ -135,3 +135,7 @@ Database times of previous user logins\&. .SH "CAVEATS" .PP Large gaps in UID numbers will cause the lastlog program to run longer with no output to the screen (i\&.e\&. if in lastlog database there is no entries for users with UID between 170 and 800 lastlog will appear to hang as it processes entries with UIDs 171\-799)\&. +.PP +Having high UIDs can create problems when handling the + /var/log/lastlog +with external tools\&. Although the actual file is sparse and does not use too much space, certain applications are not designed to identify sparse files by default and may require a specific option to handle them\&. diff --git a/man/zh_CN/man8/logoutd.8 b/man/zh_CN/man8/logoutd.8 index d9c36e70..8f21b9ce 100644 --- a/man/zh_CN/man8/logoutd.8 +++ b/man/zh_CN/man8/logoutd.8 @@ -2,12 +2,12 @@ .\" Title: logoutd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "LOGOUTD" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "LOGOUTD" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/newusers.8 b/man/zh_CN/man8/newusers.8 index 190defa6..25c2c21b 100644 --- a/man/zh_CN/man8/newusers.8 +++ b/man/zh_CN/man8/newusers.8 @@ -2,12 +2,12 @@ .\" Title: newusers .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "NEWUSERS" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "NEWUSERS" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -99,7 +99,9 @@ to be used as the primary group ID for the user and GID for the new group\&. .RS 4 此字段用于定义用户的主目录。 .sp -如果此字段指定的不是现有的目录,将会创建指定的目录,所有权设置为创建或更新的用户及其主组。 +If this field does not specify an existing directory, the specified directory is created, with ownership set to the user being created or updated and its primary group\&. Note that +\fInewusers does not create parent directories \fR +of the new user\*(Aqs home directory\&. The newusers command will fail to create the home directory if the parent directories do not exist, and will send a message to stderr informing the user of the failure\&. The newusers command will not halt or return a failure to the calling shell if it fails to create the home directory, it will continue to process the batch of new users specified\&. .sp If the home directory of an existing user is changed, \fBnewusers\fR @@ -135,7 +137,7 @@ Allow names that do not conform to standards\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-r\fR, \fB\-\-system\fR @@ -193,7 +195,9 @@ change the behavior of this tool: It can take one of these values: \fIDES\fR (default), -\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. +\fIMD5\fR, \fISHA256\fR, \fISHA512\fR\&. MD5 and DES should not be used for new hashes, see +crypt(5) +for recommendations\&. .sp Note: this parameter overrides the \fBMD5_CRYPT_ENAB\fR @@ -263,7 +267,7 @@ This variable is deprecated\&. You should use .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -两次更改密码时间的最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定,假定为 \-1,将会禁用这个限制。 +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -282,7 +286,7 @@ or .sp 使用很多轮转,会让暴力破解更加困难。但是需要注意,认证用户时也会需要更多的 CPU 资源。 .sp -如果没有指定,libc 会选择默认的轮转数(5000)。 +If not specified, the libc will choose the default number of rounds (5000), which is orders of magnitude too low for modern hardware\&. .sp 值必须在 1000 \- 999,999,999 之间。 .sp diff --git a/man/zh_CN/man8/nologin.8 b/man/zh_CN/man8/nologin.8 index d07348f3..35ca8138 100644 --- a/man/zh_CN/man8/nologin.8 +++ b/man/zh_CN/man8/nologin.8 @@ -2,12 +2,12 @@ .\" Title: nologin .\" Author: Nicolas Fran\(,cois .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "NOLOGIN" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "NOLOGIN" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/pwck.8 b/man/zh_CN/man8/pwck.8 index 8544184f..aa01992f 100644 --- a/man/zh_CN/man8/pwck.8 +++ b/man/zh_CN/man8/pwck.8 @@ -2,12 +2,12 @@ .\" Title: pwck .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "PWCK" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "PWCK" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -200,7 +200,7 @@ Allow names that do not conform to standards\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-q\fR, \fB\-\-quiet\fR @@ -249,6 +249,11 @@ The following configuration variables in /etc/login\&.defs change the behavior of this tool: .PP +\fBNONEXISTENT\fR (string) +.RS 4 +If a system account intentionally does not have a home directory that exists, this string can be provided in the /etc/passwd entry for the account to indicate this\&. The result is that pwck will not emit a spurious warning for this account\&. +.RE +.PP \fBPASS_MAX_DAYS\fR (number) .RS 4 一个密码可以使用的最大天数。如果密码比这旧,将会强迫更改密码。如果不指定,就假定为 \-1,这会禁用这个限制。 @@ -256,7 +261,7 @@ change the behavior of this tool: .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -两次更改密码时间的最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定,假定为 \-1,将会禁用这个限制。 +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/zh_CN/man8/pwconv.8 b/man/zh_CN/man8/pwconv.8 index 0b6f41e3..3112e7f1 100644 --- a/man/zh_CN/man8/pwconv.8 +++ b/man/zh_CN/man8/pwconv.8 @@ -2,12 +2,12 @@ .\" Title: pwconv .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "PWCONV" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "PWCONV" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -119,7 +119,7 @@ commands are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR @@ -173,7 +173,7 @@ change the behavior of .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -两次更改密码时间的最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定,假定为 \-1,将会禁用这个限制。 +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) diff --git a/man/zh_CN/man8/sulogin.8 b/man/zh_CN/man8/sulogin.8 index a8acbf7d..13550bbb 100644 --- a/man/zh_CN/man8/sulogin.8 +++ b/man/zh_CN/man8/sulogin.8 @@ -2,12 +2,12 @@ .\" Title: sulogin .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "SULOGIN" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "SULOGIN" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- diff --git a/man/zh_CN/man8/useradd.8 b/man/zh_CN/man8/useradd.8 index ea0f7b15..d9a51a30 100644 --- a/man/zh_CN/man8/useradd.8 +++ b/man/zh_CN/man8/useradd.8 @@ -2,12 +2,12 @@ .\" Title: useradd .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "USERADD" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "USERADD" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -97,9 +97,11 @@ as the value for the user\*(Aqs login directory\&. The default is to append the \fILOGIN\fR name to \fIBASE_DIR\fR -and use that as the login directory name\&. The directory +and use that as the login directory name\&. If the directory \fIHOME_DIR\fR -does not have to exist but will not be created if it is missing\&. +does not exist, then it will be created unless the +\fB\-M\fR +option is specified\&. .RE .PP \fB\-D\fR, \fB\-\-defaults\fR @@ -134,7 +136,7 @@ variable in .PP \fB\-g\fR, \fB\-\-gid\fR\ \&\fIGROUP\fR .RS 4 -用户初始登陆组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。 +用户初始登录组的组名或号码。组名必须已经存在。组号码必须指代已经存在的组。 .sp If not specified, the behavior of \fBuseradd\fR @@ -164,7 +166,7 @@ option\&. The default is for the user to belong only to the initial group\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-k\fR, \fB\-\-skel\fR\ \&\fISKEL_DIR\fR @@ -211,6 +213,14 @@ options can be specified, e\&.g\&.: 不要将用户添加到最近登录和登录失败数据库。 .sp By default, the user\*(Aqs entries in the lastlog and faillog databases are reset to avoid reusing the entry from a previously deleted user\&. +.sp +If this option is not specified, +\fBuseradd\fR +will also consult the variable +\fBLOG_INIT\fR +in the +/etc/default/useradd +if set to no the user will not be added to the lastlog and faillog databases\&. .RE .PP \fB\-m\fR, \fB\-\-create\-home\fR @@ -222,6 +232,8 @@ option) will be copied to the home directory\&. By default, if this option is not specified and \fBCREATE_HOME\fR is not enabled, no home directories are created\&. +.sp +The directory where the user\*(Aqs home directory is created must exist and have proper SELinux context and permissions\&. Otherwise the user\*(Aqs home directory cannot be created or accessed\&. .RE .PP \fB\-M\fR, \fB\-\-no\-create\-home\fR @@ -351,7 +363,7 @@ variable in .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -用户登陆的 SELinux 用户。默认为留空,这会造成系统选择默认的 SELinux 用户。 +用户登录的 SELinux 用户。默认为留空,这会造成系统选择默认的 SELinux 用户。 .RE .SS "更改默认值" .PP @@ -492,7 +504,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。 +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -539,7 +553,7 @@ Maximum members per group entry\&. When the maximum is reached, a new group entr .PP \fBPASS_MIN_DAYS\fR (number) .RS 4 -两次更改密码时间的最小间隔。将会拒绝任何早于此的更改密码的尝试。如果不指定,假定为 \-1,将会禁用这个限制。 +The minimum number of days allowed between password changes\&. Any password changes attempted sooner than this will be rejected\&. If not specified, 0 will be assumed (which disables the restriction)\&. .RE .PP \fBPASS_WARN_AGE\fR (number) @@ -693,6 +707,20 @@ will create by default a group with the name of the user\&. 账户创建的默认值。 .RE .PP +/etc/shadow\-maint/useradd\-pre\&.d/*, /etc/shadow\-maint/useradd\-post\&.d/* +.RS 4 +Run\-part files to execute during user addition\&. The environment variable +\fBACTION\fR +will be populated with useradd and +\fBSUBJECT\fR +with the +\fBusername\fR\&. +useradd\-pre\&.d +will be executed prior to any user addition\&. +useradd\-post\&.d +will execute after user addition\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/skel/ .RS 4 包含默认文件的目录。 diff --git a/man/zh_CN/man8/userdel.8 b/man/zh_CN/man8/userdel.8 index 3c914323..3606bb39 100644 --- a/man/zh_CN/man8/userdel.8 +++ b/man/zh_CN/man8/userdel.8 @@ -2,12 +2,12 @@ .\" Title: userdel .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "USERDEL" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "USERDEL" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -62,7 +62,7 @@ This option is dangerous and may leave your system in an inconsistent state\&. .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-r\fR, \fB\-\-remove\fR @@ -106,7 +106,9 @@ change the behavior of this tool: .PP \fBMAIL_DIR\fR (string) .RS 4 -邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。 +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) @@ -221,6 +223,21 @@ Shadow 密码套件配置。 安全用户账户信息。 .RE .PP +/etc/shadow\-maint/userdel\-pre\&.d/*, /etc/shadow\-maint/userdel\-post\&.d/* +.RS 4 +Run\-part files to execute during user deletion\&. The environment variable +\fBACTION\fR +will be populated with +\fBuserdel\fR +and +\fBSUBJECT\fR +with the username\&. +userdel\-pre\&.d +will be executed prior to any user deletion\&. +userdel\-post\&.d +will execute after user deletion\&. If a script exits non\-zero then execution will terminate\&. +.RE +.PP /etc/subgid .RS 4 Per user subordinate group IDs\&. diff --git a/man/zh_CN/man8/usermod.8 b/man/zh_CN/man8/usermod.8 index 270df0aa..4b0b6a2a 100644 --- a/man/zh_CN/man8/usermod.8 +++ b/man/zh_CN/man8/usermod.8 @@ -2,12 +2,12 @@ .\" Title: usermod .\" Author: Julianne Frances Haugh .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "USERMOD" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "USERMOD" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -68,7 +68,7 @@ utility\&. .sp If the \fB\-m\fR -option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. +option is given, the contents of the current home directory will be moved to the new home directory, which is created if it does not already exist\&. If the current home directory does not exist the new home directory will not be created\&. .RE .PP \fB\-e\fR, \fB\-\-expiredate\fR\ \&\fIEXPIRE_DATE\fR @@ -107,6 +107,9 @@ entry will be created if there were none\&. 用户主目录中,属于原来的主组的文件将转交新组所有。 .sp 主目录之外的文件所属的组必须手动修改。 +.sp +The change of the group ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. .RE .PP \fB\-G\fR, \fB\-\-groups\fR\ \&\fIGROUP1\fR[\fI,GROUP2,\&.\&.\&.\fR[\fI,GROUPN\fR]]] @@ -143,7 +146,7 @@ to .PP \fB\-m\fR, \fB\-\-move\-home\fR .RS 4 -将用户的主目录移动到新位置。 +Move the content of the user\*(Aqs home directory to the new location\&. If the current home directory does not exist the new home directory will not be created\&. .sp This option is only valid in combination with the \fB\-d\fR @@ -172,6 +175,13 @@ This option is not recommended because the password (or encrypted password) will 您应该确保密码符合系统的密码政策。 .RE .PP +\fB\-r\fR, \fB\-\-remove\fR +.RS 4 +Remove the user from named supplementary group(s)\&. Use only with the +\fB\-G\fR +option\&. +.RE +.PP \fB\-R\fR, \fB\-\-root\fR\ \&\fICHROOT_DIR\fR .RS 4 Apply changes in the @@ -192,7 +202,7 @@ directory\&. This option does not chroot and is intended for preparing a cross\- .PP \fB\-s\fR, \fB\-\-shell\fR\ \&\fISHELL\fR .RS 4 -用户的新登录 shell 的名称。将此字段设置为空会让系统选择默认的登录 shell。 +The path of the user\*(Aqs new login shell\&. Setting this field to blank causes the system to select the default login shell\&. .RE .PP \fB\-u\fR, \fB\-\-uid\fR\ \&\fIUID\fR @@ -207,6 +217,9 @@ option is used\&. The value must be non\-negative\&. .sp 用户主目录之外文件所有权必须手动修复。 .sp +The change of the user ownership of files inside of the user\*(Aqs home directory is also not done if the home dir owner uid is different from the current or new user id\&. This is a safety measure for special home directories such as +/\&. +.sp No checks will be performed with regard to the \fBUID_MIN\fR, \fBUID_MAX\fR, @@ -294,7 +307,7 @@ from /etc/login\&.defs\&. .PP \fB\-Z\fR, \fB\-\-selinux\-user\fR\ \&\fISEUSER\fR .RS 4 -用户登陆的 SELinux 用户。 +用户登录的 SELinux 用户。 .sp A blank \fISEUSER\fR @@ -332,7 +345,9 @@ option present in the configuration means that there is no user ID limit for wri .PP \fBMAIL_DIR\fR (string) .RS 4 -邮箱目录。修改或删除用户账户时需要处理邮箱,如果没有指定,将使用编译时指定的默认值。 +The mail spool directory\&. This is needed to manipulate the mailbox when its corresponding user account is modified or deleted\&. If not specified, a compile\-time default is used\&. The parameter CREATE_MAIL_SPOOL in +/etc/default/useradd +determines whether the mail spool should be created\&. .RE .PP \fBMAIL_FILE\fR (string) diff --git a/man/zh_CN/man8/vipw.8 b/man/zh_CN/man8/vipw.8 index 971d955e..d091f108 100644 --- a/man/zh_CN/man8/vipw.8 +++ b/man/zh_CN/man8/vipw.8 @@ -2,12 +2,12 @@ .\" Title: vipw .\" Author: Marek Micha\(/lkiewicz .\" Generator: DocBook XSL Stylesheets v1.79.1 -.\" Date: 2020-01-23 +.\" Date: 2022-01-02 .\" Manual: 系统管理命令 -.\" Source: shadow-utils 4.8.1 +.\" Source: shadow-utils 4.11.1 .\" Language: Chinese Simplified .\" -.TH "VIPW" "8" "2020-01-23" "shadow\-utils 4\&.8\&.1" "系统管理命令" +.TH "VIPW" "8" "2022-01-02" "shadow\-utils 4\&.11\&.1" "系统管理命令" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- @@ -67,7 +67,7 @@ commands are: .PP \fB\-h\fR, \fB\-\-help\fR .RS 4 -现实帮助信息并退出。 +显示帮助信息并退出。 .RE .PP \fB\-p\fR, \fB\-\-passwd\fR diff --git a/man/zh_TW/Makefile.in b/man/zh_TW/Makefile.in index 91a7be2f..49af90f7 100644 --- a/man/zh_TW/Makefile.in +++ b/man/zh_TW/Makefile.in @@ -89,8 +89,14 @@ build_triplet = @build@ host_triplet = @host@ subdir = man/zh_TW ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -180,7 +186,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -209,9 +214,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -249,7 +259,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ diff --git a/man/zh_TW/man8/chpasswd.8 b/man/zh_TW/man8/chpasswd.8 index 068cf95c..43cff090 100644 --- a/man/zh_TW/man8/chpasswd.8 +++ b/man/zh_TW/man8/chpasswd.8 @@ -1,30 +1,7 @@ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .\"; 中文版版權所有 soloman, Laser www.linuxforum.net 2000 .\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. .\" .TH CHPASSWD 8 .SH NAME diff --git a/man/zh_TW/man8/groupadd.8 b/man/zh_TW/man8/groupadd.8 index b88cb0a8..986d5b0b 100644 --- a/man/zh_TW/man8/groupadd.8 +++ b/man/zh_TW/man8/groupadd.8 @@ -1,30 +1,6 @@ .\" $Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .TH GROUPADD 8 .SH 名稱 groupadd \- 建 立 新 群 組 diff --git a/man/zh_TW/man8/groupdel.8 b/man/zh_TW/man8/groupdel.8 index ad79a2d8..9fc2b9f8 100644 --- a/man/zh_TW/man8/groupdel.8 +++ b/man/zh_TW/man8/groupdel.8 @@ -1,30 +1,6 @@ .\" $Id$ -.\" Copyright 1991 - 1993, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .TH GROUPDEL 8 .SH 名稱 groupdel \- 刪除群組 diff --git a/man/zh_TW/man8/groupmod.8 b/man/zh_TW/man8/groupmod.8 index 2c1dae7c..d41d0cc8 100644 --- a/man/zh_TW/man8/groupmod.8 +++ b/man/zh_TW/man8/groupmod.8 @@ -1,30 +1,6 @@ .\" $Id$ -.\" Copyright 1991, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1991, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .TH GROUPMOD 8 .SH 名稱 groupmod \- 修 改 群 組 diff --git a/man/zh_TW/man8/useradd.8 b/man/zh_TW/man8/useradd.8 index a0bfd0b4..2eb2d754 100644 --- a/man/zh_TW/man8/useradd.8 +++ b/man/zh_TW/man8/useradd.8 @@ -1,30 +1,6 @@ .\" $Id$ -.\" Copyright 1991 \- 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1991 \- 1994, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .TH USERADD 8 .SH 名 稱 useradd \- 帳 號 建 立 或 更 新 新 使 用 者 的 資 訊 diff --git a/man/zh_TW/man8/userdel.8 b/man/zh_TW/man8/userdel.8 index 1a255d55..ec891f4a 100644 --- a/man/zh_TW/man8/userdel.8 +++ b/man/zh_TW/man8/userdel.8 @@ -1,30 +1,6 @@ .\" $Id$ -.\" Copyright 1991 \- 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: 1991 \- 1994, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .TH USERDEL 8 .SH 名稱 userdel \- 刪 除 使 用 者 帳 號 及 相 關 檔 案 diff --git a/man/zh_TW/man8/usermod.8 b/man/zh_TW/man8/usermod.8 index 1c527859..d6bae810 100644 --- a/man/zh_TW/man8/usermod.8 +++ b/man/zh_TW/man8/usermod.8 @@ -1,30 +1,6 @@ .\" $Id$ -.\" Copyright 1991 \- 1994, Julianne Frances Haugh -.\" All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of Julianne F. Haugh nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY JULIE HAUGH AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL JULIE HAUGH OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. +.\" SPDX-FileCopyrightText: \" Copyright 1991 \- 1994, Julianne Frances Haugh +.\" SPDX-License-Identifier: BSD-3-Clause .TH USERMOD 8 .SH 名稱 usermod \- 修 改 使 用 者 帳 號 diff --git a/po/POTFILES.in b/po/POTFILES.in index df761283..61b79dbd 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -41,6 +41,7 @@ libmisc/cleanup_group.c libmisc/cleanup_user.c libmisc/console.c libmisc/copydir.c +libmisc/date_to_str.c libmisc/entry.c libmisc/env.c libmisc/failure.c diff --git a/po/bs.po b/po/bs.po index 261e2c75..8b01ff44 100644 --- a/po/bs.po +++ b/po/bs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2004-05-09 12:03+0100\n" "Last-Translator: Safir Šećerović \n" "Language-Team: Bosnian \n" @@ -520,12 +520,23 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "nepoznata grupa: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "" @@ -760,6 +771,10 @@ msgstr "Kućni telefon" msgid "Other" msgstr "Ostalo" +#, c-format +msgid "%s: fields too long\n" +msgstr "" + msgid "Cannot change ID to root.\n" msgstr "" @@ -811,10 +826,6 @@ msgstr "" msgid "Changing the user information for %s\n" msgstr "" -#, c-format -msgid "%s: fields too long\n" -msgstr "" - #, c-format msgid "" "Usage: %s [options]\n" @@ -835,8 +846,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, c-format @@ -1109,7 +1120,14 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" +msgstr "" + +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, c-format +msgid "Invalid member username %s\n" msgstr "" #, fuzzy, c-format @@ -1216,6 +1234,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1265,6 +1289,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "" @@ -1342,9 +1370,6 @@ msgstr "%s: nepoznat član %s\n" msgid "Usage: id [-a]\n" msgstr "" -msgid "Usage: id\n" -msgstr "" - msgid " groups=" msgstr "" @@ -1371,7 +1396,8 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" +#, c-format +msgid "Username Port From%*sLatest\n" msgstr "" msgid "Username Port Latest" @@ -1496,10 +1522,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "" - #, c-format msgid " from %.*s" msgstr "" @@ -1637,6 +1659,10 @@ msgstr "%s: grupa %s postoji\n" msgid "%s: line %d: can't update password\n" msgstr "" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: grupa %s postoji\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: grupa %s postoji\n" @@ -1754,6 +1780,10 @@ msgstr "" msgid "The password for %s cannot be changed yet.\n" msgstr "" +#, c-format +msgid "%s: malformed password data obtained for user %s\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1785,10 +1815,6 @@ msgstr "" msgid "%s: password changed.\n" msgstr "Šifra:" -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Upozorenje o isteku šifre" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1897,6 +1923,10 @@ msgstr "" msgid "Please enter your OWN password as authentication.\n" msgstr "" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: nepoznat član %s\n" @@ -1905,10 +1935,6 @@ msgstr "%s: nepoznat član %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1948,6 +1974,14 @@ msgid "" "(Ignored)\n" msgstr "" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "" @@ -2015,6 +2049,10 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "nepoznata grupa: %s\n" +#, fuzzy, c-format +msgid "%s: cannot create directory for defaults file\n" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" @@ -2043,6 +2081,10 @@ msgstr "%s: grupa %s postoji\n" msgid "%s: too many groups specified (max %d).\n" msgstr "" +#, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2179,14 +2221,34 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, c-format +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "nepoznata grupa: %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "nepoznata grupa: %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "nepoznata grupa: %s\n" @@ -2227,10 +2289,18 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "nepoznata grupa: %s\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "nepoznata grupa: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "" + msgid "Creating mailbox file" msgstr "" @@ -2241,6 +2311,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: grupa %s postoji\n" @@ -2274,19 +2355,21 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "nepoznata grupa: %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, c-format msgid "" "%s: warning: the home directory %s already exists.\n" "%s: Not copying any file from skel directory into it.\n" msgstr "" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2394,6 +2477,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2446,6 +2536,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: grupa %s postoji\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "nepoznata grupa: %s\n" @@ -2458,6 +2552,10 @@ msgstr "nepoznata grupa: %s\n" msgid "%s: no options\n" msgstr "%s: nepoznat član %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2617,6 +2715,10 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "" +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Upozorenje o isteku šifre" + #, fuzzy #~ msgid "Password set to expire." #~ msgstr "Vaša šifra je istekla." diff --git a/po/ca.gmo b/po/ca.gmo index 58a71442..54790384 100644 Binary files a/po/ca.gmo and b/po/ca.gmo differ diff --git a/po/ca.po b/po/ca.po index 61bf5f72..5a9205f7 100644 --- a/po/ca.po +++ b/po/ca.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2012-01-22 18:25+0100\n" "Last-Translator: Innocent De Marchi \n" "Language-Team: Catalan \n" @@ -567,6 +567,10 @@ msgstr "%s: no es pot accedir al directori «chroot» %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: no es pot executar «chroot» en el directori %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -575,6 +579,13 @@ msgstr "" "Valor incorrecta d'ENCRYPT_METHOD: «%s».\n" "Valor per defecte a DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "No es pot canviar al directori «%s»\n" @@ -841,6 +852,10 @@ msgstr "Telèfon de casa" msgid "Other" msgstr "Altre" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: els camps són massa llargs\n" + msgid "Cannot change ID to root.\n" msgstr "No es pot canviar l'ID al de root.\n" @@ -893,10 +908,6 @@ msgstr "%s: «%s» és el mestre NIS per a aquest client.\n" msgid "Changing the user information for %s\n" msgstr "S'està canviant la informació d'usuari per a %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: els camps són massa llargs\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -929,8 +940,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds nombre de passos SHA pel\n" " algorisme de xifratge SHA*\n" @@ -1255,10 +1266,20 @@ msgstr " -r, --system genera un compte del sistema\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" " -R, --root CHROOT_DIR fes «chroot» en el directori CHROOT_DIR \n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list llista els membres del grup\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "el nom d'usuari «%s» no és vàlid\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» no és un nom de grup vàlid\n" @@ -1376,6 +1397,22 @@ msgstr "%s: el seu nom de grup no concorda amb el seu nom d'usuari\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s:només l'usuari «root» pot fer servir l'opció -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append afegeix l'usuari als GRUPS addicionals\n" +" llistats amb la opció -G sense eliminar-los\n" +" d'altres grups\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID canvia l'ID del grup per GID\n" @@ -1436,6 +1473,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort ordena les entrades per UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: «-s» i «-r» són incompatibles\n" @@ -1514,9 +1555,6 @@ msgstr "%s: no es pot eliminar %s\n" msgid "Usage: id [-a]\n" msgstr "Forma d'ús: id [-a]\n" -msgid "Usage: id\n" -msgstr "Forma d'ús: id\n" - msgid " groups=" msgstr " grups=" @@ -1554,8 +1592,10 @@ msgid "" msgstr "" " -u, --user USUARI mostra el registre de lastlog de l'USUARI\n" -msgid "Username Port From Latest" -msgstr "Usuari Port Des de Últim" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Usuari Port Últim" msgid "Username Port Latest" msgstr "Usuari Port Últim" @@ -1688,10 +1728,6 @@ msgstr "Avís: accés reactivat després d'un bloqueig temporal." msgid "Last login: %s on %s" msgstr "Últim accés: %s a %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Última accés: %.19s a %s" - #, c-format msgid " from %.*s" msgstr " des de %.*s" @@ -1840,6 +1876,12 @@ msgstr "%s: line %d: l'usuari «%s» no existeix a %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: línia %d: no es pot actualitzar la contrasenya\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "" +"%s: línia %d: no s'ha pogut generar el directori «%s» (ordre mkdir): %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "" @@ -1981,6 +2023,11 @@ msgstr "No es pot canviar la contrasenya de %s.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Encara no es pot canviar la contrasenya de %s.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: les contrasenyes ombra són requerides per a «-e»\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -2017,10 +2064,6 @@ msgstr "No s'ha canviat la contrasenya per a %s.\n" msgid "%s: password changed.\n" msgstr "%s: S'ha canviat la contrasenya.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: la informació de caducitat de la contrasenya ha canviat.\n" - # NOTE: passwd is a file (/etc/passwd) #, c-format msgid "" @@ -2139,6 +2182,10 @@ msgstr "S'ha evitat l'autenticació de contrasenya.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Si us plau introduïu la VOSTRA contrasenya com a autenticació.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: el senyal emmascara un error\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: no es pot blocar el «shell» de l'usuari\n" @@ -2147,10 +2194,6 @@ msgstr "%s: no es pot blocar el «shell» de l'usuari\n" msgid "%s: signal malfunction\n" msgstr "%s: senyal de mal funcionament\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: el senyal emmascara un error\n" - msgid "Session terminated, terminating shell..." msgstr "Sessió acabada, finalitzant el «shell»..." @@ -2219,6 +2262,14 @@ msgstr "" "%s: %s\n" "(Ignorat)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "No esteu autoritzats a usar «su %s»\n" @@ -2288,6 +2339,11 @@ msgstr "%s: la configuració %s a %s serà ignorada\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: no es pot crear un fitxer nou de preferències predeterminades\n" @@ -2316,6 +2372,11 @@ msgstr "%s: el grup «%s» és un grup NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: s'han especificat massa grups (màx de %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: s'ha exhaurit la memòria. No es pot actualitzar %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2484,16 +2545,45 @@ msgstr "%s: no es pot reescriure el fitxer de contrasenyes\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z requereix nucli «SELinux» habilitat\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: el nom d'usuari «%s» no és vàlid\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "" +"%s: ha fallat el restabliment de l'entrada del registre d'errors de UID %lu: " +"%s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" "%s: ha fallat el restabliment de l'entrada del registre d'errors de UID %lu: " "%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "" +"%s: ha fallat el restabliment de l'entrada del registre d'errors de UID %lu: " +"%s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: ha fallat el restabliment del darrer registre de UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: ha fallat el restabliment del darrer registre de UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: ha fallat el restabliment del darrer registre de UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2545,10 +2635,21 @@ msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "" "%s: línia %d: no s'ha pogut canviar el propietari (ordre «chown») %s: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "" +"%s: línia %d: no s'ha pogut canviar el propietari (ordre «chown») %s: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "No es pot generar el mapatge d'inici de sessió SELinux per a %s\n" + msgid "Creating mailbox file" msgstr "S'està creant la bústia de correu" @@ -2561,6 +2662,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "S'estan establint els permisos de la bústia de correu" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: l'usuari «%s» existeix\n" @@ -2596,6 +2708,11 @@ msgstr "%s: no es pot generar l'usuari\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: no es pot generar el grup\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: avís: falla el nom d'usuari %s a %s a l'assignació d'usuaris «SELinux».\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2607,14 +2724,15 @@ msgstr "" "%s: avís: el directori personal ja existeix.\n" "No s'hi copiarà cap fitxer del directori skel.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: avís: falla el nom d'usuari %s a %s a l'assignació d'usuaris «SELinux».\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force força l'eliminació de fitxers, encara que\n" " no siguin propietat de l'usuari\n" @@ -2749,6 +2867,23 @@ msgstr "" " llistats amb la opció -G sense eliminar-los\n" " d'altres grups\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append afegeix l'usuari als GRUPS addicionals\n" +" llistats amb la opció -G sense eliminar-los\n" +" d'altres grups\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NEW_LOGIN nou nom d'usuari\n" @@ -2811,6 +2946,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: l'usuari «%s» ja existeix a %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: la data «%s» no és vàlida\n" @@ -2823,6 +2962,10 @@ msgstr "%s: la data «%s» no és vàlida\n" msgid "%s: no options\n" msgstr "%s: sense opcions\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: els indicadors -L, -p, i -U són exclusius\n" @@ -2996,6 +3139,18 @@ msgstr "%s: no es pot restaurar %s: %s (els seus canvis estan a %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: no es pot trobar el directori «tcb» per %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Forma d'ús: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Última accés: %.19s a %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: la informació de caducitat de la contrasenya ha canviat.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Usuari Port Des de Últim" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method el mètode d'encriptat (un de %s)\n" diff --git a/po/cs.gmo b/po/cs.gmo index 5bf197ed..e68fc439 100644 Binary files a/po/cs.gmo and b/po/cs.gmo differ diff --git a/po/cs.po b/po/cs.po index ad975c03..3f116fff 100644 --- a/po/cs.po +++ b/po/cs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2014-08-24 15:07+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" @@ -551,6 +551,10 @@ msgstr "%s: nelze přejít (chdir) do chroot adresáře %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: nelze změnit kořen (chroot) na adresář %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -559,6 +563,13 @@ msgstr "" "Neplatná hodnota ENCRYPT_METHOD: „%s“.\n" "Používám DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Nelze přejít do „%s“\n" @@ -811,6 +822,10 @@ msgstr "Telefon domů" msgid "Other" msgstr "Ostatní" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: položka je příliš dlouhá\n" + msgid "Cannot change ID to root.\n" msgstr "Nelze změnit ID na root.\n" @@ -862,10 +877,6 @@ msgstr "%s: „%s“ je hlavním NIS serverem pro tohoto klienta.\n" msgid "Changing the user information for %s\n" msgstr "Měním informace o uživateli %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: položka je příliš dlouhá\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -895,8 +906,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds počet SHA iterací algoritmu SHA*\n" #, c-format @@ -1200,9 +1211,19 @@ msgstr " -r, --system vytvoří systémový účet\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_ADRESÁŘ adresář, do kterého přejít\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list vypíše členy skupiny\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "chybné uživatelské jméno „%s“\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: „%s“ není platným jménem skupiny\n" @@ -1316,6 +1337,21 @@ msgstr "%s: vaše skupina neodpovídá vašemu uživatelskému jménu\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: volbu -g/--group může používat pouze root\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append přidá uživatele do dalších SKUPIN zadaných\n" +" volbou -G; neruší členství v ostatních sk.\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID změní ID skupiny na GID\n" @@ -1375,6 +1411,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort řadí záznamy podle UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s a -r nejsou slučitelné\n" @@ -1453,9 +1493,6 @@ msgstr "%s: nelze smazat %s\n" msgid "Usage: id [-a]\n" msgstr "Použití: id [-a]\n" -msgid "Usage: id\n" -msgstr "Použití: id\n" - msgid " groups=" msgstr " skupiny=" @@ -1491,8 +1528,10 @@ msgid "" msgstr "" " -u, --user ÚČET zobrazí záznamy lastlogu pro uživatele ÚČET\n" -msgid "Username Port From Latest" -msgstr "Uživatel Port Z Naposledy" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Uživatel Port Naposledy" msgid "Username Port Latest" msgstr "Uživatel Port Naposledy" @@ -1624,10 +1663,6 @@ msgstr "Varování: po dočasném zákazu je přihlašování opět povoleno." msgid "Last login: %s on %s" msgstr "Poslední přihlášení: %s na %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Poslední přihlášení: %.19s na %s" - #, c-format msgid " from %.*s" msgstr " z %.*s" @@ -1777,6 +1812,11 @@ msgstr "%s: řádek %d: uživatel „%s“ v %s neexistuje\n" msgid "%s: line %d: can't update password\n" msgstr "%s: řádek %d: heslo nelze aktualizovat\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: řádek %d: volání mkdir %s selhalo: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: řádek %d: volání mkdir %s selhalo: %s\n" @@ -1908,6 +1948,11 @@ msgstr "Heslo uživatele %s nelze změnit.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Heslo uživatele %s nelze zatím změnit.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: přepínač -e vyžaduje stínová hesla\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1943,10 +1988,6 @@ msgstr "Heslo uživatele %s nebylo změněno.\n" msgid "%s: password changed.\n" msgstr "%s: heslo bylo změněno.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: informace o vypršení platnosti hesla byly změněny.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2063,6 +2104,10 @@ msgstr "Ověřování heslem vynecháno.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Pro ověření zadejte VAŠE vlastní heslo.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: chyba maskování signálu\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Nelze rozdvojit uživatelský shell\n" @@ -2071,10 +2116,6 @@ msgstr "%s: Nelze rozdvojit uživatelský shell\n" msgid "%s: signal malfunction\n" msgstr "%s: chyba signálu\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: chyba maskování signálu\n" - msgid "Session terminated, terminating shell..." msgstr "Sezení skončeno, ukončuji shell..." @@ -2142,6 +2183,14 @@ msgstr "" "%s: %s\n" "(Ignoruji)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Nejste oprávněn používat su %s\n" @@ -2211,6 +2260,11 @@ msgstr "%s: nastavení %s v %s bude ignorováno\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: nelze vytvořit nový soubor s výchozími hodnotami\n" @@ -2239,6 +2293,11 @@ msgstr "%s: skupina „%s“ je NIS skupinou.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: zadáno příliš mnoho skupin (max %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Nedostatek paměti. Nelze aktualizovat %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2403,14 +2462,39 @@ msgstr "%s: soubor s hesly nelze přepsat\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z vyžaduje jádro s povoleným SELinuxem\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: chybné uživatelské jméno „%s“\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: nepodařilo se vynulovat faillog záznam UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: nepodařilo se vynulovat faillog záznam UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: nepodařilo se vynulovat faillog záznam UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: nepodařilo se vynulovat lastlog záznam UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: nepodařilo se vynulovat lastlog záznam UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: nepodařilo se vynulovat lastlog záznam UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2458,10 +2542,20 @@ msgstr "%s: řádek %d: volání chown %s selhalo: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: řádek %d: volání chown %s selhalo: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: řádek %d: volání chown %s selhalo: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Nelze vytvořit mapování uživatele %s na SEuživatele\n" + msgid "Creating mailbox file" msgstr "Vytvářím poštovní schránku" @@ -2474,6 +2568,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Nastavuji oprávnění k poštovní schránce" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: uživatel „%s“ již existuje\n" @@ -2509,6 +2614,11 @@ msgstr "%s: nelze vytvořit podřízená uživatelská ID\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: nelze vytvořit podřízená skupinová ID\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: varování: mapování uživatele %s na uživatele SELinuxu %s selhalo.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2520,14 +2630,15 @@ msgstr "" "%s: varování: domovský adresář již existuje.\n" "Nekopíruji do něj žádné soubory z adresáře skel.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: varování: mapování uživatele %s na uživatele SELinuxu %s selhalo.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force vynutí odstranění souborů,\n" " i když je uživatel nevlastní\n" @@ -2654,6 +2765,22 @@ msgstr "" " -a, --append přidá uživatele do dalších SKUPIN zadaných\n" " volbou -G; neruší členství v ostatních sk.\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append přidá uživatele do dalších SKUPIN zadaných\n" +" volbou -G; neruší členství v ostatních sk.\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NOVÝ_ÚČET nová hodnota přihlašovacího jména\n" @@ -2715,6 +2842,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: uživatel „%s“ již v %s existuje\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: neplatný rozsah podřízených uid „%s“\n" @@ -2727,6 +2858,10 @@ msgstr "%s: neplatný rozsah podřízených gid „%s“\n" msgid "%s: no options\n" msgstr "%s: žádné volby\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: přepínače -L, -p a -U se navzájem vylučují\n" @@ -2897,6 +3032,18 @@ msgstr "%s: %s nelze obnovit: %s (změny jsou v %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: nepodařilo se nalézt tcb adresář uživatele %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Použití: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Poslední přihlášení: %.19s na %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: informace o vypršení platnosti hesla byly změněny.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Uživatel Port Z Naposledy" + #~ msgid "%s: Target %u is owned by a different user\n" #~ msgstr "%s: Cílový proces %u je vlastněn jiným uživatelem\n" diff --git a/po/da.gmo b/po/da.gmo index 7278fb96..d7145eb2 100644 Binary files a/po/da.gmo and b/po/da.gmo differ diff --git a/po/da.po b/po/da.po index 5895c929..90bc3480 100644 --- a/po/da.po +++ b/po/da.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2012-01-26 23:57+0100\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" @@ -568,6 +568,10 @@ msgstr "%s: Kan ikke tilgå chroot-mappe %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: Kan ikke chroot til mappe %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -576,6 +580,13 @@ msgstr "" "Ugyldig ENCRYPT_METHOD-værdi: »%s«.\n" "Vælger standard DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Kunne ikke skifte mappe til »%s«\n" @@ -830,6 +841,10 @@ msgstr "Telefon" msgid "Other" msgstr "Andet" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: Felter for lange\n" + msgid "Cannot change ID to root.\n" msgstr "Kan ikke ændre id til root.\n" @@ -881,10 +896,6 @@ msgstr "%s: »%s« er NIS-masteren for denne klient.\n" msgid "Changing the user information for %s\n" msgstr "Ændrer brugeroplysninger for %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: Felter for lange\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -915,8 +926,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds antal SHA-runder for SHA*\n" " crypt-algoritmerne\n" @@ -1224,9 +1235,19 @@ msgstr " -r, --system opret en systemkonto\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_MAPPE mappe at chroote ind i\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list vis medlemmer af gruppen\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "ugyldigt brugernavn »%s«\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: »%s« er ikke et gyldigt gruppenavn\n" @@ -1342,6 +1363,24 @@ msgstr "%s: Dit gruppenavn svarer ikke overens med dit brugernavn\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: Kun root kan bruge tilvalget -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append tilføj brugeren til de supplementære " +"GRUPPER\n" +" nævnt af tilvalget -G uden at fjerne " +"personen\n" +" fra andre grupper\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID ændr gruppe-id'et til GID\n" @@ -1403,6 +1442,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort sorter punkter efter UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s og -r er ikke kompatible\n" @@ -1481,9 +1524,6 @@ msgstr "%s: Kan ikke slette %s\n" msgid "Usage: id [-a]\n" msgstr "Brug: id [-a]\n" -msgid "Usage: id\n" -msgstr "Brug: id\n" - msgid " groups=" msgstr " grupper=" @@ -1518,8 +1558,10 @@ msgstr "" " -u, --user LOGIND vis lastlog-poster for brugeren med\n" " det angivne LOGIND\n" -msgid "Username Port From Latest" -msgstr "Brugernavn Port Fra Seneste" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Brugernavn Port Seneste" msgid "Username Port Latest" msgstr "Brugernavn Port Seneste" @@ -1651,10 +1693,6 @@ msgstr "Advarsel: Logind genetableret efter midlertidig udelukkelse." msgid "Last login: %s on %s" msgstr "Sidst logget på: %s på %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Sidst logget på: %.19s på %s" - #, c-format msgid " from %.*s" msgstr " fra %.*s" @@ -1801,6 +1839,11 @@ msgstr "%s: Linje %d: Bruger »%s« findes ikke i %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: Linje %d: Kan ikke opdatere adgangskode\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: Linje %d: mkdir %s fejlede: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: Linje %d: mkdir %s fejlede: %s\n" @@ -1936,6 +1979,11 @@ msgstr "Adgangskoden for %s kan ikke ændres.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Adgangskoden for %s kan endnu ikke ændres.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: Der kræves skyggeadgangskoder for -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1971,10 +2019,6 @@ msgstr "Adgangskoden for %s er uændret.\n" msgid "%s: password changed.\n" msgstr "%s: Adgangskode ændret.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: Information om udløb af adgangskode blev ændret.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2090,6 +2134,10 @@ msgstr "Gik uden om adgangskodegodkendelse.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Angiv din EGEN adgangskode som godkendelse.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: Forkert signalmasking\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Kan ikke forgrene brugerskal\n" @@ -2098,10 +2146,6 @@ msgstr "%s: Kan ikke forgrene brugerskal\n" msgid "%s: signal malfunction\n" msgstr "%s: Forkert signal\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: Forkert signalmasking\n" - msgid "Session terminated, terminating shell..." msgstr "Session termineret, terminerer skal..." @@ -2169,6 +2213,14 @@ msgstr "" "%s: %s\n" "(Ignoreret)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Du er ikke autoriseret til at su %s\n" @@ -2238,6 +2290,11 @@ msgstr "%s: Konfigurationen %s i %s vil blive ignoreret\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: Kan ikke oprette ny standardværdifil\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: Kan ikke oprette ny standardværdifil\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: Kan ikke oprette ny standardværdifil\n" @@ -2266,6 +2323,11 @@ msgstr "%s: Gruppen »%s« er en NIS-gruppe.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: Der er angivet for mange grupper (højst %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Ikke nok hukommelse. Kan ikke opdatere %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2433,14 +2495,39 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z kræver SELinux-aktiveret kerne\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: Ugyldigt brugernavn »%s«\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: Kunne ikke nulstille faillog-punktet for UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: Kunne ikke nulstille faillog-punktet for UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: Kunne ikke nulstille faillog-punktet for UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: Kunne ikke nulstille lastlog-punktet for UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: Kunne ikke nulstille lastlog-punktet for UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: Kunne ikke nulstille lastlog-punktet for UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2488,10 +2575,20 @@ msgstr "%s: Linje %d: chown %s fejlede: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: Linje %d: chown %s fejlede: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: Linje %d: chown %s fejlede: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Kan ikke oprette SELinux-logindkortlægning for %s\n" + msgid "Creating mailbox file" msgstr "Opretter postboksfil" @@ -2504,6 +2601,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Indstiller postboksfilens rettigheder" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: Brugeren »%s« findes allerede\n" @@ -2539,6 +2647,11 @@ msgstr "%s: Kan ikke oprette bruger\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: Kan ikke oprette gruppe\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: Advarsel: Brugernavnet %s til %s SELinux-brugerkortlægning mislykkedes.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2550,14 +2663,15 @@ msgstr "" "%s: Advarsel: Hjemmemappen findes allerede.\n" "Kopierer ikke nogen filer til den fra skelet-mappen.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: Advarsel: Brugernavnet %s til %s SELinux-brugerkortlægning mislykkedes.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force gennemtving fjernelse af filer,\n" " selvom de ikke ejers af brugeren\n" @@ -2687,6 +2801,25 @@ msgstr "" "personen\n" " fra andre grupper\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append tilføj brugeren til de supplementære " +"GRUPPER\n" +" nævnt af tilvalget -G uden at fjerne " +"personen\n" +" fra andre grupper\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NYT_LOGIND ny værdi til logindnavnet\n" @@ -2751,6 +2884,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: Brugeren »%s« findes allerede i %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: Ugyldig dato »%s«\n" @@ -2763,6 +2900,10 @@ msgstr "%s: Ugyldig dato »%s«\n" msgid "%s: no options\n" msgstr "%s: Ingen tilvalg\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: Flagene -L, -p og -U udelukker hinanden\n" @@ -2930,3 +3071,15 @@ msgstr "%s: Kan ikke gendanne %s: %s (dine ændringer er i %s)\n" #, c-format msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: Kunne ikke finde tcb-mappe for %s\n" + +#~ msgid "Usage: id\n" +#~ msgstr "Brug: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Sidst logget på: %.19s på %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: Information om udløb af adgangskode blev ændret.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Brugernavn Port Fra Seneste" diff --git a/po/de.gmo b/po/de.gmo index 7c8dd177..64551b8f 100644 Binary files a/po/de.gmo and b/po/de.gmo differ diff --git a/po/de.po b/po/de.po index 3d926f01..097b9eb9 100644 --- a/po/de.po +++ b/po/de.po @@ -2,15 +2,16 @@ # Copyright (C) 1999 Free Software Foundation, Inc. # Frank Schmid , 2002 # Holger Wansing , 2006, 2008, 2009, 2011, 2012, 2014. +# Björn Esser , 2021. # Patches, suggestions, etc welcome. # msgid "" msgstr "" "Project-Id-Version: shadow 4.2-2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" -"PO-Revision-Date: 2014-07-27 23:06+0200\n" -"Last-Translator: Holger Wansing \n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" +"PO-Revision-Date: 2020-09-22 15:10+0200\n" +"Last-Translator: Björn Esser \n" "Language-Team: German \n" "Language: de\n" "MIME-Version: 1.0\n" @@ -564,6 +565,10 @@ msgstr "%s: auf chroot-Verzeichnis %s kann nicht zugegriffen werden: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: chroot-Wechsel in Verzeichnis %s nicht möglich: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "Kann keine zufälligen Bytes beziehen.\n" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -572,6 +577,16 @@ msgstr "" "Ungültiger Wert für ENCRYPT_METHOD: »%s«.\n" "Standard DES wird gewählt.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" +"Kann kein Salt für das Präfix \"%s\" generieren. Bitte die Einstellungen für " +"ENCRYPT_METHOD und den zugehörigen Konfigurationen der gewählten Hash-" +"Methode überprüfen.\n" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Es konnte nicht in das Verzeichnis »%s« gewechselt werden.\n" @@ -834,6 +849,10 @@ msgstr "Telefon privat" msgid "Other" msgstr "Sonstiges" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: Felder zu lang\n" + msgid "Cannot change ID to root.\n" msgstr "ID konnte nicht auf root geändert werden.\n" @@ -886,10 +905,6 @@ msgstr "%s: »%s« ist der NIS-Master für diesen Client.\n" msgid "Changing the user information for %s\n" msgstr "Benutzerinformationen für %s werden geändert.\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: Felder zu lang\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -922,11 +937,11 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" -" -s, --sha-rounds Anzahl der SHA-Runden für den SHA*-\n" -" Verschlüsselungs-Algorithmus\n" +" -s, --sha-rounds Anzahl der SHA-Runden für den SHA*-,\n" +" BCRYPT oder YESCRYPT Hash-Methode.\n" #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" @@ -1239,13 +1254,23 @@ msgstr "" " neue Gruppe verwenden\n" msgid " -r, --system create a system account\n" -msgstr " -r, --system Eine Systemgruppe erstellen\n" +msgstr " -r, --system Ein Systemkonto erstellen\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_VERZ Verzeichnis für chroot\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list Die Mitglieder der Gruppe auflisten\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "Ungültiger Benutzername »%s«\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: »%s« ist kein gültiger Gruppenname.\n" @@ -1363,6 +1388,24 @@ msgstr "%s: Ihr Gruppenname passt nicht zu Ihrem Benutzername.\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: Nur root kann die Option -g/--group nutzen.\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append Benutzer zu zusätzlichen Gruppen " +"hinzufügen,\n" +" die mit der Option -G angegeben werden, " +"ohne\n" +" ihn dabei aus anderen Gruppen zu entfernen\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID Die Gruppen-ID auf GID ändern\n" @@ -1428,6 +1471,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort Einträge nach UID sortieren\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s und -r sind nicht kompatibel.\n" @@ -1506,9 +1553,6 @@ msgstr "%s: %s kann nicht gelöscht werden.\n" msgid "Usage: id [-a]\n" msgstr "Aufruf: id [-a]\n" -msgid "Usage: id\n" -msgstr "Aufruf: id\n" - msgid " groups=" msgstr " Gruppen=" @@ -1548,8 +1592,10 @@ msgid "" msgstr "" " -u, --user BENUTZERZUGANG lastlog-Eintrag für BENUTZERZUGANG anzeigen\n" -msgid "Username Port From Latest" -msgstr "Benutzername Port Von Letzter" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Benutzername Port Letzter" msgid "Username Port Latest" msgstr "Benutzername Port Letzter" @@ -1683,10 +1729,6 @@ msgstr "Warnung: Login nach temporärer Sperre reaktiviert." msgid "Last login: %s on %s" msgstr "Letztes Login: %s auf %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Letztes Login: %.19s auf %s" - #, c-format msgid " from %.*s" msgstr " von %.*s" @@ -1835,6 +1877,11 @@ msgstr "%s: Zeile %d: Benutzer »%s« existiert nicht in %s.\n" msgid "%s: line %d: can't update password\n" msgstr "%s: Zeile %d: Passwort kann nicht aktualisiert werden.\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: Zeile %d: mkdir %s (Verzeichnis erstellen) fehlgeschlagen: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: Zeile %d: mkdir %s (Verzeichnis erstellen) fehlgeschlagen: %s\n" @@ -1974,6 +2021,11 @@ msgstr "Das Passwort für %s kann nicht geändert werden.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Das Passwort für %s kann noch nicht geändert werden.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: shadow-Passwörter für -e erforderlich\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -2010,10 +2062,6 @@ msgstr "Das Passwort für %s wurde nicht geändert.\n" msgid "%s: password changed.\n" msgstr "%s: Passwort geändert.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: Passwortablauf-Informationen geändert.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2130,6 +2178,10 @@ msgstr "Passwort-Authentifizierung umgangen.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Bitte geben Sie Ihr EIGENES Passwort als Authentifizierung ein.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: Signalmaskierungs-Fehlfunktion\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Prozessaufspaltung (fork) für Benutzer-Shell nicht möglich\n" @@ -2138,10 +2190,6 @@ msgstr "%s: Prozessaufspaltung (fork) für Benutzer-Shell nicht möglich\n" msgid "%s: signal malfunction\n" msgstr "%s: Signal-Fehlfunktion\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: Signalmaskierungs-Fehlfunktion\n" - msgid "Session terminated, terminating shell..." msgstr "Sitzung abgebrochen, Shell wird beendet ..." @@ -2209,6 +2257,14 @@ msgstr "" "%s: %s\n" "(Ignoriert)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "su %s ist Ihnen nicht erlaubt.\n" @@ -2278,6 +2334,11 @@ msgstr "%s: die %s-Konfiguration in %s wird ignoriert.\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: Neue defaults-Datei kann nicht erzeugt werden.\n" @@ -2306,6 +2367,11 @@ msgstr "%s: Die Gruppe »%s« ist eine NIS-Gruppe.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: Zu viele Gruppen angegeben (max. %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Zu wenig Speicher. %s kann nicht aktualisiert werden.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2485,14 +2551,39 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z erfordert einen Kernel, in dem SELinux aktiviert ist.\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: Ungültiger Benutzername »%s«\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: Zurücksetzen des faillog-Eintrags für UID %lu fehlgeschlagen: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: Zurücksetzen des faillog-Eintrags für UID %lu fehlgeschlagen: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: Zurücksetzen des faillog-Eintrags für UID %lu fehlgeschlagen: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: Zurücksetzen des lastlog-Eintrags für UID %lu fehlgeschlagen: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: Zurücksetzen des lastlog-Eintrags für UID %lu fehlgeschlagen: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: Zurücksetzen des lastlog-Eintrags für UID %lu fehlgeschlagen: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2540,10 +2631,20 @@ msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: Zeile %d: chown %s (Eigentümer ändern) fehlgeschlagen: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "SELinux-Login-Zuordnung für %s kann nicht erstellt werden\n" + msgid "Creating mailbox file" msgstr "Erzeugen der Mailbox-Datei" @@ -2556,6 +2657,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Zugriffsrechte der Mailboxdatei werden gesetzt" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: Benutzer »%s« existiert bereits\n" @@ -2591,6 +2703,12 @@ msgstr "%s: Benutzer kann nicht erstellt werden\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: Gruppe kann nicht erzeugt werden\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: Warnung: Die SELinux-Benutzer-Zuordnung des Benutzernamens %s zu %s ist\n" +"fehlgeschlagen.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2602,15 +2720,15 @@ msgstr "" "%s: Warnung: Das Home-Verzeichnis existiert bereits.\n" "Es werden keine Dateien vom skel-Verzeichnis dorthin kopiert.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: Warnung: Die SELinux-Benutzer-Zuordnung des Benutzernamens %s zu %s ist\n" -"fehlgeschlagen.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force Entfernen von Dateien erzwingen, auch wenn\n" " sie nicht Eigentum des zu löschenden\n" @@ -2746,6 +2864,25 @@ msgstr "" "ohne\n" " ihn dabei aus anderen Gruppen zu entfernen\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append Benutzer zu zusätzlichen Gruppen " +"hinzufügen,\n" +" die mit der Option -G angegeben werden, " +"ohne\n" +" ihn dabei aus anderen Gruppen zu entfernen\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" " -l, --login NEUER_NAME Neuer Wert für den Namen des " @@ -2812,6 +2949,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: Benutzer »%s« existiert bereits in %s.\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: Ungültiges Datum »%s«\n" @@ -2824,6 +2965,10 @@ msgstr "%s: Ungültiges Datum »%s«\n" msgid "%s: no options\n" msgstr "%s: keine Optionen\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: -L, -p und -U können nur exklusiv genutzt werden.\n" @@ -2997,3 +3142,15 @@ msgstr "" #, c-format msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: tcb-Verzeichnis für %s konnte nicht gefunden werden\n" + +#~ msgid "Usage: id\n" +#~ msgstr "Aufruf: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Letztes Login: %.19s auf %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: Passwortablauf-Informationen geändert.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Benutzername Port Von Letzter" diff --git a/po/dz.gmo b/po/dz.gmo index bbf42bf7..c8b9359c 100644 Binary files a/po/dz.gmo and b/po/dz.gmo differ diff --git a/po/dz.po b/po/dz.po index f3a6c15f..7a4c6718 100644 --- a/po/dz.po +++ b/po/dz.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2006-06-01 15:28+0530\n" "Last-Translator: Jurmey Rabgay \n" "Language-Team: dzongkha \n" @@ -535,12 +535,23 @@ msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབ msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "'%s'ལུ་ སི་ཌི་འབད་མ་ཚུགས་\n" @@ -774,6 +785,10 @@ msgstr "ཁྱིམ་གྱི་བརྒྱུད་འཕྲིན།" msgid "Other" msgstr "གཞན།" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n" + msgid "Cannot change ID to root.\n" msgstr "རྩ་བ་ལུ་ ཨའི་ཌི་ བསྒྱུར་བཅོས་འབད་མི་ཚུགས།\n" @@ -825,10 +840,6 @@ msgstr "%s: '%s' འདི་ ཞབས་ཏོག་སྤྱོད་མི msgid "Changing the user information for %s\n" msgstr "%sགི་དོན་ལུ་ ལག་ལེན་པའི་བརྡ་དོན་ བསྒྱུར་བཅོས་འབད་དོ།\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: ས་སྒོ་ཚུ་རིང་དྲགས་པས།\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -849,8 +860,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1125,9 +1136,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s འདི་ ནུས་ཅན་གྱི་སྡེ་ཚན་མིང་མེན་པས།\n" @@ -1232,6 +1251,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1281,6 +1306,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s དང་ -r གཉིས་མཐུན་འགྱུར་ཅན་མེན།\n" @@ -1357,9 +1386,6 @@ msgstr "%s: ཡིག་སྣོད་ %sའདི་ དུས་མཐུན msgid "Usage: id [-a]\n" msgstr "ལག་ལེནཔ་:id [-a]\n" -msgid "Usage: id\n" -msgstr "ལག་ལེན་པ་: id\n" - msgid " groups=" msgstr "སྡེ་ཚན་=" @@ -1386,8 +1412,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "ལག་ལེན་པའི་མིང་ འདྲེན་ལམ་ ལས་ མཇུག་མཐའ།" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "ལག་ལེན་པའི་མིང་ འདྲེན་ལམ་ མཇུག་མཐའ།" msgid "Username Port Latest" msgstr "ལག་ལེན་པའི་མིང་ འདྲེན་ལམ་ མཇུག་མཐའ།" @@ -1520,10 +1548,6 @@ msgstr "ཉེན་བརྡ་:གནས་སྐབས་ལྡེ་མི msgid "Last login: %s on %s" msgstr "མཇུག་གི་ནང་བསྐྱོད་: %s གུ་ %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "མཇུག་གི་ནང་བསྐྱོད་: %.19s གུ་ %s" - #, c-format msgid " from %.*s" msgstr " %.*sལས།" @@ -1665,6 +1689,10 @@ msgstr "%s: ལག་ལེན་པ་ %sའདི་ མེད།\n" msgid "%s: line %d: can't update password\n" msgstr "%s: གྲལ་ཐིག་ %d: ཆོག་ཡིག་དུས་མཐུན་བཟོ་མི་ཚུགས།\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: གྲལ་ཐིག་ %d: mkdir འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: གྲལ་ཐིག་ %d: mkdir འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" @@ -1783,6 +1811,11 @@ msgstr "%sགི་དོན་ལུ་ ཆོག་ཡིག་སོར་མ msgid "The password for %s cannot be changed yet.\n" msgstr "%sགི་དོན་ལུ་ ཆོག་ཡིག་སོར་མི་ཚུགས།\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: -e ལུ་དགོས་མཁོ་ཡོད་པའི་གྱིབ་མའི་ཆོག་ཡིག་ཚུ།\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1814,10 +1847,6 @@ msgstr " %sགི་དོན་ལུ་ ཆོག་ཡིག་འདི་ msgid "%s: password changed.\n" msgstr "ཆོག་ཡིག་སོར་ཡོདཔ།" -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "ཆོག་ཡིག་དུས་ཡོལ་ཉེན་བརྡ།" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1925,6 +1954,10 @@ msgstr "ཆོག་ཡིག་བདེན་བཤད་ཟུར་ལས་ msgid "Please enter your OWN password as authentication.\n" msgstr "ཁྱོད་རའི་ཆོག་ཡིག་འདི་ བདེན་བཤད་སྦེ་བཙུགས།\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: ཡིག་སྣོད་ %sའདི་ ལྡེ་མིག་བརྐྱབ་མི་ཚུགས།\n" @@ -1933,10 +1966,6 @@ msgstr "%s: ཡིག་སྣོད་ %sའདི་ ལྡེ་མིག་ msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1990,6 +2019,14 @@ msgstr "" "%s: %s\n" "(སྣང་མེད་བཞག་ཡོདཔ་)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "ཁྱོད་ ཟླ་%sལུ་ དབང་སྤྲོད་མ་འབད།\n" @@ -2059,6 +2096,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: སྔོན་སྒྲིག་ཡིག་སྣོད་གསརཔ་ གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" @@ -2087,6 +2129,10 @@ msgstr "%s: སྡེ་ཚན་ '%s' འདི་ ཨེན་ཨའི་ཨ msgid "%s: too many groups specified (max %d).\n" msgstr "%s: སྡེ་ཚན་མང་རབས་ཅིག་གསལ་བཀོད་འབད་ཡོདཔ་(མང་མཐའ་ %d)།\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: དུས་མཐུན་སྡེ་ཚན་ནང་ལུ་ དྲན་ཚད་ལས་བརྒལ་བ།\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2224,14 +2270,35 @@ msgstr "%s: ཆོག་ཡིག་ཡིག་སྣོད་འདི་ ལ msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: ནུས་མེད་ལག་ལེན་པའི་མིང་ '%s'།\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: ཆོག་ཡིག་ཡིག་སྣོད་ དུས་མཐུན་བཟོ་མ་ཚུགས།\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: སྣོད་ཐོ་ %s གསར་བསྐྲུན་འབད་མི་ཚུགས།\n" @@ -2274,10 +2341,18 @@ msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱ msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: གྲལ་ཐིག་ %d: chown འཐུས་ཤོར་བྱུང་ཡོདཔ།\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s གི་དོན་ལུ་ རྒས་པའི་བརྡ་དོན་བསྒྱུར་བཅོས་འབད་དོ།\n" + msgid "Creating mailbox file" msgstr "ཡིག་སྒྲོམ་ཡིག་སྣོད་ གསར་བསྐྲུན་འབད་དོ།" @@ -2289,6 +2364,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "ཡིག་སྒྲོམ་ཡིག་སྣོད་གྱི་གནང་བ་ གཞི་སྒྲིག་འབད་དོ།" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: ལག་ལེན་པ་ %sཡོདཔ་ཨིན།\n" @@ -2324,6 +2410,10 @@ msgstr "%s: %sགསར་བསྐྲུན་འབད་མི་ཚུགས msgid "%s: can't create subordinate group IDs\n" msgstr "%s: %sགསར་བསྐྲུན་འབད་མི་ཚུགས།\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2335,13 +2425,11 @@ msgstr "" "%s: ཉེན་བརྡ་:ཁྱིམ་གྱི་སྣོད་ཐོ་འདི་ཧེ་མ་ལས་རང་ཡོདཔ་ཨིན།\n" "འདི་ནང་ལུ་ སི་ཀེལ་སྣོད་ཐོ་ནང་ལས་ ཡིག་སྣོད་ག་ཅི་ཡང་འདྲ་བཤུས་མ་བརྐྱབ་ནི།\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2451,6 +2539,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2503,6 +2598,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: ལག་ལེན་པ་ %sཡོདཔ་ཨིན།\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: ནུས་མེད་ཚེས་གྲངས་ '%s'།\n" @@ -2515,6 +2614,10 @@ msgstr "%s: ནུས་མེད་ཚེས་གྲངས་ '%s'།\n" msgid "%s: no options\n" msgstr "%s: ཡིག་སྣོད་%s ཁ་ཕྱེ་མི་ཚུགས།\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2686,6 +2789,19 @@ msgstr "%s: %sསོར་ཆུད་འབད་མ་ཚུགས་: %s (ཁ msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: ནུས་མེད་གཞི་རྟེན་སྣོད་ཐོ་'%s'།\n" +#~ msgid "Usage: id\n" +#~ msgstr "ལག་ལེན་པ་: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "མཇུག་གི་ནང་བསྐྱོད་: %.19s གུ་ %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "ཆོག་ཡིག་དུས་ཡོལ་ཉེན་བརྡ།" + +#~ msgid "Username Port From Latest" +#~ msgstr "ལག་ལེན་པའི་མིང་ འདྲེན་ལམ་ ལས་ མཇུག་མཐའ།" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/el.gmo b/po/el.gmo index b87dbfaf..d95d802d 100644 Binary files a/po/el.gmo and b/po/el.gmo differ diff --git a/po/el.po b/po/el.po index 1c65e4ae..743c430c 100644 --- a/po/el.po +++ b/po/el.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow_po_el\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2012-01-21 00:22+0200\n" "Last-Translator: Thomas Vasileiou \n" "Language-Team: Greek \n" @@ -569,6 +569,10 @@ msgid "%s: unable to chroot to directory %s: %s\n" msgstr "" "%s: αδυναμία αλλαγής του φαινομενικού γονικού καταλόγου (chroot) %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -577,6 +581,13 @@ msgstr "" "Μη έγκυρη τιμή για το ENCRYPT_METHOD: '%s'.\n" "Επιλέγεται η προκαθορισμένη DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Αδυναμία αλλαγής καταλόγου στον '%s'\n" @@ -845,6 +856,10 @@ msgstr "Τηλέφωνο Οικίας" msgid "Other" msgstr "Άλλο" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: Πολύ μακριά πεδία\n" + msgid "Cannot change ID to root.\n" msgstr "Αδυναμία αλλαγής ταυτότητας χρήστη σε root.\n" @@ -896,10 +911,6 @@ msgstr "%s: '%s' είναι ο κύριος διακομιστής NIS γι'αυ msgid "Changing the user information for %s\n" msgstr "Αλλαγή πληροφοριών χρήστη για τον %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: Πολύ μακριά πεδία\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -931,8 +942,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds αριθμός κύκλων SHA για τους \n" " αλγόριθμους κρυπτογράφησης SHA*\n" @@ -1252,11 +1263,21 @@ msgstr " -r, --system δημιουργία λογαριασμ #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" " -R, --root ΚΑΤΑΛΟΓΟΣ_CHROOT κατάλογος στον οποίο να εφαρμοστεί " "chroot\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list λίστα όλων των μελών της ομάδας\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "Μη έγκυρο όνομα χρήστη '%s'\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: Το '%s' δεν είναι έγκυρο όνομα ομάδας\n" @@ -1373,6 +1394,23 @@ msgstr "%s: το όνομα της ομάδας σας δεν ταιριάζει msgid "%s: only root can use the -g/--group option\n" msgstr "%s: μόνο ο root μπορεί να χρησιμοποιήσει την επιλογή -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append προσθήκη του χρήστη στις συμπληρωματικές " +"ΟΜΑΔΕΣ\n" +" που προσδιορίζονται από την επιλογή -G, \n" +" χωρίς να διαγράφεται από τις άλλες ομάδες\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID αλλαγή του ID της ομάδας σε GID\n" @@ -1433,6 +1471,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort ταξινόμηση εγγραφών κατά UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s και -r είναι ασύμβατα\n" @@ -1511,9 +1553,6 @@ msgstr "%s: αδυναμία διαγραφής του %s\n" msgid "Usage: id [-a]\n" msgstr "Χρήση: id [-a]\n" -msgid "Usage: id\n" -msgstr "Χρήση: id\n" - msgid " groups=" msgstr " ομάδες=" @@ -1552,8 +1591,10 @@ msgstr "" " -u, --user ΟΝΟΜΑ προβολή των εγγραφών του lastlog για το " "συγκεκριμένο ΟΝΟΜΑ\n" -msgid "Username Port From Latest" -msgstr "Όνομα_Χρήστη Θύρα Από Τελευταία" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Όνομα_Χρήστη Θύρα Τελευταία" msgid "Username Port Latest" msgstr "Όνομα_Χρήστη Θύρα Τελευταία" @@ -1688,10 +1729,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "Τελευταία είσοδος: %s στο %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Τελευταία είσοδος: %.19s στο %s" - #, c-format msgid " from %.*s" msgstr " από %.*s" @@ -1841,6 +1878,11 @@ msgstr "%s: γραμμή %d: Ο χρήστης '%s' δεν υπάρχει στο msgid "%s: line %d: can't update password\n" msgstr "%s: γραμμή %d: αδυναμία ανανέωση συνθηματικού\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: γραμμή %d: αποτυχία δημιουργίας καταλόγου %s (mkdir) : %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: γραμμή %d: αποτυχία δημιουργίας καταλόγου %s (mkdir) : %s\n" @@ -1991,6 +2033,11 @@ msgstr "Το συνθηματικό για τον %s δεν μπορεί να α msgid "The password for %s cannot be changed yet.\n" msgstr "Το συνθηματικό για το χρήστη %s δεν μπορεί να αλλάξει.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: σκιώδη συνθηματικά απαιτούνται για το -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -2029,10 +2076,6 @@ msgstr "Το συνθηματικό για τον %s δεν άλλαξε.\n" msgid "%s: password changed.\n" msgstr "%s: το συνθηματικό άλλαξε.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: αλλαγή πληροφοριών λήξης συνθηματικού.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2152,6 +2195,10 @@ msgstr "Παράκαμψη εξακρίβωσης με συνθηματικό.\n msgid "Please enter your OWN password as authentication.\n" msgstr "Παρακαλώ εισάγετε το ΔΙΚΟ σας συνθηματικό για εξακρίβωση.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: δυσλειτουργία μασκαρίσμος του σήματος\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: αδυναμία διχάλωσης του φλοιού του χρήστη\n" @@ -2160,10 +2207,6 @@ msgstr "%s: αδυναμία διχάλωσης του φλοιού του χρ msgid "%s: signal malfunction\n" msgstr "%s: δυσλειτουργία σήματος\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: δυσλειτουργία μασκαρίσμος του σήματος\n" - msgid "Session terminated, terminating shell..." msgstr "Συνεδρία τερματίστηκε, τερματισμός φλοιού..." @@ -2232,6 +2275,14 @@ msgstr "" "%s: %s\n" "(Αγνοήθηκε)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Δεν έχετε άδεια για su %s\n" @@ -2301,6 +2352,11 @@ msgstr "%s: η %s διαμόρφωση στο %s θα αγνοηθεί\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: αδυναμία δημιουργίας νέου αρχείου προκαθορισμένων ρυθμίσεων\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: αδυναμία δημιουργίας νέου αρχείου προκαθορισμένων ρυθμίσεων\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: αδυναμία δημιουργίας νέου αρχείου προκαθορισμένων ρυθμίσεων\n" @@ -2329,6 +2385,11 @@ msgstr "%s: Η ομάδα '%s' είναι NIS ομάδα.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: Προσδιορίστηκαν υπερβολικές ομάδες (μεγ. %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Δεν υπάρχει ελεύθερη μνήμη. Αδυναμία ενημέρωσης του %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2503,14 +2564,39 @@ msgstr "%s: αδυναμία επανεγγραφής του αρχείου συ msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z απαιτεί πυρήνα με ενεργοποιημένο το SELinux\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: μη έγκυρο όνομα χρήστη '%s'\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: αποτυχία επαναφοράς της καταχώρησης στο faillog του UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: αποτυχία επαναφοράς της καταχώρησης στο faillog του UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: αποτυχία επαναφοράς της καταχώρησης στο faillog του UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: αποτυχία επαναφοράς της καταχώρησης στο lastlog του UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: αποτυχία επαναφοράς της καταχώρησης στο lastlog του UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: αποτυχία επαναφοράς της καταχώρησης στο lastlog του UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2558,10 +2644,20 @@ msgstr "%s: γραμμή %d: αποτυχία αλλαγής ιδιοκτήτη msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: γραμμή %d: αποτυχία αλλαγής ιδιοκτήτη %s (chown): %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: γραμμή %d: αποτυχία αλλαγής ιδιοκτήτη %s (chown): %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Αδυναμία δημιουργίας χαρτογράφησης σύνδεσης SELinux για το χρήστη %s\n" + msgid "Creating mailbox file" msgstr "Δημιουργία αρχείου mailbox" @@ -2573,6 +2669,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Ρύθμιση αδειών του αρχείου mailbox" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: Ο χρήστης '%s' υπάρχει ήδη\n" @@ -2608,6 +2715,12 @@ msgstr "%s: αδυναμία δημιουργίας του χρήστη\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: αδυναμία δημιουργίας ομάδας\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: προειδοποίηση: απέτυχε η προσθήκη του χρήστη %s στην χαρτογράφηση " +"SELinux %s.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2619,15 +2732,15 @@ msgstr "" "%s: προειδοποίηση: ο αρχικός κατάλογος χρήστη υπάρχει ήδη.\n" "Δεν έγινε αντιγραφή σε αυτό οποιουδήποτε καταλόγου skel.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: προειδοποίηση: απέτυχε η προσθήκη του χρήστη %s στην χαρτογράφηση " -"SELinux %s.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force εξαναγκασμένη απομάκρυνση αρχείων,\n" " ακόμα και εάν ο χρήστης δεν είναι ιδιοκτήτης " @@ -2765,6 +2878,24 @@ msgstr "" " που προσδιορίζονται από την επιλογή -G, \n" " χωρίς να διαγράφεται από τις άλλες ομάδες\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append προσθήκη του χρήστη στις συμπληρωματικές " +"ΟΜΑΔΕΣ\n" +" που προσδιορίζονται από την επιλογή -G, \n" +" χωρίς να διαγράφεται από τις άλλες ομάδες\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login ΝΕΟ_ΟΝΟΜΑ νέο όνομα χρήστη\n" @@ -2830,6 +2961,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: Ο χρήστης %s υπάρχει ήδη στο %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: Μη έγκυρη ημερομηνία '%s'\n" @@ -2842,6 +2977,10 @@ msgstr "%s: Μη έγκυρη ημερομηνία '%s'\n" msgid "%s: no options\n" msgstr "%s: χωρίς επιλογές\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: οι σημαίες -L, -p, και -U είναι αποκλειστικές\n" @@ -3018,6 +3157,18 @@ msgstr "%s: αδυναμία επαναφοράς %s: %s (οι αλλαγές ε msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: αποτυχία εύρεσης καταλόγου tcb %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Χρήση: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Τελευταία είσοδος: %.19s στο %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: αλλαγή πληροφοριών λήξης συνθηματικού.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Όνομα_Χρήστη Θύρα Από Τελευταία" + #~| msgid "Usage: %s [input]\n" #~ msgid "" #~ "Usage: vipw [options]\n" diff --git a/po/es.gmo b/po/es.gmo index 1ccca384..163f9fd5 100644 Binary files a/po/es.gmo and b/po/es.gmo differ diff --git a/po/es.po b/po/es.po index 9f4a184c..44ea1f83 100644 --- a/po/es.po +++ b/po/es.po @@ -32,7 +32,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.4.2\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2011-11-23 23:56+0100\n" "Last-Translator: Francisco Javier Cuadrado \n" "Language-Team: Debian l10n Spanish \n" @@ -587,6 +587,10 @@ msgstr "%s: no se pudo crear el directorio %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: se produjo un fallo al crear el directorio tcb para %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -595,6 +599,13 @@ msgstr "" "El valor de ENCRYPT_METHOD no es válido: «%s».\n" "Se usará DES, el valor predeterminado.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Incapaz de cambiar el directorio a «%s»\n" @@ -852,6 +863,10 @@ msgstr "Teléfono de casa" msgid "Other" msgstr "Otro" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: campos demasiado largos\n" + msgid "Cannot change ID to root.\n" msgstr "" "No se puede cambiar el identificador al usuario del administrador («root»).\n" @@ -904,10 +919,6 @@ msgstr "%s: «%s» es el NIS maestro para este cliente.\n" msgid "Changing the user information for %s\n" msgstr "Cambiando la información de usuario para %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: campos demasiado largos\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -938,8 +949,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds número de rondas SHA para los algoritmos\n" " de cifrado SHA*\n" @@ -1255,9 +1266,19 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system crea una cuenta del sistema\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list lista los miembros del grupo\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "nombre de usuario «%s» incorrecto\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» no es un nombre de grupo válido\n" @@ -1374,6 +1395,18 @@ msgstr "%s: su nombre de grupo no coincide con su nombre de usuario\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: sólo el administrador puede utilizar la opción -g/--group\n" +#, fuzzy +#| msgid "" +#| " -l, --no-log-init do not add the user to the lastlog and\n" +#| " faillog databases\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -l, --no-log-init no añade el usuario a las bases de datos de\n" +" lastlog y faillog\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" " -g, --gid GID cambia el identificador del grupo a GID\n" @@ -1433,6 +1466,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s y -r son incompatibles\n" @@ -1511,9 +1548,6 @@ msgstr "%s: no se pudo borrar %s\n" msgid "Usage: id [-a]\n" msgstr "Modo de uso: id [-a]\n" -msgid "Usage: id\n" -msgstr "Modo de uso: id\n" - msgid " groups=" msgstr "grupos=" @@ -1553,8 +1587,10 @@ msgstr "" " -u, --user USUARIO muestra el registro de «lastlog» del " "USUARIO\n" -msgid "Username Port From Latest" -msgstr "Nombre Puerto De Último" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Nombre Puerto Último" msgid "Username Port Latest" msgstr "Nombre Puerto Último" @@ -1686,10 +1722,6 @@ msgstr "Aviso: acceso restablecido después de un cierre temporal." msgid "Last login: %s on %s" msgstr "Último acceso: %s en %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Último acceso: %.19s en %s" - #, c-format msgid " from %.*s" msgstr " desde %.*s" @@ -1838,6 +1870,11 @@ msgstr "%s: línea %d: el usuario «%s» no existe en %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: línea %d: no se puede actualizar la contraseña\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: línea %d: mkdir %s falló: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: línea %d: mkdir %s falló: %s\n" @@ -1981,6 +2018,11 @@ msgstr "No se puede cambiar la contraseña para %s.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Todavía no se puede cambiar la contraseña de %s.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: se requieren contraseñas de shadow para -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -2016,10 +2058,6 @@ msgstr "La contraseña para %s no se ha modificado.\n" msgid "%s: password changed.\n" msgstr "%s: contraseña cambiada.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: información de caducidad de la contraseña cambiada.\n" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2139,6 +2177,10 @@ msgstr "Autenticación de contraseña evitada.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Por favor, introduzca su PROPIA contraseña como autenticación.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: funcionamiento incorrecto del enmascaramiento de la señal\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: no se pudo realizar el «fork» de la consola del usuario\n" @@ -2147,10 +2189,6 @@ msgstr "%s: no se pudo realizar el «fork» de la consola del usuario\n" msgid "%s: signal malfunction\n" msgstr "%s: funcionamiento incorrecto de la señal\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: funcionamiento incorrecto del enmascaramiento de la señal\n" - msgid "Session terminated, terminating shell..." msgstr "Sesión finalizada, parando la consola ..." @@ -2219,6 +2257,14 @@ msgstr "" "%s: %s\n" "(Ignorado)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "No está autorizado a usar su %s\n" @@ -2290,6 +2336,12 @@ msgid "%s: cannot create new defaults file: %s\n" msgstr "" "%s: no se puede crear un nuevo fichero de preferencias predeterminadas\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "" +"%s: no se puede crear un nuevo fichero de preferencias predeterminadas\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" @@ -2320,6 +2372,11 @@ msgstr "%s: el grupo «%s» es un grupo NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: demasiados grupos especificados (el máximo es %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: sin memoria. No se pudo actualizar %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2497,16 +2554,45 @@ msgstr "%s: no se puede reescribir el fichero de contraseñas\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z necesita que el núcleo tenga activado SELinux\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: nombre de usuario «%s» incorrecto\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "" +"%s: se produjo un fallo al reiniciar la entrada de faillog del UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" "%s: se produjo un fallo al reiniciar la entrada de faillog del UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "" +"%s: se produjo un fallo al reiniciar la entrada de faillog del UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "" +"%s: se produjo un fallo al reiniciar la entrada de lastlog del UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" "%s: se produjo un fallo al reiniciar la entrada de lastlog del UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "" +"%s: se produjo un fallo al reiniciar la entrada de lastlog del UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2555,10 +2641,19 @@ msgstr "%s: línea %d: chown %s falló: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: línea %d: chown %s falló: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: línea %d: chown %s falló: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Cambiando la información de la edad para %s\n" + msgid "Creating mailbox file" msgstr "Creando el fichero del buzón de correo" @@ -2571,6 +2666,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Estableciendo los permisos del fichero del buzón de correo" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: el usuario «%s» ya existe\n" @@ -2605,6 +2711,12 @@ msgstr "%s: no se pudo crear el usuario\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: no se puede crear el grupo\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: aviso: no se pudo relacionar el nombre del usuario %s con el usuario %s " +"de SELinux.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2616,15 +2728,15 @@ msgstr "" "%s: aviso: el directorio personal ya existe.\n" "No se va a copiar ningún fichero del directorio «skel» en él.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: aviso: no se pudo relacionar el nombre del usuario %s con el usuario %s " -"de SELinux.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force forzar la eliminación de los ficheros,\n" " incluso si no pertenecen al usuario\n" @@ -2752,6 +2864,19 @@ msgid "" " the user from other groups\n" msgstr "" +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -f, --force forzar la eliminación de los ficheros,\n" +" incluso si no pertenecen al usuario\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NOMBRE nuevo nombre para el usuario\n" @@ -2818,6 +2943,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: el usuario «%s» ya existe en %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: fecha «%s» incorrecta\n" @@ -2830,6 +2959,10 @@ msgstr "%s: fecha «%s» incorrecta\n" msgid "%s: no options\n" msgstr "%s: no se pudo abrir %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: las opciones -L, -p y -U son exclusivas\n" @@ -3003,6 +3136,18 @@ msgstr "%s: no se puede restaurar %s: %s (sus cambios están en %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: se produjo un fallo al buscar el directorio tcb de %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Modo de uso: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Último acceso: %.19s en %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: información de caducidad de la contraseña cambiada.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Nombre Puerto De Último" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method el método de cifrado (uno de %s)\n" diff --git a/po/eu.gmo b/po/eu.gmo index 92901c02..37f479d1 100644 Binary files a/po/eu.gmo and b/po/eu.gmo differ diff --git a/po/eu.po b/po/eu.po index e7af077d..92f9a4a5 100644 --- a/po/eu.po +++ b/po/eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: eu\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2011-11-26 19:42+0100\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" @@ -541,6 +541,10 @@ msgstr "%s: ezin da %s direktorioa sortu\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: ezin da %s direktorioa sortu\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -549,6 +553,13 @@ msgstr "" "ENCRYPT_METHOD balio baliogabea: '%s'.\n" "DES-era lehenesten.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Ezin da '%s'-ra direktorioa aldatu\n" @@ -802,6 +813,10 @@ msgstr "Etxeko telefonoa" msgid "Other" msgstr "Bestelakoa" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: eremu luzegiak\n" + msgid "Cannot change ID to root.\n" msgstr "Ezin izan da IDa root-era aldatu.\n" @@ -853,10 +868,6 @@ msgstr "%s: '%s' da bezero honen NIS nagusia.\n" msgid "Changing the user information for %s\n" msgstr "%s(r)en erabiltzaile informazioa aldatzen\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: eremu luzegiak\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -886,8 +897,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds SHA* kriptografia algoritmoentzako\n" " SHA erronda kopurua\n" @@ -1196,9 +1207,19 @@ msgstr " -r, --system sistema kontu bat sortu\n" #, fuzzy #| msgid " -Q, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -r, --remove-password TALDEaren pasahitaz kendu\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list taldearen partaideak zerrendatu\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "%s erabiltzaile-izen baliogabea\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' ez da baliozko talde-izena\n" @@ -1316,6 +1337,22 @@ msgstr "%s: zure talde-izena ez da erabiltzaile-izenaren berdina\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: root-ek bakarrik erabili dezake -g/--group aukera\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append gehitu erabiltzailea -G aukerak zehaztutako " +"talde\n" +" gehigarrietara beste taldeetatik kendu gabe\n" + #, fuzzy msgid " -g, --gid GID change the group ID to GID\n" msgstr " -r, --system sortu sistema kontuak\n" @@ -1372,6 +1409,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s eta -r ezin dira batera erabili\n" @@ -1450,9 +1491,6 @@ msgstr "%s: ezin da %s ezabatu\n" msgid "Usage: id [-a]\n" msgstr "Erabilera: id [-a]\n" -msgid "Usage: id\n" -msgstr "Erabilera: id\n" - msgid " groups=" msgstr " taldeak=" @@ -1491,8 +1529,10 @@ msgstr "" " -u, --user IZENA IZENA duen erabiltzailearen lastlog\n" " erregistroa bistaratzen du\n" -msgid "Username Port From Latest" -msgstr "Erabiltzaile-izena Ataka Nondik Azkena" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Erabiltzaile-izena Ataka Azkena" msgid "Username Port Latest" msgstr "Erabiltzaile-izena Ataka Azkena" @@ -1627,10 +1667,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "Azken saio-hasiera: %s %s(e)n" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Azken saio-hasiera: %.19s %s(e)n" - #, c-format msgid " from %.*s" msgstr " %.*s(e)tik" @@ -1776,6 +1812,11 @@ msgstr "%s: %d lerroa: `%s' erabiltzailea ez da existitzen %s-en\n" msgid "%s: line %d: can't update password\n" msgstr "%s: %d lerroa: ezin da pasahitza eguneratu\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: %d lerroa: mkdir %s-ek huts egin du: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: %d lerroa: mkdir %s-ek huts egin du: %s\n" @@ -1914,6 +1955,11 @@ msgstr "%s(r)en pasahitzak ezin dira aldatu.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "%s(r)en pasahitza ezin dira aldatu oraindik.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: -e itzalpeko pasahitza eskatzen du\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1949,10 +1995,6 @@ msgstr "%s(r)en pasahitza aldatu gabe dago.\n" msgid "%s: password changed.\n" msgstr "%s: pasahitza aldatuta.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: pasahitz iraungitzea informazioa aldatua.\n" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2069,6 +2111,10 @@ msgstr "Pasahitz autentifikazioa saltatuta.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Sartu zure pasahitz PROPIOA autentifikazio gisa.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n" @@ -2077,10 +2123,6 @@ msgstr "%s: Ezin da Erabiltzaile izena zehaztu.\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2148,6 +2190,14 @@ msgstr "" "%s: %s\n" "(Ez ikusi egin zaio)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Ez duzu 'su %s' exekutatzeko baimenik\n" @@ -2217,6 +2267,11 @@ msgstr "%s: %s konfigurazioa %s-n dagoena alde batetara utziko da\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: ezin da lehenespen fitxategi berria sortu\n" @@ -2245,6 +2300,11 @@ msgstr "%s: taldea '%s' NIS talde bat da.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: talde gehiegi zehaztu dira (geh. %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: memoriarik ez. Ezin da %s eguneratu.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2393,14 +2453,39 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z-ek SELinux gaituriko kernel bat behar du\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: '%s' erabiltzaile-izen baliogabea\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: huts %lu UIDaren faillog erregistroa berrezartzean: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: huts %lu UIDaren faillog erregistroa berrezartzean: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: huts %lu UIDaren faillog erregistroa berrezartzean: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: huts %lu UIDaren lastlog sarrera berrezartzean: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: huts %lu UIDaren lastlog sarrera berrezartzean: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: huts %lu UIDaren lastlog sarrera berrezartzean: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2447,10 +2532,19 @@ msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: %d lerroa: chown %s-ek huts egin du: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s(r)en data informazioa aldatzen\n" + msgid "Creating mailbox file" msgstr "Postakutxa fitxategia sortzen" @@ -2463,6 +2557,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Postakutxa fitxategi baimenak ezartzen" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: '%s' erabiltzailea badago dagoeneko\n" @@ -2497,6 +2602,12 @@ msgstr "%s: ezin da erabiltzailea sortu\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: ezin da taldea sortu\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: abisua: %s erabiltzaile izena %s SELinux erabiltzailera mapatzean huts " +"egin du.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2508,15 +2619,15 @@ msgstr "" "%s: abisua: etxe direktorioa badago dagoeneko.\n" "Ez da bertara skel direktorioko fitxategirik kopiatuko.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: abisua: %s erabiltzaile izena %s SELinux erabiltzailera mapatzean huts " -"egin du.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force fitxategien ezabatzea indartu nahiz ez\n" " erabiltzailearenak izan\n" @@ -2646,6 +2757,23 @@ msgstr "" "talde\n" " gehigarrietara beste taldeetatik kendu gabe\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append gehitu erabiltzailea -G aukerak zehaztutako " +"talde\n" +" gehigarrietara beste taldeetatik kendu gabe\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login IZENA saio hasiera izenaren balio berria\n" @@ -2711,6 +2839,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: '%s' erabiltzailea badago dagoeneko %s-n\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: '%s' data baliogabea\n" @@ -2723,6 +2855,10 @@ msgstr "%s: '%s' data baliogabea\n" msgid "%s: no options\n" msgstr "%s: ezin da %s ireki\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: -L, -p, eta -U banderak esklusiboak dira\n" @@ -2896,6 +3032,18 @@ msgstr "%s: ezin da %s leheneratu: %s (zure aldaketak %s(e)n daude)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: oinarrizko '%s' direktorio baliogabea\n" +#~ msgid "Usage: id\n" +#~ msgstr "Erabilera: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Azken saio-hasiera: %.19s %s(e)n" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: pasahitz iraungitzea informazioa aldatua.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Erabiltzaile-izena Ataka Nondik Azkena" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method zifratze metodoa (%s-etako bat)\n" diff --git a/po/fi.gmo b/po/fi.gmo index db1a7307..34e5fc5c 100644 Binary files a/po/fi.gmo and b/po/fi.gmo differ diff --git a/po/fi.po b/po/fi.po index 778ecf31..e2478074 100644 --- a/po/fi.po +++ b/po/fi.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2007-11-24 22:54+0100\n" "Last-Translator: Tommi Vainikainen \n" "Language-Team: Finnish \n" @@ -531,12 +531,23 @@ msgstr "%s: hakemistoa %s ei voi luoda\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: hakemistoa %s ei voi luoda\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Ei voi vaihtaa hakemistoon \"%s\"\n" @@ -770,6 +781,10 @@ msgstr "Kotipuhelin" msgid "Other" msgstr "Muu" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: kentät liian pitkiä\n" + msgid "Cannot change ID to root.\n" msgstr "Ei voi vaihtaa tunnusta pääkäyttäjäksi.\n" @@ -821,10 +836,6 @@ msgstr "%s: \"%s\" on NIS-palvelin tälle asiakkaalle.\n" msgid "Changing the user information for %s\n" msgstr "Muutetaan käyttäjän %s tietoja\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: kentät liian pitkiä\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -845,8 +856,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1121,9 +1132,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "virheellinen käyttäjätunnus \"%s\"\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s ei ole kelpo ryhmänimi\n" @@ -1228,6 +1247,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1277,6 +1302,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: valitsimet -s ja -r eivät sovi yhteen\n" @@ -1353,9 +1382,6 @@ msgstr "%s: tiedostoa %s ei voi päivittää\n" msgid "Usage: id [-a]\n" msgstr "Käyttö: id [-a]\n" -msgid "Usage: id\n" -msgstr "Käyttö: id\n" - msgid " groups=" msgstr " ryhmät=" @@ -1382,8 +1408,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Käyttäjä Portti Mistä Viimeksi" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Käyttäjä Portti Viimeksi" msgid "Username Port Latest" msgstr "Käyttäjä Portti Viimeksi" @@ -1516,10 +1544,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "Edellinen kirjautuminen: %s päätteellä %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Edellinen kirjautuminen: %.19s päätteellä %s" - #, c-format msgid " from %.*s" msgstr " osoitteesta %.*s" @@ -1661,6 +1685,10 @@ msgstr "%s: käyttäjää %s ei ole olemassa\n" msgid "%s: line %d: can't update password\n" msgstr "%s: rivi %d: salasanaa ei voi päivittää\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: rivi %d: mkdir epäonnistui\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: rivi %d: mkdir epäonnistui\n" @@ -1782,6 +1810,11 @@ msgstr "Käyttäjän %s salasanaa ei voi vaihtaa.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Käyttäjän %s salasanaa ei voi vaihtaa.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: varjosalasanat vaaditaan valitsimelle -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1813,10 +1846,6 @@ msgstr "Käyttäjän %s salasanaa ei vaihdettu.\n" msgid "%s: password changed.\n" msgstr "Salasana vaihdettu." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Salasanan vanhenemisvaroitus" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1924,6 +1953,10 @@ msgstr "Salasanatodennus ohitettu.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Syötä OMA salasanasi todennukseksi.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: tiedostoa %s ei voi lukita\n" @@ -1932,10 +1965,6 @@ msgstr "%s: tiedostoa %s ei voi lukita\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2003,6 +2032,14 @@ msgstr "" "%s: %s\n" "(Ohitettu)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Sinulla ei ole lupaa asettua käyttäjäksi %s\n" @@ -2072,6 +2109,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: uutta defaults-tiedostoa ei voi luoda\n" @@ -2101,6 +2143,10 @@ msgstr "%s: ryhmä \"%s\" on NIS-ryhmä.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: liian monta ryhmää määritelty (korkeintaan %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: muisti loppui funktiossa update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2238,14 +2284,35 @@ msgstr "%s: salasanatiedostoa ei voi uudelleenkirjoittaa\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: virheellinen käyttäjätunnus \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: salasanatiedostoa ei voi päivittää\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: hakemistoa %s ei voi luoda\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: hakemistoa %s ei voi luoda\n" @@ -2288,10 +2355,18 @@ msgstr "%s: rivi %d: chown epäonnistui\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: rivi %d: chown epäonnistui\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: rivi %d: chown epäonnistui\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Muutetaan käyttäjän %s vanhenemistietoja\n" + msgid "Creating mailbox file" msgstr "Luodaan postilaatikkotiedosto" @@ -2304,6 +2379,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Asetetaan postilaatikkotiedoston oikeudet" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: käyttäjä %s on olemassa\n" @@ -2339,6 +2425,10 @@ msgstr "%s: tiedostoa %s ei voi luoda\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: tiedostoa %s ei voi luoda\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2350,13 +2440,11 @@ msgstr "" "%s: varoitus: kotihakemisto on jo olemassa.\n" "Ei kopioida yhtään tiedostoa sinne skel-hakemistosta.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2468,6 +2556,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2520,6 +2615,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: käyttäjä %s on olemassa\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: virheellinen päiväys \"%s\"\n" @@ -2532,6 +2631,10 @@ msgstr "%s: virheellinen päiväys \"%s\"\n" msgid "%s: no options\n" msgstr "%s: tiedostoa %s ei voi lukita\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2704,6 +2807,19 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: virheellinen perushakemisto \"%s\"\n" +#~ msgid "Usage: id\n" +#~ msgstr "Käyttö: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Edellinen kirjautuminen: %.19s päätteellä %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Salasanan vanhenemisvaroitus" + +#~ msgid "Username Port From Latest" +#~ msgstr "Käyttäjä Portti Mistä Viimeksi" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/fr.po b/po/fr.po index 9455f676..afccbe23 100644 --- a/po/fr.po +++ b/po/fr.po @@ -21,7 +21,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow-man-pages 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2015-08-04 21:59+0200\n" "Last-Translator: Thomas Blein \n" "Language-Team: French \n" @@ -543,12 +543,23 @@ msgstr "" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "" @@ -794,6 +805,10 @@ msgstr "" msgid "Other" msgstr "autre" +#, c-format +msgid "%s: fields too long\n" +msgstr "" + msgid "Cannot change ID to root.\n" msgstr "" @@ -845,10 +860,6 @@ msgstr "" msgid "Changing the user information for %s\n" msgstr "Modifier le nom complet et les informations associées à un utilisateur" -#, c-format -msgid "%s: fields too long\n" -msgstr "" - #, c-format msgid "" "Usage: %s [options]\n" @@ -873,8 +884,8 @@ msgstr "" #, fuzzy msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "N'ajoute pas l'utilisateur aux bases de données lastlog et faillog." #, c-format @@ -1158,9 +1169,16 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +msgid "Invalid member username %s\n" +msgstr "unicité et validité des noms d'utilisateur ;" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "unicité et validité des noms de groupe ;" @@ -1266,6 +1284,13 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +#, fuzzy +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "N'ajoute pas l'utilisateur aux bases de données lastlog et faillog." + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1315,6 +1340,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "" @@ -1393,9 +1422,6 @@ msgstr "" msgid "Usage: id [-a]\n" msgstr "" -msgid "Usage: id\n" -msgstr "" - #, fuzzy msgid " groups=" msgstr "groups" @@ -1423,7 +1449,8 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" +#, c-format +msgid "Username Port From%*sLatest\n" msgstr "" msgid "Username Port Latest" @@ -1550,10 +1577,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "" - #, c-format msgid " from %.*s" msgstr "" @@ -1698,6 +1721,10 @@ msgstr "l'utilisateur indiqué n'existe pas" msgid "%s: line %d: can't update password\n" msgstr "impossible de mettre à jour le fichier des mots de passe" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "l'utilisateur indiqué n'existe pas" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "" @@ -1815,6 +1842,10 @@ msgstr "Les options ne peuvent pas être combinées." msgid "The password for %s cannot be changed yet.\n" msgstr "Les options ne peuvent pas être combinées." +#, fuzzy, c-format +msgid "%s: malformed password data obtained for user %s\n" +msgstr "configuration de la suite des mots de passe cachés « shadow password »" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1846,10 +1877,6 @@ msgstr "" msgid "%s: password changed.\n" msgstr "Modifications du mot de passe" -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Modifier les informations de validité d'un mot de passe" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1962,6 +1989,10 @@ msgstr "Échec système ou d'authentification" msgid "Please enter your OWN password as authentication.\n" msgstr "" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "" @@ -1970,10 +2001,6 @@ msgstr "" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2013,6 +2040,14 @@ msgid "" "(Ignored)\n" msgstr "" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "" @@ -2080,6 +2115,10 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "impossible de créer le répertoire personnel" +#, fuzzy, c-format +msgid "%s: cannot create directory for defaults file\n" +msgstr "impossible de créer le répertoire personnel" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" @@ -2108,6 +2147,10 @@ msgstr "" msgid "%s: too many groups specified (max %d).\n" msgstr "" +#, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2246,14 +2289,36 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "unicité et validité des noms d'utilisateur ;" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "" +"Ce champ est utilisé pour définir le répertoire personnel de l'utilisateur." + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "" +"Ce champ est utilisé pour définir le répertoire personnel de l'utilisateur." + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "impossible de créer le répertoire personnel" @@ -2294,10 +2359,18 @@ msgstr "" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "" +#, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Impossible de mettre à jour la correspondance d'utilisateur SELinux" + msgid "Creating mailbox file" msgstr "" @@ -2308,6 +2381,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "" @@ -2341,19 +2425,21 @@ msgstr "Identifiants subordonnés par utilisateur." msgid "%s: can't create subordinate group IDs\n" msgstr "Identifiants de groupe subordonnés par utilisateur." +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, c-format msgid "" "%s: warning: the home directory %s already exists.\n" "%s: Not copying any file from skel directory into it.\n" msgstr "" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2464,6 +2550,14 @@ msgid "" " the user from other groups\n" msgstr "" +#, fuzzy +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "N'ajoute pas l'utilisateur aux bases de données lastlog et faillog." + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2519,6 +2613,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "" @@ -2531,6 +2629,10 @@ msgstr "" msgid "%s: no options\n" msgstr "options" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2695,6 +2797,10 @@ msgid "%s: failed to find tcb directory for %s\n" msgstr "" "Ce champ est utilisé pour définir le répertoire personnel de l'utilisateur." +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Modifier les informations de validité d'un mot de passe" + #~ msgid "Marek" #~ msgstr "Marek" diff --git a/po/gl.gmo b/po/gl.gmo index dffc57c0..3339fa44 100644 Binary files a/po/gl.gmo and b/po/gl.gmo differ diff --git a/po/gl.po b/po/gl.po index a1b42771..4362c739 100644 --- a/po/gl.po +++ b/po/gl.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2006-07-18 23:27+0200\n" "Last-Translator: Jacobo Tarrio \n" "Language-Team: Galician \n" @@ -531,12 +531,23 @@ msgstr "%s: non se pode crear o directorio %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: non se pode crear o directorio %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Non se puido cambiar a \"%s\"\n" @@ -770,6 +781,10 @@ msgstr "Teléfono da casa" msgid "Other" msgstr "Outro" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: campos longos de máis\n" + msgid "Cannot change ID to root.\n" msgstr "Non se pode cambiar o ID a root.\n" @@ -821,10 +836,6 @@ msgstr "%s: \"%s\" é o mestre NIS deste cliente.\n" msgid "Changing the user information for %s\n" msgstr "A cambiar a información de usuario de %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: campos longos de máis\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -845,8 +856,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1121,9 +1132,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "nome de usuario \"%s\" non válido\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s non é un nome de grupo válido\n" @@ -1228,6 +1247,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1277,6 +1302,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s e -r son incompatibles\n" @@ -1353,9 +1382,6 @@ msgstr "%s: non se pode actualizar o ficheiro %s\n" msgid "Usage: id [-a]\n" msgstr "Emprego: id [-a]\n" -msgid "Usage: id\n" -msgstr "Emprego: id\n" - msgid " groups=" msgstr " grupos=" @@ -1382,8 +1408,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Usuario Porto Desde Última" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Usuario Porto Última" msgid "Username Port Latest" msgstr "Usuario Porto Última" @@ -1517,10 +1545,6 @@ msgstr "Aviso: vólvese permitir a entrada despois do bloqueo temporal." msgid "Last login: %s on %s" msgstr "Última entrada: %s en %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Última entrada: %.19s en %s" - #, c-format msgid " from %.*s" msgstr " desde %.*s" @@ -1662,6 +1686,10 @@ msgstr "%s: o usuario %s non existe\n" msgid "%s: line %d: can't update password\n" msgstr "%s: liña %d: non se pode actualizar o contrasinal\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: liña %d: a chamada a mkdir fallou\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: liña %d: a chamada a mkdir fallou\n" @@ -1783,6 +1811,11 @@ msgstr "Non se pode cambiar o contrasinal de %s.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Non se pode cambiar o contrasinal de %s.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: precísase de contrasinais shadow para -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1814,10 +1847,6 @@ msgstr "Non se cambiou o contrasinal de %s\n" msgid "%s: password changed.\n" msgstr "Cambiouse o contrasinal." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Aviso de caducidade de contrasinal" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1925,6 +1954,10 @@ msgstr "Omitiuse a autenticación por contrasinal.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Introduza O SEU PROPIO contrasinal para autenticación.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: non se pode bloquear o ficheiro %s\n" @@ -1933,10 +1966,6 @@ msgstr "%s: non se pode bloquear o ficheiro %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1990,6 +2019,14 @@ msgstr "" "%s: %s\n" "(Ignórase)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Non está autorizado para facer su %s\n" @@ -2059,6 +2096,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: non se pode crear o novo ficheiro de valores por defecto\n" @@ -2087,6 +2129,10 @@ msgstr "%s: o grupo \"%s\" é un grupo NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: especificáronse grupos de máis (máximo %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: esgotouse a memoria en update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2224,14 +2270,35 @@ msgstr "%s: non se pode rescribir o ficheiro de contrasinais\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: nome de usuario \"%s\" non válido\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: non se pode actualizar o ficheiro de contrasinais\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: non se pode crear o directorio %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: non se pode crear o directorio %s\n" @@ -2274,10 +2341,18 @@ msgstr "%s: liña %d: a chamada a chown fallou\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: liña %d: a chamada a chown fallou\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: liña %d: a chamada a chown fallou\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "A cambiar a información de caducidade de %s\n" + msgid "Creating mailbox file" msgstr "A crear o ficheiro da caixa do correo" @@ -2290,6 +2365,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "A estabrecer os permisos do ficheiro da caixa do correo" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: o usuario %s existe\n" @@ -2325,6 +2411,10 @@ msgstr "%s: non se pode crear %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: non se pode crear %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2336,13 +2426,11 @@ msgstr "" "%s: aviso: o directorio inicial xa existe.\n" "Non se copia nel ningún ficheiro do directorio skel.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2455,6 +2543,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2507,6 +2602,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: o usuario %s existe\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: data \"%s\" non válida\n" @@ -2519,6 +2618,10 @@ msgstr "%s: data \"%s\" non válida\n" msgid "%s: no options\n" msgstr "%s: non se pode abrir o ficheiro %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2690,6 +2793,19 @@ msgstr "%s: non se pode restaurar %s: %s (os seus cambios están en %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: directorio base \"%s\" non válido\n" +#~ msgid "Usage: id\n" +#~ msgstr "Emprego: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Última entrada: %.19s en %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Aviso de caducidade de contrasinal" + +#~ msgid "Username Port From Latest" +#~ msgstr "Usuario Porto Desde Última" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/he.gmo b/po/he.gmo index 13598b73..75d74a4c 100644 Binary files a/po/he.gmo and b/po/he.gmo differ diff --git a/po/he.po b/po/he.po index 4756d0ad..a6e5e969 100644 --- a/po/he.po +++ b/po/he.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2004-07-21 23:59+0300\n" "Last-Translator: Lior Kaplan \n" "Language-Team: Hebrew \n" @@ -522,12 +522,23 @@ msgstr "%s: לא יכול לשנות משתמש `%s' על לקוח NIS.\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "ספרית שורש לא חוקית \"%s\"\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, fuzzy, c-format msgid "Unable to cd to '%s'\n" msgstr "לא יכול לבצע cd ל-\"%s\"\n" @@ -765,6 +776,10 @@ msgstr "מספר טלפון בבית" msgid "Other" msgstr "אחר" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: שדות ארוכים מידי\n" + msgid "Cannot change ID to root.\n" msgstr "לא יכול לשנות ID ל-root\n" @@ -816,10 +831,6 @@ msgstr "" msgid "Changing the user information for %s\n" msgstr "משנה מידע בשביל המשתמש %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: שדות ארוכים מידי\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -840,8 +851,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, c-format @@ -1114,9 +1125,16 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +msgid "Invalid member username %s\n" +msgstr "%s: שם לא חוקי: \"%s\"\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: שם לא חוקי: \"%s\"\n" @@ -1221,6 +1239,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1270,6 +1294,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "" @@ -1350,9 +1378,6 @@ msgstr "%s: לא יכול לנעול קובץ צל\n" msgid "Usage: id [-a]\n" msgstr "שימוש: id [-a]\n" -msgid "Usage: id\n" -msgstr "שימוש: id\n" - msgid " groups=" msgstr "" @@ -1379,7 +1404,8 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" +#, c-format +msgid "Username Port From%*sLatest\n" msgstr "" msgid "Username Port Latest" @@ -1504,10 +1530,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "" - #, c-format msgid " from %.*s" msgstr "" @@ -1646,6 +1668,10 @@ msgstr "%s: שורה %d: משתמש לא מוכר %s\n" msgid "%s: line %d: can't update password\n" msgstr "" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: שורה %d: חסרה סיסמה חדשה\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: שורה %d: חסרה סיסמה חדשה\n" @@ -1761,6 +1787,10 @@ msgstr "" msgid "The password for %s cannot be changed yet.\n" msgstr "" +#, c-format +msgid "%s: malformed password data obtained for user %s\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1792,10 +1822,6 @@ msgstr "" msgid "%s: password changed.\n" msgstr "סיסמה: " -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "אזהרת תוקף סיסמה" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1907,6 +1933,10 @@ msgstr "" msgid "Please enter your OWN password as authentication.\n" msgstr "" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: לא יכול לקבוע את שם המשתמש שלך.\n" @@ -1915,10 +1945,6 @@ msgstr "%s: לא יכול לקבוע את שם המשתמש שלך.\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1958,6 +1984,14 @@ msgid "" "(Ignored)\n" msgstr "" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "" @@ -2024,6 +2058,10 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" +#, fuzzy, c-format +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: לא יכול לכתוב מחדש קובץ סיסמאות\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" @@ -2052,6 +2090,10 @@ msgstr "" msgid "%s: too many groups specified (max %d).\n" msgstr "" +#, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2188,14 +2230,34 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: שם לא חוקי: \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: לא יכול לעדכן קובץ סיסמאות\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "ספרית שורש לא חוקית \"%s\"\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "ספרית שורש לא חוקית \"%s\"\n" @@ -2237,10 +2299,18 @@ msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: שורה %d: לא יכול לעדכן רשומת סיסמה\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "שנה מידע הזדקות בשביל %s\n" + msgid "Creating mailbox file" msgstr "" @@ -2251,6 +2321,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "" @@ -2284,19 +2365,21 @@ msgstr "%s: לא יכול לנעול קובץ צל\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: לא יכול לנעול קובץ צל\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, c-format msgid "" "%s: warning: the home directory %s already exists.\n" "%s: Not copying any file from skel directory into it.\n" msgstr "" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2404,6 +2487,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2456,6 +2546,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: שם לא חוקי: \"%s\"\n" @@ -2468,6 +2562,10 @@ msgstr "%s: שם לא חוקי: \"%s\"\n" msgid "%s: no options\n" msgstr "%s: לא יכול לפתוח קובץ צל\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2629,6 +2727,13 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "ספרית שורש לא חוקית \"%s\"\n" +#~ msgid "Usage: id\n" +#~ msgstr "שימוש: id\n" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "אזהרת תוקף סיסמה" + #~ msgid "malloc(%d) failed\n" #~ msgstr "malloc(%d) נכשל\n" diff --git a/po/hu.gmo b/po/hu.gmo index 3c8a62ae..1a120d7e 100644 Binary files a/po/hu.gmo and b/po/hu.gmo differ diff --git a/po/hu.po b/po/hu.po index 23fd60d2..e04b0a17 100644 --- a/po/hu.po +++ b/po/hu.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2007-11-25 20:56+0100\n" "Last-Translator: SZERVÁC Attila \n" "Language-Team: Hungarian \n" @@ -526,12 +526,23 @@ msgstr "%s: %s könyvtár nem hozható létre\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: %s könyvtár nem hozható létre\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "nem lehet könyvtárat váltani ide: \"%s\"\n" @@ -765,6 +776,10 @@ msgstr "Otthoni telefon" msgid "Other" msgstr "Egyéb" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: túl hosszú mezők\n" + msgid "Cannot change ID to root.\n" msgstr "Az ID nem cserélhető root-ra.\n" @@ -816,10 +831,6 @@ msgstr "%s: `%s' a NIS mester ehhez a klienshez.\n" msgid "Changing the user information for %s\n" msgstr "%s felhasználói információinak cseréje\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: túl hosszú mezők\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -840,8 +851,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1116,9 +1127,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "érvénytelen '%s' felhasználó név\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s rossz csoport név\n" @@ -1223,6 +1242,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1272,6 +1297,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s és -r inkompatibilisek\n" @@ -1348,9 +1377,6 @@ msgstr "%s: %s fájl nem frissíthető\n" msgid "Usage: id [-a]\n" msgstr "Használat: id [-a]\n" -msgid "Usage: id\n" -msgstr "Használat: id\n" - msgid " groups=" msgstr " csoportok=" @@ -1377,8 +1403,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Felhasználónév Port Innen Legutóbb" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Felhasználónév Port Legutóbb" msgid "Username Port Latest" msgstr "Felhasználónév Port Legutóbb" @@ -1512,10 +1540,6 @@ msgstr "Figyelem: a bejelentkezés ismét lehetséges az átmeneti kizárás ut msgid "Last login: %s on %s" msgstr "Utolsó bejelentkezés: %s ide: %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Utolsó bejelentkezés: %.19s ide: %s" - #, c-format msgid " from %.*s" msgstr " innen: %.*s" @@ -1657,6 +1681,10 @@ msgstr "%s: %s felhasználó nem létezik\n" msgid "%s: line %d: can't update password\n" msgstr "%s: %d. sor: jelszó frissítése sikertelen\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: %d. sor: mkdir sikertelen\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: %d. sor: mkdir sikertelen\n" @@ -1778,6 +1806,11 @@ msgstr "%s jelszava nem változtatható\n" msgid "The password for %s cannot be changed yet.\n" msgstr "%s jelszava nem változtatható\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: a -e árnyék jelszavakat vár\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1809,10 +1842,6 @@ msgstr "%s jelszava változatlan.\n" msgid "%s: password changed.\n" msgstr "Jelszó módosítva." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Jelszó elévülési figyelmeztetés" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1920,6 +1949,10 @@ msgstr "Jelszó hitelesítés átlépve.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Add meg SAJÁT jelszavad a hitelesítéshez.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: %s fájl nem zárolható\n" @@ -1928,10 +1961,6 @@ msgstr "%s: %s fájl nem zárolható\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2000,6 +2029,14 @@ msgstr "" "%s: %s\n" "(Átlépve)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Nem vagy jogosult ehhez: su %s\n" @@ -2069,6 +2106,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: nem tudom létrehozni az új defaults fájlt\n" @@ -2097,6 +2139,10 @@ msgstr "%s: a(z) \"%s\" csoport egy NIS csoport.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: túl sok csoport van megadva (max %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: elfogyott a memória az update_group során\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2234,14 +2280,35 @@ msgstr "%s: nem tudom újraírni a jelszófájlt\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: érvénytelen '%s' felhasználónév\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: a jelszófájl frissítése sikertelen\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: %s könyvtár nem hozható létre\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: %s könyvtár nem hozható létre\n" @@ -2284,10 +2351,18 @@ msgstr "%s: %d. sor: chown sikertelen\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: %d. sor: chown sikertelen\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: %d. sor: chown sikertelen\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s elévülési információinak módosítása\n" + msgid "Creating mailbox file" msgstr "Postafiókfájl létrehozása" @@ -2300,6 +2375,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "A postafiókfájl jogosultságainak beállítása" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: %s felhasználó létezik\n" @@ -2335,6 +2421,10 @@ msgstr "%s: %s létrehozása sikertelen\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: %s létrehozása sikertelen\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2346,13 +2436,11 @@ msgstr "" "%s: figyelem: a saját könyvtár már létezik.\n" "Nem másolok semmit bele a vázkönyvtárból.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2463,6 +2551,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2515,6 +2610,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: %s felhasználó létezik\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: érvénytelen dátum: \"%s\"\n" @@ -2527,6 +2626,10 @@ msgstr "%s: érvénytelen dátum: \"%s\"\n" msgid "%s: no options\n" msgstr "%s: %s fájl nem nyitható meg\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2697,6 +2800,19 @@ msgstr "%s: nem tudom visszaállítani %s-t: %s (módosításaid itt vannak: %s) msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: érvénytelen alapkönyvtár: \"%s\"\n" +#~ msgid "Usage: id\n" +#~ msgstr "Használat: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Utolsó bejelentkezés: %.19s ide: %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Jelszó elévülési figyelmeztetés" + +#~ msgid "Username Port From Latest" +#~ msgstr "Felhasználónév Port Innen Legutóbb" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/id.gmo b/po/id.gmo index 1d523157..49b74211 100644 Binary files a/po/id.gmo and b/po/id.gmo differ diff --git a/po/id.po b/po/id.po index 521e142c..42657403 100644 --- a/po/id.po +++ b/po/id.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2007-11-25 20:58+0100\n" "Last-Translator: Parlin Imanuel Toh \n" "Language-Team: Debian Indonesia \n" @@ -525,12 +525,23 @@ msgstr "%s: tak dapat membuat direktori %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: tak dapat membuat direktori %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, fuzzy, c-format msgid "Unable to cd to '%s'\n" msgstr "Tidak dapat cd ke \"%s\"\n" @@ -764,6 +775,10 @@ msgstr "Telepon Rumah" msgid "Other" msgstr "Lain-lain" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: ruas terlalu panjang\n" + msgid "Cannot change ID to root.\n" msgstr "Tidak dapat mengubah ID menjadi root.\n" @@ -815,10 +830,6 @@ msgstr "%s: `%s' merupakan master NIS untuk klien ini.\n" msgid "Changing the user information for %s\n" msgstr "Mengubah informasi pengguna dari %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: ruas terlalu panjang\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -839,8 +850,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1115,9 +1126,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "nama pengguna tak sah '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: nama grup %s tidak sah\n" @@ -1222,6 +1241,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1271,6 +1296,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s dan -r tidak kompatible\n" @@ -1347,9 +1376,6 @@ msgstr "%s: tidak dapat memperbaharui berkas %s\n" msgid "Usage: id [-a]\n" msgstr "Penggunaan: id [-a]\n" -msgid "Usage: id\n" -msgstr "Penggunaan: id\n" - msgid " groups=" msgstr " grup=" @@ -1376,8 +1402,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Nama pengguna Port Dari Terakhir" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Nama pengguna Port Terakhir" msgid "Username Port Latest" msgstr "Nama pengguna Port Terakhir" @@ -1510,10 +1538,6 @@ msgstr "Perhatian: login dibolehkan setelah penguncian sementara." msgid "Last login: %s on %s" msgstr "Login terakhir: %s pada %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Login terakhir: %.19s pada %s" - #, c-format msgid " from %.*s" msgstr " dari %.*s" @@ -1655,6 +1679,10 @@ msgstr "%s: pengguna %s tak ada\n" msgid "%s: line %d: can't update password\n" msgstr "%s: baris %d: tak dapat memperbaharui kata sandi\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: baris %d: mkdir gagal\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: baris %d: mkdir gagal\n" @@ -1776,6 +1804,11 @@ msgstr "Kata sandi untuk %s tidak dapat diganti.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Kata sandi untuk %s tidak dapat diganti.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: kata sandi bayangan dibutuhkan untuk -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1807,10 +1840,6 @@ msgstr "Kata sandi untuk %s tidak diubah.\n" msgid "%s: password changed.\n" msgstr "Password telah diubah." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Peringatan Kadaluarsanya Kata Sandi" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1918,6 +1947,10 @@ msgstr "Otentikasi kata sandi diabaikan.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Silakan masukkan kata sandi anda SENDIRI sebagai otentikasi.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: tidak dapat mengunci berkas %s\n" @@ -1926,10 +1959,6 @@ msgstr "%s: tidak dapat mengunci berkas %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1985,6 +2014,14 @@ msgstr "" "%s: %s\n" "(Diabaikan)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Anda tak diperbolehkan untuk su %s\n" @@ -2054,6 +2091,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: tak dapat membuat berkas-berkas bawaan yang baru\n" @@ -2082,6 +2124,10 @@ msgstr "%s: grup `%s' merupakan grup NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: grup yang diberikan terlalu banyak (maks %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: kehabisan memori saat update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2219,14 +2265,35 @@ msgstr "%s: tak dapat menulis kembali berkas kata sandi\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: nama pengguna `%s' tak sah\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: tidak dapat memperbaharui berkas kata sandi\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: tak dapat membuat direktori %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: tak dapat membuat direktori %s\n" @@ -2269,10 +2336,18 @@ msgstr "%s: baris %d: chown gagal\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: baris %d: chown gagal\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: baris %d: chown gagal\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Mengubah informasi umur akun untuk %s\n" + msgid "Creating mailbox file" msgstr "" @@ -2283,6 +2358,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: pengguna %s telah ada\n" @@ -2317,6 +2403,10 @@ msgstr "%s: tak dapat membuat %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: tak dapat membuat %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2328,13 +2418,11 @@ msgstr "" "%s: perhatian: direktori rumah telah ada.\n" "Tak menyalin berkas apapun dari direktori skel ke situ.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2445,6 +2533,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2497,6 +2592,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: pengguna %s telah ada\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: tanggal `%s' tak sah\n" @@ -2509,6 +2608,10 @@ msgstr "%s: tanggal `%s' tak sah\n" msgid "%s: no options\n" msgstr "%s: tidak dapat membuka berkas %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2679,6 +2782,19 @@ msgstr "%s: tidak dapat mengembalikan %s: %s (perubahan ada dalam %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: direktori awal `%s' tak sah\n" +#~ msgid "Usage: id\n" +#~ msgstr "Penggunaan: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Login terakhir: %.19s pada %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Peringatan Kadaluarsanya Kata Sandi" + +#~ msgid "Username Port From Latest" +#~ msgstr "Nama pengguna Port Dari Terakhir" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/it.gmo b/po/it.gmo index f0bfb4c6..ed89bd0c 100644 Binary files a/po/it.gmo and b/po/it.gmo differ diff --git a/po/it.po b/po/it.po index b93702c9..8db911e8 100644 --- a/po/it.po +++ b/po/it.po @@ -25,7 +25,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2008-03-27 14:40+0100\n" "Last-Translator: Danilo Piazzalunga \n" "Language-Team: Italian \n" @@ -553,6 +553,10 @@ msgstr "%s: impossibile creare la directory %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: impossibile creare la directory %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -561,6 +565,13 @@ msgstr "" "Valore di ENCRYPT_METHOD «%s» non valido.\n" "Viene usato il valore predefinito, DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Impossibile spostarsi nella directory «%s»\n" @@ -803,6 +814,10 @@ msgstr "Numero telefonico di casa" msgid "Other" msgstr "Altro" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: lunghezza dei campi eccessiva\n" + msgid "Cannot change ID to root.\n" msgstr "Impossibile cambiare ID a root.\n" @@ -854,10 +869,6 @@ msgstr "%s: «%s» è il NIS master per questo client.\n" msgid "Changing the user information for %s\n" msgstr "Modifica delle informazioni relative all'utente %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: lunghezza dei campi eccessiva\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -885,8 +896,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds il numero di passaggi SHA per gli\n" " algoritmi di cifratura SHA*\n" @@ -1176,9 +1187,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "nome utente «%s» non valido\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s non è un nome di gruppo valido\n" @@ -1288,6 +1307,15 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +#, fuzzy +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -s, --sha-rounds il numero di passaggi SHA per gli\n" +" algoritmi di cifratura SHA*\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1340,6 +1368,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s e -r sono incompatibili\n" @@ -1416,9 +1448,6 @@ msgstr "%s: impossibile aggiornare il file %s\n" msgid "Usage: id [-a]\n" msgstr "Uso: id [-a]\n" -msgid "Usage: id\n" -msgstr "Uso: id\n" - msgid " groups=" msgstr " gruppi=" @@ -1445,8 +1474,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Nome utente Porta Da Ultimo accesso" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Nome utente Porta Ultimo accesso" msgid "Username Port Latest" msgstr "Nome utente Porta Ultimo accesso" @@ -1580,10 +1611,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "Ultimo accesso: %s su %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Ultimo accesso: %.19s su %s" - #, c-format msgid " from %.*s" msgstr " da %.*s" @@ -1726,6 +1753,10 @@ msgstr "%s: l'utente «%s» non esiste\n" msgid "%s: line %d: can't update password\n" msgstr "%s: riga %d: impossibile aggiornare la password\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: riga %d: la chiamata mkdir ha restituito un errore\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: riga %d: la chiamata mkdir ha restituito un errore\n" @@ -1856,6 +1887,11 @@ msgstr "La password di %s non può essere cambiata.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "La password di %s non può ancora essere cambiata.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: le shadow password sono necessarie per -e\n" + #, fuzzy, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1891,10 +1927,6 @@ msgstr "La password di %s non è cambiata.\n" msgid "%s: password changed.\n" msgstr "Password cambiata." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Avviso di scadenza della password" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2002,6 +2034,10 @@ msgstr "Evitata l'autenticazione tramite password.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Inserire la PROPRIA password per autenticarsi.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: impossibile fare il lock del file %s\n" @@ -2010,10 +2046,6 @@ msgstr "%s: impossibile fare il lock del file %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2081,6 +2113,14 @@ msgstr "" "%s: %s\n" "(Ignorato)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Non si è autorizzati a diventare %s\n" @@ -2150,6 +2190,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: impossibile creare il nuovo file dei valori predefiniti\n" @@ -2178,6 +2223,10 @@ msgstr "%s: il gruppo «%s» è un gruppo NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: troppi gruppi specificati (max %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: memoria esaurita. Impossibila aggiornare il database dei gruppi.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2333,14 +2382,35 @@ msgstr "%s: impossibile riscrivere il file delle password\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: nome utente «%s» non valido\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: impossibile aggiornare il file delle password\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: impossibile creare la directory %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: impossibile creare la directory %s\n" @@ -2383,10 +2453,18 @@ msgstr "%s: riga %d: la chiamata chown ha restituito un errore\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: riga %d: la chiamata chown ha restituito un errore\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: riga %d: la chiamata chown ha restituito un errore\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Modifica delle informazioni sulla durata dell'account di %s\n" + msgid "Creating mailbox file" msgstr "Creazione del file della casella di posta" @@ -2399,6 +2477,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Impostazione dei permessi del file della casella di posta" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: l'utente «%s» esiste già\n" @@ -2434,6 +2523,10 @@ msgstr "%s: impossibile creare l'utente\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: impossibile creare il gruppo\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2445,14 +2538,12 @@ msgstr "" "%s: attenzione: la directory home esiste già.\n" "Non verrà copiato nessun file dalla directory skel.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - #, fuzzy msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -s, --sha-rounds il numero di passaggi SHA per gli\n" " algoritmi di cifratura SHA*\n" @@ -2575,6 +2666,16 @@ msgid "" " the user from other groups\n" msgstr "" +#, fuzzy +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -s, --sha-rounds il numero di passaggi SHA per gli\n" +" algoritmi di cifratura SHA*\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2636,6 +2737,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: l'utente «%s» esiste già\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: data «%s» non valida\n" @@ -2648,6 +2753,10 @@ msgstr "%s: data «%s» non valida\n" msgid "%s: no options\n" msgstr "%s: impossibile aprire il file %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: i flag -L, -p e -U sono mutuamente esclusivi\n" @@ -2824,6 +2933,19 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: directory di base «%s» non valida\n" +#~ msgid "Usage: id\n" +#~ msgstr "Uso: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Ultimo accesso: %.19s su %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Avviso di scadenza della password" + +#~ msgid "Username Port From Latest" +#~ msgstr "Nome utente Porta Da Ultimo accesso" + #~ msgid "malloc(%d) failed\n" #~ msgstr "malloc(%d) non riuscita\n" diff --git a/po/ja.gmo b/po/ja.gmo index 419e3408..86ec96ee 100644 Binary files a/po/ja.gmo and b/po/ja.gmo differ diff --git a/po/ja.po b/po/ja.po index 7995868d..ac1d8f6a 100644 --- a/po/ja.po +++ b/po/ja.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.5\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2012-05-21 02:52+0900\n" "Last-Translator: NAKANO Takeo \n" "Language-Team: Japanese \n" @@ -555,6 +555,10 @@ msgstr "%s: chroot ディレクトリ%s にアクセスできません: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: ディレクトリ %s に chroot できませんでした: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -563,6 +567,13 @@ msgstr "" "ENCRYPT_METHOD の値が正しくありません: '%s'\n" "デフォルトの DES を用います。\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "'%s' へディレクトリを変更できません\n" @@ -814,6 +825,10 @@ msgstr "自宅電話番号" msgid "Other" msgstr "その他" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: 入力内容が長過ぎます\n" + msgid "Cannot change ID to root.\n" msgstr "ID を root へ変更できません。\n" @@ -865,10 +880,6 @@ msgstr "%s: '%s' がこのクライアントの NIS マスターです。\n" msgid "Changing the user information for %s\n" msgstr "%s のユーザ情報を変更中\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: 入力内容が長過ぎます\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -898,8 +909,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds SHA* 暗号化アルゴリズムの SHA ラウンド回数\n" @@ -1206,9 +1217,19 @@ msgstr " -r, --system システムアカウントを作成し #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_DIR chroot するディレクトリ\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list グループのメンバーを表示します。\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "ユーザ名 '%s' は不正です\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' はグループ名として正しくありません\n" @@ -1322,6 +1343,22 @@ msgstr "%s: あなたのグループ名はあなたのユーザ名とマッチ msgid "%s: only root can use the -g/--group option\n" msgstr "%s: -g/--group オプションは root のみが指定できます\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append ユーザを (-G で指定された) 補助グループ群\n" +" GROUPS に追加する。他のグループからの削除は\n" +" 行わない。\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID グループの ID を GID に変更します\n" @@ -1381,6 +1418,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort エントリを UID でソートする\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s と -r は同時に指定できません\n" @@ -1459,9 +1500,6 @@ msgstr "%s: %s を削除できません\n" msgid "Usage: id [-a]\n" msgstr "使い方: id [-a]\n" -msgid "Usage: id\n" -msgstr "使い方: id\n" - msgid " groups=" msgstr " グループ=" @@ -1494,8 +1532,10 @@ msgid "" msgstr "" " -u, --user LOGIN 指定ユーザ LOGIN の lastlog 記録を表示する\n" -msgid "Username Port From Latest" -msgstr "ユーザ名 ポート 場所 最近のログイン" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "ユーザ名 ポート 最近のログイン" msgid "Username Port Latest" msgstr "ユーザ名 ポート 最近のログイン" @@ -1630,10 +1670,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "最近のログイン: %s on %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "最近のログイン: %.19s on %s" - #, c-format msgid " from %.*s" msgstr " from %.*s" @@ -1782,6 +1818,11 @@ msgstr "%s: %d 行: ユーザ '%s' は %s に存在しません\n" msgid "%s: line %d: can't update password\n" msgstr "%s: %d 行: パスワードを更新できません\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: %d 行: mkdir %s が失敗しました: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: %d 行: mkdir %s が失敗しました: %s\n" @@ -1916,6 +1957,11 @@ msgstr "%s のパスワードは変更できません。\n" msgid "The password for %s cannot be changed yet.\n" msgstr "%s のパスワードはまだ変更できません。\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: シャドウパスワードには -e が必要です\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1951,10 +1997,6 @@ msgstr "%s のパスワードは変更されません。\n" msgid "%s: password changed.\n" msgstr "%s: パスワードは変更されました。\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: パスワード期限切れ情報を変更しました\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2070,6 +2112,10 @@ msgstr "パスワード認証を迂回します。\n" msgid "Please enter your OWN password as authentication.\n" msgstr "「あなた自身のパスワード」を入力して認証してください。\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: シグナルのマスキングが異常です\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: ユーザシェルを起動できません。\n" @@ -2078,10 +2124,6 @@ msgstr "%s: ユーザシェルを起動できません。\n" msgid "%s: signal malfunction\n" msgstr "%s: シグナルが異常です\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: シグナルのマスキングが異常です\n" - msgid "Session terminated, terminating shell..." msgstr "セッションが終了しました。シェルを終了しています..." @@ -2148,6 +2190,14 @@ msgstr "" "%s: %s\n" "(無視)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "あなたには su %s する権限がありません\n" @@ -2217,6 +2267,11 @@ msgstr "%1$s: %3$s 中の設定 %2$s は無視されます\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: 新しいデフォルトファイルを作れません\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: 新しいデフォルトファイルを作れません\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: 新しいデフォルトファイルを作れません\n" @@ -2245,6 +2300,11 @@ msgstr "%s: グループ '%s' は NIS グループです。\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: 指定したグループ数が多すぎます (最大 %d 個)。\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: メモリ不足です。%s を更新できません。\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2398,14 +2458,39 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z は SELinux カーネル以外では使えません\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: '%s' はユーザ名に使えません\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: UID %lu の faillog エントリをリセットできませんでした: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: UID %lu の faillog エントリをリセットできませんでした: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: UID %lu の faillog エントリをリセットできませんでした: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: UID %lu の lastlog エントリをリセットできませんでした: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: UID %lu の lastlog エントリをリセットできませんでした: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: UID %lu の lastlog エントリをリセットできませんでした: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2453,10 +2538,20 @@ msgstr "%s: %d 行: chown %s が失敗しました: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: %d 行: chown %s が失敗しました: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: %d 行: chown %s が失敗しました: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s の SELinux ログインマッピングを生成できません\n" + msgid "Creating mailbox file" msgstr "メールボックスファイルを作成します" @@ -2469,6 +2564,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "メールボックスファイルの許可属性を設定します" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: ユーザ '%s' は既に存在します\n" @@ -2504,6 +2610,11 @@ msgstr "%s: ユーザを作成できません\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: グループを作成できません\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: 警告: ユーザ名 %s から %s への SELinux ユーザマッピングに失敗しました。\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2515,14 +2626,15 @@ msgstr "" "%s: 警告: ホームディレクトリが既に存在します。\n" "skel ディレクトリからのコピーは行いません。\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: 警告: ユーザ名 %s から %s への SELinux ユーザマッピングに失敗しました。\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force 当該ユーザの所有でないファイルも削除する\n" @@ -2648,6 +2760,23 @@ msgstr "" " GROUPS に追加する。他のグループからの削除は\n" " 行わない。\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append ユーザを (-G で指定された) 補助グループ群\n" +" GROUPS に追加する。他のグループからの削除は\n" +" 行わない。\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NEW_LOGIN ログイン名を変更する\n" @@ -2711,6 +2840,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: ユーザ '%s' は既に %s に存在します\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: 日付 '%s' は不正です\n" @@ -2723,6 +2856,10 @@ msgstr "%s: 日付 '%s' は不正です\n" msgid "%s: no options\n" msgstr "%s: オプションがありません\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: -L, -p, -U フラグは同時に指定できません\n" @@ -2889,6 +3026,18 @@ msgstr "%s: %s を復旧できませんでした: %s (あなたの変更は %s msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: %s の tcb ディレクトリが見付かりませんでした\n" +#~ msgid "Usage: id\n" +#~ msgstr "使い方: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "最近のログイン: %.19s on %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: パスワード期限切れ情報を変更しました\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "ユーザ名 ポート 場所 最近のログイン" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method 暗号化の方法 (%s のどれかひとつ)\n" diff --git a/po/kk.gmo b/po/kk.gmo index f963da74..2da11aa8 100644 Binary files a/po/kk.gmo and b/po/kk.gmo differ diff --git a/po/kk.po b/po/kk.po index e91a7470..6a9735c8 100644 --- a/po/kk.po +++ b/po/kk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadowutils\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2017-02-07 17:09+0500\n" "Last-Translator: Baurzhan Muftakhidinov \n" "Language-Team: Kazakh \n" @@ -553,6 +553,10 @@ msgstr "%s: %s chroot бумасына өту (chdir) мүмкін емес: %s\ msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: %s бумасына chroot жасау мүмкін емес: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -561,6 +565,13 @@ msgstr "" "Қате ENCRYPT_METHOD мәні: '%s'.\n" "Бастапқы DES мәні қолданылады.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "'%s' бумасына ауысу мүмкін емес\n" @@ -821,6 +832,10 @@ msgstr "Үй телефон нөмірі" msgid "Other" msgstr "Басқа" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: жолдар өте ұзын\n" + msgid "Cannot change ID to root.\n" msgstr "Суперпайдаланушы (root) құқығын алу мүмкін емес.\n" @@ -872,10 +887,6 @@ msgstr "%s: '%s' - бұл клиент үшін NIS сервері.\n" msgid "Changing the user information for %s\n" msgstr "%s үшін пайдаланушы ақпаратын өзгерту\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: жолдар өте ұзын\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -905,8 +916,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds SHA* тектес алгоритмдер үшін SHA\n" " раундтар саны\n" @@ -1219,9 +1230,19 @@ msgstr " -r, --system жүйелік тіркелгіні жа #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_DIR chroot үшін бума\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list топ мүшелердің тізімін шығару\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "қате пайдаланушы аты '%s'\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' дұрыс топ аты емес\n" @@ -1334,6 +1355,23 @@ msgstr "%s: сіздің топ атыңыз пайдаланушы атыңыз msgid "%s: only root can use the -g/--group option\n" msgstr "%s: тек root -g/--group опциясын қолдана алады\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append пайдаланушыны қосымша ТОПТАР ішіне қосу\n" +" -G опциясы сияқты, пайдаланушыны басқа " +"топтардан\n" +" өшірмейді\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID топ ID-ін GID мәніне орнату\n" @@ -1394,6 +1432,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort жазбаларды UID б/ша сұрыптау\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s пен -r өзара үйлеспейді\n" @@ -1472,9 +1514,6 @@ msgstr "%s: %s өшіру мүмкін емес\n" msgid "Usage: id [-a]\n" msgstr "Қолданылуы: id [-a]\n" -msgid "Usage: id\n" -msgstr "Қолданылуы: id\n" - msgid " groups=" msgstr " топтар=" @@ -1511,8 +1550,10 @@ msgstr "" " -u, --user ТІРКЕЛГІ көрсетілген ТІРКЕЛГІ үшін lastlog жазбаларын " "көрсету\n" -msgid "Username Port From Latest" -msgstr "Пайдаланушы Порт Қайдан Соңғы" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Пайдаланушы Порт Соңғы" msgid "Username Port Latest" msgstr "Пайдаланушы Порт Соңғы" @@ -1648,10 +1689,6 @@ msgstr "Ескерту: тіркелгі уақытша сөндірілгенн msgid "Last login: %s on %s" msgstr "Жүйеге соңғы кіру: %s, терминал %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Жүйеге соңғы кіру: %.19s, терминал %s" - #, c-format msgid " from %.*s" msgstr " қайдан: %.*s" @@ -1799,6 +1836,11 @@ msgstr "%s: жол %d: '%s' пайдаланушысы %s ішінде жоқ\n" msgid "%s: line %d: can't update password\n" msgstr "%s: жол %d: парольді жаңарту мүмкін емес\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: жол %d: mkdir %s сәтсіз: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: жол %d: mkdir %s сәтсіз: %s\n" @@ -1941,6 +1983,11 @@ msgstr "%s үшін парольді өзгертуге болмайды.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "%s үшін парольді қазір өзгертуге болмайды.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: -e үшін көлеңкелі парольдер керек\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1975,10 +2022,6 @@ msgstr "%s пайдаланушының паролі өзгертілмеді.\n msgid "%s: password changed.\n" msgstr "%s: пароль өзгертілді.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: пароль мерзімі туралы ақпарат өзгертілді.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2095,6 +2138,10 @@ msgstr "Парольдік аутентификацияны аттап өтем msgid "Please enter your OWN password as authentication.\n" msgstr "Шындылықты тексеру үшін ӨЗІҢІЗДІҢ пароліңізді енгізіңіз.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: сигналды басқару ақаулығы\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Пайдаланушы қоршамын іске қосу мүмкін емес\n" @@ -2103,10 +2150,6 @@ msgstr "%s: Пайдаланушы қоршамын іске қосу мүмкі msgid "%s: signal malfunction\n" msgstr "%s: сигнал ақаулығы\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: сигналды басқару ақаулығы\n" - msgid "Session terminated, terminating shell..." msgstr "Сессия тоқтатылды, қоршамды тоқтату..." @@ -2175,6 +2218,14 @@ msgstr "" "%s: %s\n" "(Елемеу)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Сізде su %s жасау үшін құқығыңыз жоқ\n" @@ -2244,6 +2295,11 @@ msgstr "%s: %s баптауы, ол %s ішінде, есепке алынба msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: жаңа defaults файлын жасау мүмкін емес\n" @@ -2272,6 +2328,11 @@ msgstr "%s: '%s' тобы NIS тобы болып тұр.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: шектен көп топ саны көрсетілген (максимум %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Жады жеткіліксіз. %s жаңарту мүмкін емес.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2432,14 +2493,39 @@ msgstr "%s: -C опциясын -S опциясымен бірге қолдан msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z өз алдында SELinux қосулы ядроны талап етеді\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: '%s' пайдаланушы аты қате\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: %lu UID-і үшін faillog жазбасын нөлдеу сәтсіз: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: %lu UID-і үшін faillog жазбасын нөлдеу сәтсіз: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: %lu UID-і үшін faillog жазбасын нөлдеу сәтсіз: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: %lu UID-і үшін lastlog жазбасын нөлдеу сәтсіз: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: %lu UID-і үшін lastlog жазбасын нөлдеу сәтсіз: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: %lu UID-і үшін lastlog жазбасын нөлдеу сәтсіз: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2487,10 +2573,20 @@ msgstr "%s: жол %d: chown %s сәтсіз: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: жол %d: chown %s сәтсіз: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: жол %d: chown %s сәтсіз: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s үшін SELinux тіркелгі сәйкестігін жасау мүмкін емес\n" + msgid "Creating mailbox file" msgstr "Пошта файлын құру" @@ -2502,6 +2598,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Пошта файлына рұқсаттарды орнату" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: '%s' пайдаланушысы бар болып тұр\n" @@ -2537,6 +2644,10 @@ msgstr "%s: бағынышты пайдаланушы ID-ын жасау мүм msgid "%s: can't create subordinate group IDs\n" msgstr "%s: бағынышты топ ID-ын жасау мүмкін емес\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "%s: ескерту: %s пайдаланушы атын %s SELinux сәйкестендіру сәтсіз.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2548,13 +2659,15 @@ msgstr "" "%s: ескерту: үй бумасы бар болып тұр.\n" "Оның ішіне skel бумасынан бірде-бір файл көшірілмеді.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "%s: ескерту: %s пайдаланушы атын %s SELinux сәйкестендіру сәтсіз.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force файлдарды өшіруді мәжбүрлеу,\n" " пайдаланушы иелігінде болмаса да\n" @@ -2683,6 +2796,24 @@ msgstr "" "топтардан\n" " өшірмейді\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append пайдаланушыны қосымша ТОПТАР ішіне қосу\n" +" -G опциясы сияқты, пайдаланушыны басқа " +"топтардан\n" +" өшірмейді\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NEW_LOGIN тіркелгі үшін жаңа аты\n" @@ -2748,6 +2879,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: '%s' пайдаланушысы %s ішінде бар болып тұр\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: жарамсыз бағынышты uid ауқымы '%s'\n" @@ -2760,6 +2895,10 @@ msgstr "%s: жарамсыз бағынышты gid ауқымы '%s'\n" msgid "%s: no options\n" msgstr "%s: опциялар жоқ\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: -L, -p және -U жалаушаларын бірге қолдануға болмайды\n" @@ -2930,6 +3069,18 @@ msgstr "%s: %s қайтару мүмкін емес: %s (сіздің өзгер msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: %s үшін tcb бумасын табу сәтсіз\n" +#~ msgid "Usage: id\n" +#~ msgstr "Қолданылуы: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Жүйеге соңғы кіру: %.19s, терминал %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: пароль мерзімі туралы ақпарат өзгертілді.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Пайдаланушы Порт Қайдан Соңғы" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method шифрлеу тәсілі (%s ішінен біреу)\n" diff --git a/po/km.gmo b/po/km.gmo index 120eaaad..e1cfb12b 100644 Binary files a/po/km.gmo and b/po/km.gmo differ diff --git a/po/km.po b/po/km.po index bd20f5ee..300fd4c9 100644 --- a/po/km.po +++ b/po/km.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow_po_km\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2006-06-28 10:08+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" @@ -539,12 +539,23 @@ msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s ប msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "មិន​អាច​​ cd ចូលទៅ​ '%s' បានទេ\n" @@ -781,6 +792,10 @@ msgstr "ទូរស័ព្ទនៅ​ផ្ទះ" msgid "Other" msgstr "ផ្សេងៗ" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s ៖ វាល គឺ​វែងវែងពេក​\n" + msgid "Cannot change ID to root.\n" msgstr "មិន​អាចផ្លាស់ប្តូរ​លេខ​សម្គាល់​ទៅ​ជា​ root បាន​ឡើយ​ ។\n" @@ -832,10 +847,6 @@ msgstr "%s ៖ '%s' ជាមេ​ NIS សម្រាប់​ម៉ាស៊ msgid "Changing the user information for %s\n" msgstr "កំពុងផ្លាស់​​ប្តូរ​ព័ត៌មាន​អ្នកប្រើ​សម្រាប់​ %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s ៖ វាល គឺ​វែងវែងពេក​\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -856,8 +867,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1132,9 +1143,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ​ '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s  ៖ %s ជា​ឈ្មោះ​ក្រុម​មិន​ត្រឹមត្រូវ​\n" @@ -1239,6 +1258,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1288,6 +1313,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s ៖ -s និង​ -r គឺមិន​ត្រូវ​គ្នាទេ​\n" @@ -1368,9 +1397,6 @@ msgstr "%s ៖ មិនអាច​ធ្វើឲ្យឯកសារ %s ទ msgid "Usage: id [-a]\n" msgstr "របៀបប្រើ ៖ លេខសម្គាល់ [-a]\n" -msgid "Usage: id\n" -msgstr "របៀបប្រើ​ ៖ លេខសម្គាល់\n" - msgid " groups=" msgstr " ក្រុម​=" @@ -1397,9 +1423,9 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -#, fuzzy -msgid "Username Port From Latest" -msgstr "ឈ្មោះ​អ្នក​ប្រើ ច្រក ពី ចុង​ក្រោយ​បំផុត\n" +#, fuzzy, c-format +msgid "Username Port From%*sLatest\n" +msgstr "ឈ្មោះ​អ្នក​ប្រើ ច្រក ចុង​ក្រោយ​បំផុត​\n" #, fuzzy msgid "Username Port Latest" @@ -1536,10 +1562,6 @@ msgstr "ការព្រមាន ៖ បាន​អនុញ្ញាតឲ msgid "Last login: %s on %s" msgstr "ចូល​ចុងក្រោយ ៖​ %s លើ​ %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "ចូល​ចុងក្រោយ​ ៖ %.19s លើ​ %s" - #, c-format msgid " from %.*s" msgstr "ពី​ %.*s" @@ -1681,6 +1703,10 @@ msgstr "%s ៖ មិនទាន់មានអ្នក​ប្រើ​ %s msgid "%s: line %d: can't update password\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ មិន​អាច​ធ្វើ​ឲ្យ​ពាក្យ​សម្ងាត់​ទាន់សម័យ​បានឡើយ​\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s ៖ បន្ទាត់​ %d ៖ mkdir បានបរាជ័យ​\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ mkdir បានបរាជ័យ​\n" @@ -1804,6 +1830,11 @@ msgstr "មិនអាចប្ដូរ​ពាក្យ​សម្ងាត msgid "The password for %s cannot be changed yet.\n" msgstr "មិនអាចប្ដូរ​ពាក្យ​សម្ងាត់​សម្រាប់​ %s បានឡើយ ។\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s ៖ បានទាមទារ​ពាក្យ​សម្ងាត់​ស្រមោល​​សម្រាប់​-e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1835,10 +1866,6 @@ msgstr "មិនបានប្ដូរ​ពាក្យ​សម្ងាត msgid "%s: password changed.\n" msgstr "ពាក្យ​សម្ងាត់​បាន​ប្តូរ​ ។\n" -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "ការព្រមាន​ការផុត​កំណត់​នៃ​ពាក្យ​សម្ងាត់​" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1950,6 +1977,10 @@ msgstr "ការ​ផ្ទៀងផ្ទាត់​ភាព​ត្រឹ msgid "Please enter your OWN password as authentication.\n" msgstr "សូម​បញ្ចូល​ពាក្យ​សម្ងាត់ផ្ទាល់ខ្លួន​របស់អ្នក​ ជា​ការផ្ទៀងផ្ទាត់ភាពត្រឹមត្រូវ​ ។\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s ៖ មិន​អាច​ចាក់សោ​ឯកសារ​ %s បានទេ\n" @@ -1958,10 +1989,6 @@ msgstr "%s ៖ មិន​អាច​ចាក់សោ​ឯកសារ​ msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2015,6 +2042,14 @@ msgstr "" "%s: %s\n" "(មិន​អើពើ​)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "អ្នកគ្មាន​ការ​អនុញ្ញាតឲ្យ​ចូល​ទៅ​កាន់​ su ទេ​ %s\n" @@ -2087,6 +2122,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​លំនាំ​ដើម​ថ្មី​បានឡើយ​\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​លំនាំ​ដើម​ថ្មី​បានឡើយ​\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s ៖ មិន​អាច​បង្កើត​ឯកសារ​លំនាំ​ដើម​ថ្មី​បានឡើយ​\n" @@ -2115,6 +2155,10 @@ msgstr "%s ៖ ក្រុម​ '%s' គឺជាក្រុម​ NIS ។\ msgid "%s: too many groups specified (max %d).\n" msgstr "%s ៖ ក្រុម​ដែលបានបញ្ជាក់​ច្រើនពេក​ (អតិ​ %d) ។\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: អស់​សតិ​ក្នុង​ក្នុងការធ្វើឲ្យ​ក្រុមទាន់សម័យ\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2252,14 +2296,35 @@ msgstr "%s ៖ មិន​អាច​សរសេរ​ឯកសារ​ព msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s ៖ឈ្មោះ​អ្នក​ប្រើ​មិន​ត្រឹមត្រូវ​ '%s'\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s ៖ មិនអាច​ធ្វើឲ្យ​ឯកសារ​ពាក្យ​សម្ងាត់​ទាន់សម័យ​បានទេ\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s ៖ មិន​​អាច​បង្កើត​ថត​ %s បានឡើយ\n" @@ -2302,10 +2367,18 @@ msgstr "%s ៖ បន្ទាត់​ %d ៖ chown បានបរាជ័ msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s ៖ បន្ទាត់​ %d ៖ chown បានបរាជ័យ​\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s ៖ បន្ទាត់​ %d ៖ chown បានបរាជ័យ​\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "ការផ្លាស់​ប្តូរ​ព័ត៌មាន​ចាស់​សម្រាប់​ %s\n" + msgid "Creating mailbox file" msgstr "កំពុង​បង្កើត​ឯកសារ​ប្រអប់​សំបុត្រ​" @@ -2316,6 +2389,17 @@ msgstr "រក​ក្រុម​​ 'សំបុត្រ​' មិន​ msgid "Setting mailbox file permissions" msgstr "ការកំណត់​សិទ្ធ​លើ​ឯកសារ​ប្រអប់​សំបុត្រ​" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s ៖ អ្នក​ប្រើ​ %s មាន​រួច​ហើយ​\n" @@ -2349,6 +2433,10 @@ msgstr "%s ៖ មិន​អាច​បង្កើត​ %s បានឡើ msgid "%s: can't create subordinate group IDs\n" msgstr "%s ៖ មិន​អាច​បង្កើត​ %s បានឡើយ\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2360,13 +2448,11 @@ msgstr "" "%s ៖ ការព្រមាន​ ៖ មានថតផ្ទះ​រួចហើយ ។\n" "មិនចម្លង​​ឯកសារណាមួយ​ពីថត​ skel ចូលក្នុង​វានោះទេ ។\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2475,6 +2561,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2527,6 +2620,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s ៖ អ្នក​ប្រើ​ %s មាន​រួច​ហើយ​\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s ៖ កាលបរិច្ឆទ​មិន​ត្រឹមត្រូវ​ '%s'\n" @@ -2539,6 +2636,10 @@ msgstr "%s ៖ កាលបរិច្ឆទ​មិន​ត្រឹមត msgid "%s: no options\n" msgstr "%s ៖ មិនអាច​បើក​ឯកសារ​ %s បានទេ\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2709,6 +2810,20 @@ msgstr "%s ៖ មិន​អាច​ស្តារ %s ៖ %s (ការប msgid "%s: failed to find tcb directory for %s\n" msgstr "%s  ៖ ថត​មូលដ្ឋាន​មិន​ត្រឹមត្រូវ​ '%s'\n" +#~ msgid "Usage: id\n" +#~ msgstr "របៀបប្រើ​ ៖ លេខសម្គាល់\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "ចូល​ចុងក្រោយ​ ៖ %.19s លើ​ %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "ការព្រមាន​ការផុត​កំណត់​នៃ​ពាក្យ​សម្ងាត់​" + +#, fuzzy +#~ msgid "Username Port From Latest" +#~ msgstr "ឈ្មោះ​អ្នក​ប្រើ ច្រក ពី ចុង​ក្រោយ​បំផុត\n" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/ko.gmo b/po/ko.gmo index f856dc2c..9685e40e 100644 Binary files a/po/ko.gmo and b/po/ko.gmo differ diff --git a/po/ko.po b/po/ko.po index d4e150ed..0d562ea0 100644 --- a/po/ko.po +++ b/po/ko.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2009-04-19 21:32+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" @@ -531,6 +531,10 @@ msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: 디렉터리 %s을(를) 만들 수 없습니다\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -539,6 +543,13 @@ msgstr "" "쓸 수 없는 ENCRYPT_METHOD 값: '%s'.\n" "기본값인 DES로 설정합니다.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "'%s' 디렉터리로 이동할 수 없습니다\n" @@ -774,6 +785,10 @@ msgstr "집 전화번호" msgid "Other" msgstr "기타" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: 입력범위가 너무 깁니다\n" + msgid "Cannot change ID to root.\n" msgstr "아이디를 루트로 바꿀 수는 없습니다.\n" @@ -825,10 +840,6 @@ msgstr "%s: '%s'이(가) 현재의 클라이언트의 NIS 마스터입니다.\n" msgid "Changing the user information for %s\n" msgstr "%s의 사용자의 정보를 바꿉니다\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: 입력범위가 너무 깁니다\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -854,8 +865,8 @@ msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라 #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" #, c-format @@ -1136,9 +1147,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "올바르지 않은 사용자 이름 '%s'\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s'은(는) 사용할 수 없는 그룹 이름입니다\n" @@ -1244,6 +1263,13 @@ msgstr "%s: 그룹 이름이 사용자 이름과 맞지 않습니다\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: root만 -g/--group 옵션을 쓸 수 있습니다\n" +#, fuzzy +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1294,6 +1320,10 @@ msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라 msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s 옵션과 -r 옵션을 동시에 쓸 수 없습니다\n" @@ -1370,9 +1400,6 @@ msgstr "%s: '%s'을(를) 삭제할 수 없습니다\n" msgid "Usage: id [-a]\n" msgstr "사용법: id [-a]\n" -msgid "Usage: id\n" -msgstr "사용법: id\n" - msgid " groups=" msgstr " 그룹 목록=" @@ -1399,8 +1426,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "사용자이름 포트 어디서 최근정보" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "사용자이름 포트 최근정보" msgid "Username Port Latest" msgstr "사용자이름 포트 최근정보" @@ -1533,10 +1562,6 @@ msgstr "경고: 로그인이 일시적으로 폐쇄된 후 다시 로그인을 msgid "Last login: %s on %s" msgstr "마지막 로그인: %s on %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "마지막 로그인: %.19s on %s" - #, c-format msgid " from %.*s" msgstr " %.*s 에서" @@ -1680,6 +1705,10 @@ msgstr "%s: %d번 줄: `%s' 사용자가 %s 안에 없습니다\n" msgid "%s: line %d: can't update password\n" msgstr "%s: %d번 줄: 암호를 업데이트 할 수 없습니다\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: %d번 줄: 디렉터리 만들기에 실패했습니다\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: %d번 줄: 디렉터리 만들기에 실패했습니다\n" @@ -1804,6 +1833,11 @@ msgstr "%s의 암호는 바꿀 수 없습니다.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "%s의 암호는 아직 바꿀 수 없습니다.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: -e 옵션을 사용할 경우 셰도우 암호가 필요합니다\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1838,10 +1872,6 @@ msgstr "%s의 암호를 바꾸지 않았습니다.\n" msgid "%s: password changed.\n" msgstr "암호를 바꿨습니다." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "암호 사용만료 예고" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1949,6 +1979,10 @@ msgstr "암호 인증이 무시되었습니다.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "인증하기 위해 본인의 암호를 입력하십시오.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: 사용자 이름을 인식할 수 없습니다.\n" @@ -1957,10 +1991,6 @@ msgstr "%s: 사용자 이름을 인식할 수 없습니다.\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2027,6 +2057,14 @@ msgstr "" "%s: %s\n" "(무시됨)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "su %s을(를) 하도록 인증이 되지 않았습니다\n" @@ -2096,6 +2134,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: 새로운 기본값 파일을 만들 수 없습니다\n" @@ -2124,6 +2167,11 @@ msgstr "%s: '%s' 그룹은 NIS 그룹입니다.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: 그룹이 너무 많이 명시되었습니다 (최대 %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: 메모리가 부족합니다. %s을(를) 업데이트할 수 없습니다.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2266,15 +2314,42 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: 쓸 수 없는 사용자 이름 '%s'\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "" +"%s: UID %lu번의 로그인 실패 기록 항목을 초기화하는데 실패했습니다: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" "%s: UID %lu번의 로그인 실패 기록 항목을 초기화하는데 실패했습니다: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "" +"%s: UID %lu번의 로그인 실패 기록 항목을 초기화하는데 실패했습니다: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: UID %lu번의 최근 기록 항목을 초기화하는데 실패했습니다: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: UID %lu번의 최근 기록 항목을 초기화하는데 실패했습니다: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: UID %lu번의 최근 기록 항목을 초기화하는데 실패했습니다: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2319,10 +2394,18 @@ msgstr "%s: %d번 줄: chown 실패했습니다\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: %d번 줄: chown 실패했습니다\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: %d번 줄: chown 실패했습니다\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s의 사용기한 정보를 바꿉니다\n" + msgid "Creating mailbox file" msgstr "메일함 파일을 만드는 중" @@ -2333,6 +2416,17 @@ msgstr "'mail' 그룹이 없습니다. 사용자의 메일함 파일을 0600 모 msgid "Setting mailbox file permissions" msgstr "메일함의 파일 권한을 설정 중" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: '%s' 사용자가 이미 있습니다\n" @@ -2368,6 +2462,10 @@ msgstr "%s: 사용자를 만들 수 없습니다\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: 그룹을 만들 수 없습니다\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2379,14 +2477,12 @@ msgstr "" "%s: 경고: 홈디렉터리가 이미 있습니다.\n" "skel 디렉터리에서 파일을 복사하지 않습니다.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - #, fuzzy msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" msgid " -r, --remove remove home directory and mail spool\n" @@ -2499,6 +2595,14 @@ msgid "" " the user from other groups\n" msgstr "" +#, fuzzy +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr " -s, --sha-rounds SHA* 암호화 알고리즘의 SHA 라운드 수\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2555,6 +2659,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: '%s' 사용자가 이미 %s 안에 있습니다\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: 날짜 '%s'은(는) 잘못되었습니다\n" @@ -2567,6 +2675,10 @@ msgstr "%s: 날짜 '%s'은(는) 잘못되었습니다\n" msgid "%s: no options\n" msgstr "%s: %s을(를) 열 수 없습니다\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: -L, -p, -U 옵션은 한 번에 하나만 쓸 수 있습니다\n" @@ -2741,6 +2853,19 @@ msgstr "%s: %s을(를) 복구할 수 없습니다: %s (바뀐 사항은 %s에 msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: 기본 디렉터리 '%s' 잘못되었습니다\n" +#~ msgid "Usage: id\n" +#~ msgstr "사용법: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "마지막 로그인: %.19s on %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "암호 사용만료 예고" + +#~ msgid "Username Port From Latest" +#~ msgstr "사용자이름 포트 어디서 최근정보" + #~ msgid "malloc(%d) failed\n" #~ msgstr "malloc(%d)에 실패\n" diff --git a/po/nb.gmo b/po/nb.gmo index dd5a5912..c8dd2e80 100644 Binary files a/po/nb.gmo and b/po/nb.gmo differ diff --git a/po/nb.po b/po/nb.po index 9d679f53..fee0e962 100644 --- a/po/nb.po +++ b/po/nb.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2018-03-05 12:33+0100\n" "Last-Translator: Åka Sikrom \n" "Language-Team: Norwegian Bokmål \n" @@ -581,6 +581,10 @@ msgstr "%s: klarte ikke å bytte mappe til chroot-mappe %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: klarte ikke å utføre chroot med %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -589,6 +593,13 @@ msgstr "" "Ugyldig verdi for ENCRYPT_METHOD: «%s»\n" "Faller tilbake til DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Klarte ikke å bytte mappe til «%s»\n" @@ -845,6 +856,10 @@ msgstr "Hjemmetelefon" msgid "Other" msgstr "Annet" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: feltene er for lange\n" + msgid "Cannot change ID to root.\n" msgstr "Klarte ikke å endre ID til root.\n" @@ -898,10 +913,6 @@ msgstr "%s: «%s» er NIS-sjef for denne klienten.\n" msgid "Changing the user information for %s\n" msgstr "Endrer brukerinformasjon for %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: feltene er for lange\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -933,8 +944,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds antall SHA-runder for kryptering med SHA*\n" @@ -1260,9 +1271,19 @@ msgstr " -r, --system lag en systemkonto\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_MAPPE mappe som skal brukes til chroot\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list vis gruppemedlemmer\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "ugyldig brukernavn «%s»\n" + # , c-format #, c-format msgid "%s: '%s' is not a valid group name\n" @@ -1387,6 +1408,23 @@ msgstr "%s: gruppenavnet samsvarer ikke med brukernavnet ditt\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: bare root kan bruke valget -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append legg til brukeren i de ekstra gruppene " +"listet i \n" +" valget -G option uten å fjerne ham/henne\n" +" fra andre grupper\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID endre gruppe-ID til GID\n" @@ -1448,6 +1486,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort sorter oppføringer etter UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s og -r passer ikke sammen\n" @@ -1529,9 +1571,6 @@ msgstr "%s: klarte ikke å slette %s\n" msgid "Usage: id [-a]\n" msgstr "Bruk: id [-a]\n" -msgid "Usage: id\n" -msgstr "Bruk: id\n" - msgid " groups=" msgstr " grupper=" @@ -1565,8 +1604,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr " -u, --user LOGIN skriv ut lastlog for valgt LOGIN\n" -msgid "Username Port From Latest" -msgstr "Brukernavn Port Fra Sist" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Brukernavn Port Sist" msgid "Username Port Latest" msgstr "Brukernavn Port Sist" @@ -1698,10 +1739,6 @@ msgstr "Advarsel: innlogging reaktivert etter midlertidig stenging." msgid "Last login: %s on %s" msgstr "Forrige login: %s på %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Forrige login: %.19s på %s" - #, c-format msgid " from %.*s" msgstr " fra %.*s" @@ -1862,6 +1899,11 @@ msgstr "%s: linje %d: bruker «%s» finnes ikke i %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: linje %d: klarte ikke å oppdatere passord\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: linje %d: mkdir %s mislyktes: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: linje %d: mkdir %s mislyktes: %s\n" @@ -1915,7 +1957,7 @@ msgstr "" msgid "" " -l, --lock lock the password of the named account\n" -msgstr " -L, --lock lås passord for den valgt konto\n" +msgstr " -l, --lock lås passord for den valgt konto\n" msgid "" " -n, --mindays MIN_DAYS set minimum number of days before password\n" @@ -1998,6 +2040,11 @@ msgstr "Passord for %s kan ikke endres.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Passord for %s kan ikke endres enda.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: skyggepassord kreves for -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -2033,10 +2080,6 @@ msgstr "Passordet for %s er uendret.\n" msgid "%s: password changed.\n" msgstr "%s: passordet er endret.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: informasjon om utløp av passord er endret.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2158,6 +2201,10 @@ msgstr "Passordautentisering forbi-koblet.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Skriv inn ditt EGET passord for å autentisere deg.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: funksjonsfeil ved signalmasking\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Klarte ikke å spalte ut brukerskall\n" @@ -2166,10 +2213,6 @@ msgstr "%s: Klarte ikke å spalte ut brukerskall\n" msgid "%s: signal malfunction\n" msgstr "%s: funksjonsfeil ved signal\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: funksjonsfeil ved signalmasking\n" - msgid "Session terminated, terminating shell..." msgstr "Økt avsluttet, avslutter skall ..." @@ -2237,6 +2280,14 @@ msgstr "" "%s: %s\n" "(Ignorert)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Du har ikke adgang til å utføre su %s\n" @@ -2308,6 +2359,11 @@ msgstr "%s: oppsettet for %s i %s blir ignorert\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: klarte ikke å opprette ny forvalg-fil\n" @@ -2336,6 +2392,12 @@ msgstr "%s: gruppe «%s» er en NIS-gruppe.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: for mange grupper (maks %d).\n" +# , c-format +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Minner er fullt. Klarte ikke å oppdatere %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2500,14 +2562,39 @@ msgstr "%s: Du kan ikke kombinere valgene «-C» og «-S»\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z krever kjerne som har SELinux slått på\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: ugyldig brukernavn «%s»\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: klarte ikke nullstille faillog-oppføring for UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: klarte ikke nullstille faillog-oppføring for UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: klarte ikke nullstille faillog-oppføring for UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: klarte ikke nullstille lastlog-oppføring for UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: klarte ikke nullstille lastlog-oppføring for UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: klarte ikke nullstille lastlog-oppføring for UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2556,10 +2643,20 @@ msgstr "%s: linje %d: chown %s mislyktes: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: linje %d: chown %s mislyktes: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: linje %d: chown %s mislyktes: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Klarte ikke å lage SELinux-brukerkobling for %s\n" + msgid "Creating mailbox file" msgstr "Lager e-postkassefil" @@ -2570,6 +2667,17 @@ msgstr "Fant ikke gruppa «mail». Oppretter e-postkassefil med modus 0600.\n" msgid "Setting mailbox file permissions" msgstr "Endrer rettigheter for e-postkassefil" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + # , c-format #, c-format msgid "%s: user '%s' already exists\n" @@ -2611,6 +2719,11 @@ msgstr "%s: klarte ikke å lage underordnede bruker-id-er\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: klarte ikke å lage underordnede gruppe-id-er\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: advarsel: klarte ikke å avbilde brukernavn %s til %s SELinux-bruker.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2622,14 +2735,15 @@ msgstr "" "%s: advarsel: hjemmemappa finnes fra før.\n" "Kopierer ikke filer dit fra skel-mappa.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: advarsel: klarte ikke å avbilde brukernavn %s til %s SELinux-bruker.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force fjern filer «med makt»,\n" " selv om brukeren ikke eier dem\n" @@ -2758,6 +2872,24 @@ msgstr "" " valget -G option uten å fjerne ham/henne\n" " fra andre grupper\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append legg til brukeren i de ekstra gruppene " +"listet i \n" +" valget -G option uten å fjerne ham/henne\n" +" fra andre grupper\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NY_LOGIN ny verdi for login-navnet\n" @@ -2824,6 +2956,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: bruker «%s» finnes fra før i %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: underordnet uid-rekkevidde «%s» er ugyldig\n" @@ -2837,6 +2973,10 @@ msgstr "%s: underordnet gid-rekkevidde «%s» er ugyldig\n" msgid "%s: no options\n" msgstr "%s: ingen valg\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: valgene -L, -p og -U utelukker hverandre\n" @@ -3014,6 +3154,18 @@ msgstr "%s: klarte ikke å gjenopprette %s: %s (endringer ligger i %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: fant ikke tcb-mappe for %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Bruk: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Forrige login: %.19s på %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: informasjon om utløp av passord er endret.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Brukernavn Port Fra Sist" + #~| msgid "Usage: %s [input]\n" #~ msgid "" #~ "Usage: vipw [options]\n" diff --git a/po/ne.gmo b/po/ne.gmo index f6b65df5..63754f31 100644 Binary files a/po/ne.gmo and b/po/ne.gmo differ diff --git a/po/ne.po b/po/ne.po index f4c84364..264ec2a8 100644 --- a/po/ne.po +++ b/po/ne.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2006-06-16 14:30+0545\n" "Last-Translator: Shiva Pokharel \n" "Language-Team: Nepali \n" @@ -532,12 +532,23 @@ msgstr "%s: डाइरेकट्री सिर्जना गर्न msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "'%s' मा सि डि गर्न असफल\n" @@ -771,6 +782,10 @@ msgstr "गृह फोन" msgid "Other" msgstr "अन्य" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: अति लामो फाँट\n" + msgid "Cannot change ID to root.\n" msgstr "ID लाई मूलमा परिवर्तन गर्न सकिदैन ।\n" @@ -822,10 +837,6 @@ msgstr "%s: '%s' यो ग्राहकको लागि NIS मास् msgid "Changing the user information for %s\n" msgstr " %s को लागि प्रयोगकर्ता सूचना परिवर्तन गरिदैछ\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: अति लामो फाँट\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -846,8 +857,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1122,9 +1133,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "अवैध प्रयोगकर्ता नाम '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s वैध समूह नाम होइन\n" @@ -1229,6 +1248,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1278,6 +1303,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s र -r मिल्दोजुल्दो छैन\n" @@ -1354,9 +1383,6 @@ msgstr "%s: फाइल %s अद्यावधिक गर्न सकि msgid "Usage: id [-a]\n" msgstr "उपयोग: id [-a]\n" -msgid "Usage: id\n" -msgstr "उपयोग: id\n" - msgid " groups=" msgstr " समूहहरू=" @@ -1383,8 +1409,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "सबै भन्दा पछिल्लो बाट पोर्ट प्रयोगकर्ता नाम" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "सबैभन्दा पछिल्लो पोर्ट प्रयोगकर्ता नाम" msgid "Username Port Latest" msgstr "सबैभन्दा पछिल्लो पोर्ट प्रयोगकर्ता नाम" @@ -1518,10 +1546,6 @@ msgstr "चेतावनी: अस्थायी लगआउट पछि msgid "Last login: %s on %s" msgstr "अन्तिम लगइन: %s मा %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "अन्तिम लगइन: %s मा %.19s" - #, c-format msgid " from %.*s" msgstr " %.*s बाट" @@ -1663,6 +1687,10 @@ msgstr "%s: प्रयोगकर्ता %s अवस्थित छैन msgid "%s: line %d: can't update password\n" msgstr "%s: रेखा %d: पासवर्ड अद्यावधिक गर्न सकिएन\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: रेखा %d: mkdir असफल भयो\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: रेखा %d: mkdir असफल भयो\n" @@ -1784,6 +1812,11 @@ msgstr "%s को लागि पासवर्ड परिवर्तन msgid "The password for %s cannot be changed yet.\n" msgstr "%s को लागि पासवर्ड परिवर्तन गर्न सकिदैन ।\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: स्याडो पासवर्डहरुको लागि -e को आवश्यक पर्दछ\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1816,10 +1849,6 @@ msgstr "%s को लागि पासवर्ड परिवर्तन msgid "%s: password changed.\n" msgstr "पासवर्ड परिवर्तन भयो ।" -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "पासवर्ड समाप्ति चेतावनी" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1927,6 +1956,10 @@ msgstr "पासवर्ड प्रमाणीकरण बाइपास msgid "Please enter your OWN password as authentication.\n" msgstr " कृपया प्रमाणीकरणको रुपमा तपाईँको आफ्नो पासवर्ड प्रविष्ट गर्नुहोस् ।\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: फाइल %s ताल्चा मार्न सकिदैन\n" @@ -1935,10 +1968,6 @@ msgstr "%s: फाइल %s ताल्चा मार्न सकिदै msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1992,6 +2021,14 @@ msgstr "" "%s: %s\n" "(उपेक्षा गरियो)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "तपाईँ su %s मा प्रमाणिकरण हुनुहुन्न\n" @@ -2061,6 +2098,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: नयाँ पूर्वनिर्धारित फाइल सिर्जना गर्न सकिएन\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: नयाँ पूर्वनिर्धारित फाइल सिर्जना गर्न सकिएन\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: नयाँ पूर्वनिर्धारित फाइल सिर्जना गर्न सकिएन\n" @@ -2089,6 +2131,10 @@ msgstr "%s: समूह '%s' NIS समूह हो ।\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: अति धेरै समूहरू निर्दिष्ट गरिएको छ (max %d) ।\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: update_group मा स्मृति भन्दा बाहिर\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2226,14 +2272,35 @@ msgstr "%s: पासवर्ड फाइल पुन:लेखन गर् msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: अवैध प्रयोगकर्ता नाम '%s'\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: पासवर्ड फाइल अद्यावधिक गर्न सकिएन\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: डाइरेकट्री सिर्जना गर्न सकिएन %s\n" @@ -2276,10 +2343,18 @@ msgstr "%s: रेखा %d: chown असफल भयो\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: रेखा %d: chown असफल भयो\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: रेखा %d: chown असफल भयो\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s का लागि अवधि सूचना परिवर्तन गरिदैछ\n" + msgid "Creating mailbox file" msgstr "मेल बाकस फाइल सिर्जना गर्दै" @@ -2290,6 +2365,17 @@ msgstr "समूह मेल फेला परेन । ०६०० मो msgid "Setting mailbox file permissions" msgstr "मेल बाकस फाइल अनुमतिहरू मिलाउदै" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: प्रयोगकर्ता %s अवस्थित छ\n" @@ -2325,6 +2411,10 @@ msgstr "%s: यो %s सिर्जना गर्न सकिदैन\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: यो %s सिर्जना गर्न सकिदैन\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2336,13 +2426,11 @@ msgstr "" "%s: चेतावनी: गृह डाइरेक्ट्री पहिल्यै अवस्थित छ ।\n" "यसमा स्केल डाइरेक्ट्रीबाट कुनै फाइल प्रतिलिपी भएको छैन ।\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2451,6 +2539,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2503,6 +2598,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: प्रयोगकर्ता %s अवस्थित छ\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: अवैध मिति '%s'\n" @@ -2515,6 +2614,10 @@ msgstr "%s: अवैध मिति '%s'\n" msgid "%s: no options\n" msgstr "%s: फाइल %s खोल्न सकिएन\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2685,6 +2788,19 @@ msgstr "%s: पुन:भण्डारण गर्न सकिदैन %s: msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: अवैध डाइरेक्ट्री '%s'\n" +#~ msgid "Usage: id\n" +#~ msgstr "उपयोग: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "अन्तिम लगइन: %s मा %.19s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "पासवर्ड समाप्ति चेतावनी" + +#~ msgid "Username Port From Latest" +#~ msgstr "सबै भन्दा पछिल्लो बाट पोर्ट प्रयोगकर्ता नाम" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/nl.gmo b/po/nl.gmo index 966449b6..87723c08 100644 Binary files a/po/nl.gmo and b/po/nl.gmo differ diff --git a/po/nl.po b/po/nl.po index 824991b1..499355a1 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,21 +1,21 @@ # dutch po-file for shadow # Copyright (C) 2004 Free Software Foundation, Inc. # Bart Cornelis , 2004, 2006. -# Frans Spiesschaert , 2014-2019. +# Frans Spiesschaert , 2014-2021. # msgid "" msgstr "" -"Project-Id-Version: shadow_1_4.8\n" +"Project-Id-Version: shadow 4.9\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" -"PO-Revision-Date: 2019-12-23 23:33+0100\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" +"PO-Revision-Date: 2021-09-13 21:00+0200\n" "Last-Translator: Frans Spiesschaert \n" "Language-Team: Debian Dutch l10n Team \n" "Language: nl\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Gtranslator 3.30.1\n" +"X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" #, c-format @@ -557,6 +557,10 @@ msgstr "%s: kan chdir naar chroot-map %s niet uitvoeren: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: chroot naar map %s lukt niet: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "Kan geen willekeurige bytes verkrijgen.\n" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -565,6 +569,16 @@ msgstr "" "Ongeldige ENCRYPT_METHOD-waarde: '%s'.\n" "Terugvallen op standaard DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" +"Kan geen salt genereren met instelling \"%s\", controleer uw instellingen in " +"ENCRYPT_METHOD en de bijbehorende configuratie voor uw geselecteerde hash-" +"methode.\n" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Kan niet van map veranderen (cd) naar '%s'\n" @@ -824,6 +838,10 @@ msgstr "Telefoon thuis" msgid "Other" msgstr "Varia" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: velden zijn te lang\n" + msgid "Cannot change ID to root.\n" msgstr "Kan ID niet veranderen naar root.\n" @@ -875,10 +893,6 @@ msgstr "%s: '%s' is de NIS-master voor deze client.\n" msgid "Changing the user information for %s\n" msgstr "De gebruikersinformatie over %s wordt veranderd\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: velden zijn te lang\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -905,11 +919,11 @@ msgstr "" " met het MD5-algoritme versleutelen\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" -" -s, --sha-rounds aantal rondes voor de SHA of BCRYPT\n" -" encryptie-algoritmes\n" +" -s, --sha-rounds aantal rondes voor de SHA, BCRYPT\n" +" of YESCRYPT encryptie-algoritmes\n" #, c-format msgid "%s: %s flag is only allowed with the %s flag\n" @@ -1222,9 +1236,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system een systeem-account aanmaken\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -P, --prefix PREFIX_MAP map-prefix\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" +" -U, --users GEBRUIKERS lijst van leden-gebruikers van deze groep\n" + +#, c-format +msgid "Invalid member username %s\n" +msgstr "Ongeldige lid-gebruikersnaam %s\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' is geen geldige groepsnaam\n" @@ -1340,6 +1362,15 @@ msgstr "%s: uw groepsnaam komt niet overeen met uw gebruikersnaam\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: enkel de systeembeheerder kan de optie -g/--group gebruiken\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append de gebruikers, vermeld met de optie -U, \n" +" toevoegen aan de groep, zonder \n" +" bestaande leden-gebruikers te verwijderen\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID het groeps-ID naar GID veranderen\n" @@ -1402,6 +1433,13 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort elementen volgens UID sorteren\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" +" -S, --silence-warnings geen controversiële/paranoïde\n" +" waarschuwingen weergeven\n" +"\n" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s en -r zijn niet compatibel\n" @@ -1480,9 +1518,6 @@ msgstr "%s: kan %s niet verwijderen\n" msgid "Usage: id [-a]\n" msgstr "Gebruik: id [-a]\n" -msgid "Usage: id\n" -msgstr "Gebruik: id\n" - msgid " groups=" msgstr " groepen=" @@ -1517,8 +1552,9 @@ msgid "" msgstr "" " -u, --user GEBRUIKER lastlog-informatie over GEBRUIKER tonen\n" -msgid "Username Port From Latest" -msgstr "Gebruikersnaam Poort Vanaf Laatste" +#, c-format +msgid "Username Port From%*sLatest\n" +msgstr "Gebruikersnaam Poort Van%*sLaatste\n" msgid "Username Port Latest" msgstr "Gebruikersnaam Poort Laatste" @@ -1657,10 +1693,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "Laatst aangemeld: %s om %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Laatst aangemeld: %.19s om %s" - #, c-format msgid " from %.*s" msgstr " vanaf %.*s" @@ -1811,6 +1843,10 @@ msgstr "%s: regel %d: gebruiker '%s' bestaat niet in %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: regel %d: kan wachtwoord niet bijwerken\n" +#, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: regel %d: thuismap moet een absoluut pad zijn\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: regel %d: mkdir %s is mislukt: %s\n" @@ -1955,6 +1991,11 @@ msgstr "Het wachtwoord van %s kan niet veranderd worden.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Het wachtwoord van %s kan nog niet veranderd worden.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: shadow-wachtwoorden zijn vereist voor -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1993,10 +2034,6 @@ msgstr "Het wachtwoord van %s is niet veranderd.\n" msgid "%s: password changed.\n" msgstr "%s: wachtwoord is veranderd.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: gegevens in verband met wachtwoordverloop zijn gewijzigd.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2113,6 +2150,10 @@ msgstr "Wachtwoordauthenticatie is omzeild.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Gelieve uw EIGEN wachtwoord in te voeren voor authenticatie.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: signaalmaskering werkt slecht\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: kan geen nieuwe gebruikersshell starten\n" @@ -2121,10 +2162,6 @@ msgstr "%s: kan geen nieuwe gebruikersshell starten\n" msgid "%s: signal malfunction\n" msgstr "%s: signaal werkt slecht\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: signaalmaskering werkt slecht\n" - msgid "Session terminated, terminating shell..." msgstr "Sessie beëindigd, shell wordt afgesloten..." @@ -2179,6 +2216,14 @@ msgstr "" "%s: %s\n" "(Genegeerd)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "Wachtwoordveld is leeg; dit is voor alle accounts verboden.\n" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "Wachtwoordveld is leeg; dit is verboden voor de systeembeheerder.\n" + #, c-format msgid "You are not authorized to su %s\n" msgstr "U bent niet gerechtigd om 'su %s' uit te voeren\n" @@ -2247,6 +2292,11 @@ msgstr "%s: de %s-instellingen in %s zullen genegeerd worden\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken: %s\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: kan geen nieuw bestand met standaardwaarden aanmaken\n" @@ -2275,6 +2325,10 @@ msgstr "%s: groep '%s' is een NIS-groep.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: te veel groepen gespecificeerd (max %d).\n" +#, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: onvoldoende geheugen. Kan groep '%s' niet vinden.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2437,10 +2491,9 @@ msgstr "%s: ongeldig veld '%s'\n" msgid "%s: invalid shell '%s'\n" msgstr "%s: ongeldige shell '%s'\n" -#, fuzzy, c-format -#| msgid "%s: Warning: %s is not executable\n" +#, c-format msgid "%s: Warning: missing or non-executable shell '%s'\n" -msgstr "%s: waarschuwing: %s is niet uitvoerbaar\n" +msgstr "%s: waarschuwing: ontbrekende of niet-uitvoerbare shell '%s'\n" #, c-format msgid "%s: -Z cannot be used with --prefix\n" @@ -2450,16 +2503,36 @@ msgstr "%s: -Z kan niet gebruikt worden met --prefix\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z vereist dat SELinux geactiveerd is in de kernel\n" +#, c-format +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: ongeldige gebruikersnaam '%s': gebruik --badname om te negeren\n" + +#, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: openen van het faillog-bestand voor UID %lu is mislukt: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" "%s: opnieuw instellen van het faillog-item voor UID %lu is mislukt: %s\n" +#, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: sluiten van het faillog-bestand voor UID %lu is mislukt: %s\n" + +#, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: openen van het lastlog-bestand voor UID %lu is mislukt: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" "%s: opnieuw instellen van de lastlog-item voor UID %lu is mislukt: %s\n" +#, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: sluiten van het lastlog-bestand voor UID %lu is mislukt: %s\n" + #, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "" @@ -2502,10 +2575,18 @@ msgstr "%s: waarschuwing: chown uitvoeren op `%s' is mislukt: %m\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: waarschuwing: chmod uitvoeren op `%s' is mislukt: %m\n" +#, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: waarschuwing: chown uitvoeren op `%s' is mislukt: %m\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "%s: kan SELinux-context voor bestandscreatie niet opnieuw instellen\n" +#, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s: kan SELinux-context voor postvakbestand %s niet instellen\n" + msgid "Creating mailbox file" msgstr "Postvak-bestand wordt aangemaakt" @@ -2518,6 +2599,21 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Bestandsrechten van postvak-bestand worden ingesteld" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" +"%s waarschuwing: %s zijn/haar uid %d valt buiten het bereik SYS_UID_MIN %d " +"en SYS_UID_MAX %d.\n" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" +"%s waarschuwing: %s zijn/haar uid %d valt buiten het bereik UID_MIN %d en " +"UID_MAX %d.\n" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: gebruiker '%s' bestaat al\n" @@ -2553,6 +2649,12 @@ msgstr "%s: kan ondergeschikte gebruiker-ID's niet aanmaken\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: kan ondergeschikte groep-ID's niet aanmaken\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: waarschuwing: de koppeling van gebruikersnaam %s aan SELinux-gebruiker " +"%s is mislukt.\n" + #, c-format msgid "" "%s: warning: the home directory %s already exists.\n" @@ -2561,18 +2663,16 @@ msgstr "" "%s: waarschuwing: de persoonlijke map %s bestaat reeds.\n" "%s: Er worden geen bestanden uit de skelet-map naartoe gekopieerd.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: waarschuwing: de koppeling van gebruikersnaam %s aan SELinux-gebruiker " -"%s is mislukt.\n" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" -" -f, --force geforceerde verwijdering van bestanden,\n" -" ook als ze geen eigendom van gebruiker zijn\n" +" -f, --force sommige acties afdwingen die anders zouden\n" +" mislukken, bijv. verwijderen van een nog\n" +" aangemelde gebruiker of van bestanden\n" +" zelfs als deze niet van de gebruker zijn\n" msgid " -r, --remove remove home directory and mail spool\n" msgstr " -r, --remove thuismap en postvak verwijderen\n" @@ -2701,6 +2801,24 @@ msgstr "" " vermeld bij de optie -G, zonder hem/haar\n" " te verwijderen uit andere groepen\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append gebruiker toevoegen aan de bijkomende " +"GROEPEN,\n" +" vermeld bij de optie -G, zonder hem/haar\n" +" te verwijderen uit andere groepen\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NIEUWE_NAAM nieuwe waarde voor de gebruikersnaam\n" @@ -2770,6 +2888,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: gebruiker '%s' bestaat al in %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "%s: persoonlijke map moet een absoluut pad zijn\n" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: ongeldig bereik '%s' van ondergeschikte UID's\n" @@ -2782,6 +2904,10 @@ msgstr "%s: ongeldig bereik '%s' van ondergeschikte GID's\n" msgid "%s: no options\n" msgstr "%s: geen opties\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: de opties -L, -p, en -U zijn exclusief\n" @@ -2955,3 +3081,12 @@ msgstr "%s: kan %s niet herstellen: %s (uw aanpassingen staan in %s)\n" #, c-format msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: tcb-map van %s vinden is mislukt\n" + +#~ msgid "Usage: id\n" +#~ msgstr "Gebruik: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Laatst aangemeld: %.19s om %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: gegevens in verband met wachtwoordverloop zijn gewijzigd.\n" diff --git a/po/nn.gmo b/po/nn.gmo index a65054c4..692716a7 100644 Binary files a/po/nn.gmo and b/po/nn.gmo differ diff --git a/po/nn.po b/po/nn.po index 592aa809..f3496809 100644 --- a/po/nn.po +++ b/po/nn.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2004-06-03 21:41+0200\n" "Last-Translator: Håvard Korsvoll \n" "Language-Team: Norwegian (Nynorsk) \n" @@ -526,12 +526,23 @@ msgstr "%s: kan ikkje oppretta mappa %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: kan ikkje oppretta mappa %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, fuzzy, c-format msgid "Unable to cd to '%s'\n" msgstr "Klarer ikkje cd til «%s»\n" @@ -771,6 +782,10 @@ msgstr "Telefon, heime" msgid "Other" msgstr "Anna" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: felta er for lange\n" + msgid "Cannot change ID to root.\n" msgstr "Klarer ikkje endra ID til root.\n" @@ -822,10 +837,6 @@ msgstr "%s: «%s» er NIS-hovud for denne klienten.\n" msgid "Changing the user information for %s\n" msgstr "Endrar brukarinformasjon for %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: felta er for lange\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -846,8 +857,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1122,9 +1133,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "ugyldig brukarnamn «%s»\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s er ikkje eit gyldig gruppenamn\n" @@ -1229,6 +1248,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1278,6 +1303,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s og -r er inkompatible\n" @@ -1354,9 +1383,6 @@ msgstr "%s: klarer ikkje oppdatere fila %s\n" msgid "Usage: id [-a]\n" msgstr "Bruk: id [-a]\n" -msgid "Usage: id\n" -msgstr "Bruk: id\n" - msgid " groups=" msgstr " grupper=" @@ -1383,8 +1409,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Brukarnamn Port Frå Siste" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Brukarnamn Port Siste" msgid "Username Port Latest" msgstr "Brukarnamn Port Siste" @@ -1521,10 +1549,6 @@ msgstr "Åtvaring: innlogging gjort mogeleg igjen etter mellombels utestenging." msgid "Last login: %s on %s" msgstr "Førre innlogging: %s på %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Førre inlogging: %.19s på %s" - #, c-format msgid " from %.*s" msgstr " frå %.*s" @@ -1664,6 +1688,10 @@ msgstr "%s: brukar %s finst ikkje\n" msgid "%s: line %d: can't update password\n" msgstr "%s: linje %d: klarer ikkje oppdatere passord\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: linje %d: mkdir feila\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: linje %d: mkdir feila\n" @@ -1785,6 +1813,11 @@ msgstr "Passordet for %s kan ikkje endrast.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Passordet for %s kan ikkje endrast.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: skuggepassord krevst for -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1816,10 +1849,6 @@ msgstr "Passordet til %s er ikkje endra.\n" msgid "%s: password changed.\n" msgstr "Passord er endra." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Åtvaring for utgått passord" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1927,6 +1956,10 @@ msgstr "Passordautentisering er forbigått.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Oppgje ditt EIGE passord for autentisering.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: klarer ikkje låse fila %s\n" @@ -1935,10 +1968,6 @@ msgstr "%s: klarer ikkje låse fila %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1980,6 +2009,14 @@ msgstr "" "%s: %s\n" "(Ignorert)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Du er ikkje autorisert til su %s\n" @@ -2049,6 +2086,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: klarer ikkje opprette fil for standardverdiar\n" @@ -2077,6 +2119,10 @@ msgstr "%s: gruppe «%s» er ei NIS-gruppe.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: for mange grupper spesifisert (maks %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: slapp opp for minne i update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2214,14 +2260,35 @@ msgstr "%s: klarer ikkje skriva ny passordfil\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: ugyldig brukarnamn «%s»\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: klarer ikkje oppdatere passordfil\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: kan ikkje oppretta mappa %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: kan ikkje oppretta mappa %s\n" @@ -2264,10 +2331,18 @@ msgstr "%s: linje %d: chown feila\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: linje %d: chown feila\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: linje %d: chown feila\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Endrar aldringsformasjonen for %s\n" + msgid "Creating mailbox file" msgstr "" @@ -2278,6 +2353,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: brukar %s finst\n" @@ -2313,19 +2399,21 @@ msgstr "%s: kan ikkje oppretta %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: kan ikkje oppretta %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, c-format msgid "" "%s: warning: the home directory %s already exists.\n" "%s: Not copying any file from skel directory into it.\n" msgstr "" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2435,6 +2523,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2487,6 +2582,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: brukar %s finst\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: ugyldig dato «%s»\n" @@ -2499,6 +2598,10 @@ msgstr "%s: ugyldig dato «%s»\n" msgid "%s: no options\n" msgstr "%s: klarer ikkje opna fila %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2668,6 +2771,19 @@ msgstr "%s: klarer ikkje gjenoppretta %s: %s (endringane dine er i %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: ugyldig startmappe «%s»\n" +#~ msgid "Usage: id\n" +#~ msgstr "Bruk: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Førre inlogging: %.19s på %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Åtvaring for utgått passord" + +#~ msgid "Username Port From Latest" +#~ msgstr "Brukarnamn Port Frå Siste" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/pl.gmo b/po/pl.gmo index c4338328..8a73c44f 100644 Binary files a/po/pl.gmo and b/po/pl.gmo differ diff --git a/po/pl.po b/po/pl.po index 63192333..6b5f6d71 100644 --- a/po/pl.po +++ b/po/pl.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2007-11-25 20:53+0100\n" "Last-Translator: Tomasz Kłoczko \n" "Language-Team: Polish \n" @@ -536,12 +536,23 @@ msgstr "%s: nie można utworzyć katalogu %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: nie można utworzyć katalogu %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Nie można zmienić katalogu na '%s'\n" @@ -775,6 +786,10 @@ msgstr "Telefon domowy" msgid "Other" msgstr "Inne" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: pola zbyt długie\n" + msgid "Cannot change ID to root.\n" msgstr "Nie można zmienić ID na root.\n" @@ -826,10 +841,6 @@ msgstr "%s: '%s' jest nadrzędnym serwerem NIS dla tego klienta.\n" msgid "Changing the user information for %s\n" msgstr "Zmieniam informację o użytkowniku %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: pola zbyt długie\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -850,8 +861,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1126,9 +1137,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "nieprawidłowa nazwa użytkownika '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s: nie jest prawidłową nazwą grupy\n" @@ -1233,6 +1252,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1282,6 +1307,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s i -r są niekompatybilne\n" @@ -1360,9 +1389,6 @@ msgstr "%s: nie można zaktualizować pliku %s\n" msgid "Usage: id [-a]\n" msgstr "Użycie: id [-a]\n" -msgid "Usage: id\n" -msgstr "Użycie: id\n" - msgid " groups=" msgstr " grupy=" @@ -1389,8 +1415,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Użytkownik Port Z Ostatnio" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Użytkownik Port Ostatnio" msgid "Username Port Latest" msgstr "Użytkownik Port Ostatnio" @@ -1523,10 +1551,6 @@ msgstr "Ostrzeżenie: logowanie ponownie odblokowanie po czasowej blokadzie." msgid "Last login: %s on %s" msgstr "Ostatnie logowanie: %s na %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Ostatnie logowanie: %s na %s" - #, c-format msgid " from %.*s" msgstr " z %.*s" @@ -1668,6 +1692,10 @@ msgstr "%s: użytkownik %s nie istnieje\n" msgid "%s: line %d: can't update password\n" msgstr "%s: linia %d: nie można zaktualizować pliku z hasłami\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: linia %d: mkdir nie powiodło się\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: linia %d: mkdir nie powiodło się\n" @@ -1789,6 +1817,11 @@ msgstr "Hasło dla %s nie może być zmienione.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Hasło dla %s nie może być zmienione.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: ukryte hasła wymagane dla -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1820,10 +1853,6 @@ msgstr "Hasło dla %s pozostaje niezmienione.\n" msgid "%s: password changed.\n" msgstr "Hasło zmienione." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Ostrzeżenie o utracie ważności hasła" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1931,6 +1960,10 @@ msgstr "Uwierzytelnianie na podstawie hasła pominięte.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Proszę wpisz swoje WŁASNE hasło jako hasło uwierzytelniające.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: nie można zablokować pliku %s\n" @@ -1939,10 +1972,6 @@ msgstr "%s: nie można zablokować pliku %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2008,6 +2037,14 @@ msgstr "" "%s: %s\n" "(Zignorowano)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Nie masz autoryzacji by używać su %s\n" @@ -2077,6 +2114,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: nie można utworzyć nowego pliku z ustawieniami domyślnymi\n" @@ -2105,6 +2147,10 @@ msgstr "%s: grupa '%s' jest grupą NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: podano zbyt wiele grup (maks %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: zabrakło pamięci w update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2242,14 +2288,35 @@ msgstr "%s: nie można przepisać pliku z hasłami\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: nieprawidłowa nazwa użytkownika '%s'\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: nie można zaktualizować pliku z hasłami\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: nie można utworzyć katalogu %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: nie można utworzyć katalogu %s\n" @@ -2292,10 +2359,18 @@ msgstr "%s: linia %d: chown nie powiodło się\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: linia %d: chown nie powiodło się\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: linia %d: chown nie powiodło się\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Zmieniam informację o użytkowniku %s\n" + msgid "Creating mailbox file" msgstr "Tworzenie pliku mailbox" @@ -2308,6 +2383,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Ustawianie praw dostępu do pliku mailbox" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: użytkownik %s istnieje\n" @@ -2342,6 +2428,10 @@ msgstr "%s: nie można utworzyć %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: nie można utworzyć %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2353,13 +2443,11 @@ msgstr "" "%s: uwaga: katalog domowy już istnieje.\n" "Pliki z katalogu skel nie są kopiowane.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2471,6 +2559,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2523,6 +2618,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: użytkownik %s istnieje\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: nieprawidłowa data '%s'\n" @@ -2535,6 +2634,10 @@ msgstr "%s: nieprawidłowa data '%s'\n" msgid "%s: no options\n" msgstr "%s: nie można otworzyć pliku %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2706,6 +2809,19 @@ msgstr "%s: nie można odzyskać %s: %s (twoje zmiany są w %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: nieprawidłowy katalog bazowy '%s'\n" +#~ msgid "Usage: id\n" +#~ msgstr "Użycie: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Ostatnie logowanie: %s na %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Ostrzeżenie o utracie ważności hasła" + +#~ msgid "Username Port From Latest" +#~ msgstr "Użytkownik Port Z Ostatnio" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/pt.gmo b/po/pt.gmo index 21cc134c..9b81e968 100644 Binary files a/po/pt.gmo and b/po/pt.gmo differ diff --git a/po/pt.po b/po/pt.po index ffc9cf1d..fdab21ac 100644 --- a/po/pt.po +++ b/po/pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2012-01-14 12:41+0000\n" "Last-Translator: Miguel Figueiredo \n" "Language-Team: Portuguese \n" @@ -569,6 +569,10 @@ msgstr "%s: não pode aceder ao directório chroot %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: não foi possível fazer chroot para o directório %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -577,6 +581,13 @@ msgstr "" "Valor inválido de ENCRYPT_METHOD: '%s'.\n" "A utilizar o valor predefinido DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Não foi possível mudar para o directório '%s'\n" @@ -839,6 +850,10 @@ msgstr "Telefone de Casa" msgid "Other" msgstr "Outra Informação" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: valores demasiado grandes\n" + msgid "Cannot change ID to root.\n" msgstr "Não é possível alterar o ID para root.\n" @@ -890,10 +905,6 @@ msgstr "%s: '%s' é o mestre NIS para este cliente.\n" msgid "Changing the user information for %s\n" msgstr "A alterar a informação de utilizador de %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: valores demasiado grandes\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -925,8 +936,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds número de iterações SHA para algoritmos\n" " de encriptação SHA*\n" @@ -1238,9 +1249,19 @@ msgstr " -r, --system criar uma conta de sistema\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_DIR\t\tdirectório para onde fazer chroot\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list listar os membros do grupo\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "o nome de utilizador '%s' é inválido\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' não é um nome válido para o grupo\n" @@ -1355,6 +1376,22 @@ msgstr "%s: o seu nome de grupo não coincide com o seu nome de utilizador\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: apenas o root pode utilizar a opção -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append juntar o utilizador aos GRUPOS\n" +" suplementares mencionados pela opção -G\n" +" sem o/a remover dos outros grupos\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID mudar o ID do grupo para GID\n" @@ -1417,6 +1454,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort\t\t\tordenar entradas por UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s e -r são incompatíveis\n" @@ -1495,9 +1536,6 @@ msgstr "%s: não é possível apagar %s\n" msgid "Usage: id [-a]\n" msgstr "Utilização: id [-a]\n" -msgid "Usage: id\n" -msgstr "Utilização: id\n" - msgid " groups=" msgstr " grupos=" @@ -1536,8 +1574,10 @@ msgstr "" " -u, --user LOGIN mostra o registo de lastlog para o\n" " utilizador LOGIN\n" -msgid "Username Port From Latest" -msgstr "Utilizador Porto De Último" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Utilizador Porto Último" msgid "Username Port Latest" msgstr "Utilizador Porto Último" @@ -1671,10 +1711,6 @@ msgstr "Aviso: o login foi novamente permitido após um tempo de bloqueio." msgid "Last login: %s on %s" msgstr "Última entrada no sistema: %s em %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Última entrada no sistema: %.19s em %s" - #, c-format msgid " from %.*s" msgstr " de %.*s" @@ -1822,6 +1858,11 @@ msgstr "%s: linha %d: o utilizador '%s' não existe em %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: linha %d: não é possível actualizar a palavra-passe\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: linha %d: mkdir %s falhou: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: linha %d: mkdir %s falhou: %s\n" @@ -1968,6 +2009,11 @@ msgstr "A palavra-passe para %s não pode ser alterada.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "A palavra-passe para %s ainda não pode ser alterada.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: são necessárias palavras-passe shadow para -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -2003,10 +2049,6 @@ msgstr "A palavra-passe de %s não foi alterada.\n" msgid "%s: password changed.\n" msgstr "%s: palavra-passe alterada.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: informação de caducidade da palavra-passe alterada.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2124,6 +2166,10 @@ msgstr "Autenticação por palavra-passe foi contornada.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Por favor introduza a SUA palavra-passe como autenticação.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: mau funcionamento de máscara de sinal\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Não é possível fazer fork à shell de utilizador.\n" @@ -2132,10 +2178,6 @@ msgstr "%s: Não é possível fazer fork à shell de utilizador.\n" msgid "%s: signal malfunction\n" msgstr "%s: mau funcionamento de sinal\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: mau funcionamento de máscara de sinal\n" - msgid "Session terminated, terminating shell..." msgstr "Sessão terminada, a terminar shell..." @@ -2202,6 +2244,14 @@ msgstr "" "%s: %s\n" "(Ignorado)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Não está autorizado a fazer su %s\n" @@ -2272,6 +2322,12 @@ msgid "%s: cannot create new defaults file: %s\n" msgstr "" "%s: não é possível criar um novo ficheiro de configurações pré-definidas\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "" +"%s: não é possível criar um novo ficheiro de configurações pré-definidas\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" @@ -2302,6 +2358,11 @@ msgstr "%s: o grupo '%s' é um grupo NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: estão especificados demasiados grupos (max %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Memória esgotada. Não é possível actualizar %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2468,14 +2529,39 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z necessita de um kernel com SELinux activo\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: o nome de utilizador '%s' é inválido\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: falhou apagar o registo faillog para o UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: falhou apagar o registo faillog para o UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: falhou apagar o registo faillog para o UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: falhou apagar o registo lastlog para o UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: falhou apagar o registo lastlog para o UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: falhou apagar o registo lastlog para o UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2523,10 +2609,20 @@ msgstr "%s: linha %d: chown %s falhou: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: linha %d: chown %s falhou: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: linha %d: chown %s falhou: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Não foi possível criar mapeamento de login SELinux para %s\n" + msgid "Creating mailbox file" msgstr "Criar ficheiro mailbox" @@ -2539,6 +2635,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "A definir as permissões do ficheiro mailbox" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: o utilizador '%s' já existe\n" @@ -2574,6 +2681,12 @@ msgstr "%s: não é possível criar o utilizador\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: não é possível criar grupo\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: aviso: falhou o mapeamento do nome de utilizador %s para o nome de " +"utilizador SELinux %s.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2585,15 +2698,15 @@ msgstr "" "%s: aviso: o directório home já existe.\n" "Não irá copiar quaisquer ficheiros o directório skel para lá.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: aviso: falhou o mapeamento do nome de utilizador %s para o nome de " -"utilizador SELinux %s.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force forçar a remoção de ficheiros,\n" " mesmo que não pertençam ao utilizador\n" @@ -2727,6 +2840,23 @@ msgstr "" " suplementares mencionados pela opção -G\n" " sem o/a remover dos outros grupos\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append juntar o utilizador aos GRUPOS\n" +" suplementares mencionados pela opção -G\n" +" sem o/a remover dos outros grupos\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NEW_LOGIN novo valor para o nome de login\n" @@ -2791,6 +2921,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: o utilizador %s já existe em %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: a data '%s' é inválida\n" @@ -2803,6 +2937,10 @@ msgstr "%s: a data '%s' é inválida\n" msgid "%s: no options\n" msgstr "%s: sem opções\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: as flags -L, -p e -U são exclusivas\n" @@ -2975,6 +3113,18 @@ msgstr "%s: não é possível restaurar %s: %s (a suas alterações estão em %s msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: falhou encontrar o directório tcb para %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Utilização: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Última entrada no sistema: %.19s em %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: informação de caducidade da palavra-passe alterada.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Utilizador Porto De Último" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr "" #~ " -c, --crypt-method o método de encriptação (um de %s)\n" diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo index 4ec834fe..bc0c2c50 100644 Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ diff --git a/po/pt_BR.po b/po/pt_BR.po index 451f4a03..17d89401 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2011-11-25 20:20+0100\n" "Last-Translator: Fred Ulisses Maranhão \n" "Language-Team: Debian-BR Project \n" @@ -558,6 +558,10 @@ msgstr "%s: não foi possível criar o diretório %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: Falha ao criar diretório tcb para %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -566,6 +570,13 @@ msgstr "" "inválido ENCRYPT_METHOD valor: '%s'.\n" "falta de DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Não consegui ir para o diretório '%s'\n" @@ -823,6 +834,10 @@ msgstr "Fone Residencial" msgid "Other" msgstr "Outro" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s : campos muito extensos\n" + msgid "Cannot change ID to root.\n" msgstr "Não foi possível mudar o ID para root.\n" @@ -874,10 +889,6 @@ msgstr "%s: '%s' é o NIS mestre para este cliente.\n" msgid "Changing the user information for %s\n" msgstr "Modificando as informações de usuário para %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s : campos muito extensos\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -907,8 +918,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" "-s, --sha-rounds Números de SHA rodadas para a SHA *\n" " algoritmos criptografados\n" @@ -1214,9 +1225,19 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system cria uma conta de sistema\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list lista os membros do grupo\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "nome de usuário '%s' inválido\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: '%s' não é um nome de grupo válido\n" @@ -1330,6 +1351,23 @@ msgstr "%s: seu nome de grupo não casa com seu nome de usuário\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: apenas o root pode usar a opção -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append anexa o usuário para os GRUPOS " +"suplementares\n" +" mencionados pela opção -G sem remove-lo de\n" +" outros grupos\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID muda o ID do grupo para GID\n" @@ -1388,6 +1426,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s e -r são incompatíveis\n" @@ -1466,9 +1508,6 @@ msgstr "%s: não é possível apagar %s\n" msgid "Usage: id [-a]\n" msgstr "Uso : id [-a]\n" -msgid "Usage: id\n" -msgstr "Uso : id\n" - msgid " groups=" msgstr " grupos=" @@ -1507,8 +1546,10 @@ msgstr "" " -u, --user LOGIN imprime registro lastlog para usuário com\n" " LOGIN especificado\n" -msgid "Username Port From Latest" -msgstr "Nome de Usuário Porta De Último" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Nome de Usuário Porta Último" msgid "Username Port Latest" msgstr "Nome de Usuário Porta Último" @@ -1642,10 +1683,6 @@ msgstr "Aviso : login rehabilitado após travamento temporário." msgid "Last login: %s on %s" msgstr "Último login : %s em %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Último login : %.19s em %s" - #, c-format msgid " from %.*s" msgstr " de %.*s" @@ -1794,6 +1831,11 @@ msgstr "%s: linha %d: usuário '%s' não existe em %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s : linha %d : não foi possível atualizar a senha\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: linha %d: mkdir %s falhou: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: linha %d: mkdir %s falhou: %s\n" @@ -1932,6 +1974,11 @@ msgstr "A senha para %s não pode ser modificada.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "A senha para %s ainda não pode ser modificada.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s : senhas shadow necessárias para -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1967,10 +2014,6 @@ msgstr "A senha para %s não foi modificada.\n" msgid "%s: password changed.\n" msgstr "%s: senha modificada.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: informação de expiração de senha alterada.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2089,6 +2132,10 @@ msgstr "Autenticação por senha contornada.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Por favor, informe sua PRÓPRIA senha como autenticação.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: al funcionamento da máscara do sinal\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Não posso ramificar shell de usuário\n" @@ -2097,10 +2144,6 @@ msgstr "%s: Não posso ramificar shell de usuário\n" msgid "%s: signal malfunction\n" msgstr "%s: mal funcionamento do sinal\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: al funcionamento da máscara do sinal\n" - msgid "Session terminated, terminating shell..." msgstr "Sessão terminada, encerrando o shell..." @@ -2167,6 +2210,14 @@ msgstr "" "%s : %s\n" "(Ignorado)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Você não está autorizado a usar o su para %s\n" @@ -2236,6 +2287,11 @@ msgstr "%s: a configuração %s em %s será ignorada\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: não foi possível criar novo arquivo de padrões\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: não foi possível criar novo arquivo de padrões\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: não foi possível criar novo arquivo de padrões\n" @@ -2264,6 +2320,11 @@ msgstr "%s: grupo '%s' é um grupo NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: muitos grupos especificados (máximo %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Sem memória. Não pode atualizar %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2434,14 +2495,39 @@ msgstr "%s : não foi possível reescrever arquivo de senhas\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z precisa de um núcleo com o SELinux habilitado\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s : nome de usuário '%s' inválido\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: falha ao zerar a entrada do faillog de UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: falha ao zerar a entrada do faillog de UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: falha ao zerar a entrada do faillog de UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: falha ao zerar a entrada do lastlog do UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: falha ao zerar a entrada do lastlog do UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: falha ao zerar a entrada do lastlog do UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2489,10 +2575,19 @@ msgstr "%s: linha %d: chown %s falhou: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: linha %d: chown %s falhou: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: linha %d: chown %s falhou: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Mudando a informação de idade para %s\n" + msgid "Creating mailbox file" msgstr "Criando caixa-postal" @@ -2505,6 +2600,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Configurando caixa-postal arquivos de permissao" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: usuário '%s' já existe\n" @@ -2540,6 +2646,12 @@ msgstr "%s: não foi possível criar usuário\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: não é possível criar grupo\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: atenção: o relacionamento do nome de usuário %s para o usuário SELinux " +"%s falhou.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2551,15 +2663,15 @@ msgstr "" "%s: aviso: o diretório pessoal já existe.\n" "Não copiando nenhum arquivo do diretótio skel.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: atenção: o relacionamento do nome de usuário %s para o usuário SELinux " -"%s falhou.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force força remoção dos arquivos,\n" " mesmo se não forem do usuário\n" @@ -2691,6 +2803,24 @@ msgstr "" " mencionados pela opção -G sem remove-lo de\n" " outros grupos\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append anexa o usuário para os GRUPOS " +"suplementares\n" +" mencionados pela opção -G sem remove-lo de\n" +" outros grupos\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login LOGIN novo valor do nome de login\n" @@ -2753,6 +2883,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: usuário '%s' já existe em %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: data `%s' inválida\n" @@ -2765,6 +2899,10 @@ msgstr "%s: data `%s' inválida\n" msgid "%s: no options\n" msgstr "%s: não consegui abrir %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: the -L, -p, and -U flags são exclusivas\n" @@ -2932,6 +3070,18 @@ msgstr "%s : não foi possível restaurar %s : %s (suas mudanças estão em %s)\ msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: falha ao procurar o diretório tcb para %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Uso : id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Último login : %.19s em %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: informação de expiração de senha alterada.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Nome de Usuário Porta De Último" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr "" #~ " -c, --crypt-method o método de criptografia (dentre %s)\n" diff --git a/po/ro.gmo b/po/ro.gmo index e2474ed1..8776d7f6 100644 Binary files a/po/ro.gmo and b/po/ro.gmo differ diff --git a/po/ro.po b/po/ro.po index 6929d4b8..e618f504 100644 --- a/po/ro.po +++ b/po/ro.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2007-11-26 18:18+0100\n" "Last-Translator: Sorin Batariuc \n" "Language-Team: Romanian \n" @@ -532,12 +532,23 @@ msgstr "%s: nu pot crea directorul %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: nu pot crea directorul %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Nu pot schimba directorul către'%s'\n" @@ -771,6 +782,10 @@ msgstr "Telefon acasă" msgid "Other" msgstr "Altele" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: câmpuri prea lungi\n" + msgid "Cannot change ID to root.\n" msgstr "Nu pot schimba identificatorul la root.\n" @@ -822,10 +837,6 @@ msgstr "%s: '%s' este stăpânul NIS pentru acest client.\n" msgid "Changing the user information for %s\n" msgstr "Modificare informaţii utilizator pentru %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: câmpuri prea lungi\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -846,8 +857,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1122,9 +1133,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "nume de utilizator nevalid '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s nu este un nume de grup valid\n" @@ -1229,6 +1248,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1278,6 +1303,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s şi -r sunt incompatibile\n" @@ -1354,9 +1383,6 @@ msgstr "%s: nu pot actualiza fişierul %s\n" msgid "Usage: id [-a]\n" msgstr "Utilizare: id [-a]\n" -msgid "Usage: id\n" -msgstr "Utilizare: id\n" - msgid " groups=" msgstr " grupuri=" @@ -1383,8 +1409,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Nume utilizator Port De la Cel mai recent" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Nume utilizator Port Cel mai recent" msgid "Username Port Latest" msgstr "Nume utilizator Port Cel mai recent" @@ -1518,10 +1546,6 @@ msgstr "Avertisment: autentificare reactivată după blocarea temporară." msgid "Last login: %s on %s" msgstr "Ultima autentificare: %s în %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Ultima autentificare: %.19s în %s" - #, c-format msgid " from %.*s" msgstr " de la %.*s" @@ -1663,6 +1687,10 @@ msgstr "%s: utilizatorul %s nu există\n" msgid "%s: line %d: can't update password\n" msgstr "%s: linia %d: nu pot actualiza parola\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: linia %d: eşuare mkdir\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: linia %d: eşuare mkdir\n" @@ -1784,6 +1812,11 @@ msgstr "Parola pentru %s nu poate fi schimbată.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Parola pentru %s nu poate fi schimbată.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: parole criptate cerute pentru -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1816,10 +1849,6 @@ msgstr "Parola pentru %s este neschimbată.\n" msgid "%s: password changed.\n" msgstr "Parolă schimbată." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Avertisment de expirare a parolei" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1927,6 +1956,10 @@ msgstr "Autentificare cu parolă ocolită.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Vă rog introduceţi PROPRIA parolă pentru autentificare.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: nu pot încuia fişierul %s\n" @@ -1935,10 +1968,6 @@ msgstr "%s: nu pot încuia fişierul %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1993,6 +2022,14 @@ msgstr "" "%s: %s\n" "(Ignorat)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Nu sunteţi autorizat pentru su %s\n" @@ -2062,6 +2099,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: nu pot crea noile fişiere implicite\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: nu pot crea noile fişiere implicite\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: nu pot crea noile fişiere implicite\n" @@ -2090,6 +2132,10 @@ msgstr "%s: grupul '%s' este un grup NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: prea multe grupuri specificate (maximum %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: nu mai este memorie pentru update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2227,14 +2273,35 @@ msgstr "%s: nu pot rescrie fişierul passwd\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: nume utilizator nevalid '%s'\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: nu pot actualiza fişierul passwd\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: nu pot crea directorul %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: nu pot crea directorul %s\n" @@ -2277,10 +2344,18 @@ msgstr "%s: linia %d: eşuare chown\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: linia %d: eşuare chown\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: linia %d: eşuare chown\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Modific informaţia de temporalitate pentru %s\n" + msgid "Creating mailbox file" msgstr "Crearea fişierului căsuţă pentru mesaje" @@ -2293,6 +2368,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Se atribuie permisiunile fişierului căsuţă de mesaje" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: utilizatorul %s există\n" @@ -2328,6 +2414,10 @@ msgstr "%s: nu pot crea %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: nu pot crea %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2339,13 +2429,11 @@ msgstr "" "%s: avertisment: directorul personal există deja.\n" "Nu se copiază nici un fişier în el din directorul schelet.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2457,6 +2545,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2509,6 +2604,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: utilizatorul %s există\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: dată nevalidă '%s'\n" @@ -2521,6 +2620,10 @@ msgstr "%s: dată nevalidă '%s'\n" msgid "%s: no options\n" msgstr "%s: nu pot deschide fişierul %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2692,6 +2795,19 @@ msgstr "%s: nu pot reface %s: %s (schimbările dvs. sunt în %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: director de bază nevalid '%s'\n" +#~ msgid "Usage: id\n" +#~ msgstr "Utilizare: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Ultima autentificare: %.19s în %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Avertisment de expirare a parolei" + +#~ msgid "Username Port From Latest" +#~ msgstr "Nume utilizator Port De la Cel mai recent" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/ru.gmo b/po/ru.gmo index c0fb0dfd..a83acc65 100644 Binary files a/po/ru.gmo and b/po/ru.gmo differ diff --git a/po/ru.po b/po/ru.po index 175edce7..57b4a0d2 100644 --- a/po/ru.po +++ b/po/ru.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.5.1-1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2017-03-05 11:14+0300\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" @@ -573,6 +573,10 @@ msgstr "%s: не удалось выполнить chdir в chroot-катало msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: не удалось выполнить chroot в каталог %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -581,6 +585,13 @@ msgstr "" "Неправильное значение для ENCRYPT_METHOD: «%s».\n" "Используется значение по умолчанию DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Невозможно перейти в каталог «%s»\n" @@ -843,6 +854,10 @@ msgstr "Домашний телефон" msgid "Other" msgstr "Другое" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: поля слишком длинные\n" + msgid "Cannot change ID to root.\n" msgstr "Не удалось получить права суперпользователя.\n" @@ -894,10 +909,6 @@ msgstr "%s: «%s» является мастером NIS для этого кл msgid "Changing the user information for %s\n" msgstr "Изменение информации о пользователе %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: поля слишком длинные\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -927,8 +938,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds количество раундов SHA для алгоритмов\n" " шифрования SHA*\n" @@ -1248,10 +1259,20 @@ msgstr " -r, --system создавать системную г #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" " -R, --root КАТ_CHROOT каталог, в который выполняется chroot\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list перечислить всех членов группы\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "неверное имя пользователя «%s»\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: «%s» не может быть именем группы\n" @@ -1365,6 +1386,22 @@ msgstr "%s: ваше имя_группы не совпадает с вашим msgid "%s: only root can use the -g/--group option\n" msgstr "%s: только суперпользователь может использовать параметр -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append добавить пользователя в дополнительные\n" +" ГРУППЫ, указанные в параметре -G не удаляя\n" +" пользователя из других групп\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID изменить ID группы на GID\n" @@ -1425,6 +1462,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort сортировать записи по UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s и -r не могут использоваться одновременно\n" @@ -1501,9 +1542,6 @@ msgstr "%s: не удалось удалить %s\n" msgid "Usage: id [-a]\n" msgstr "Использование: id [-a]\n" -msgid "Usage: id\n" -msgstr "Использование: id\n" - msgid " groups=" msgstr " группы=" @@ -1540,8 +1578,10 @@ msgstr "" " -u, --user ИМЯ показать запись lastlog для учётной записи " "ИМЯ\n" -msgid "Username Port From Latest" -msgstr "Пользователь Порт С Последний раз" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Пользователь Порт Последний раз" msgid "Username Port Latest" msgstr "Пользователь Порт Последний раз" @@ -1675,10 +1715,6 @@ msgstr "Предупреждение: вход в систему снова во msgid "Last login: %s on %s" msgstr "Последний вход в систему: %s на %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Последний вход в систему: %.19s на %s" - #, c-format msgid " from %.*s" msgstr " с %.*s" @@ -1829,6 +1865,11 @@ msgstr "%s: строка %d: пользователь «%s» не существ msgid "%s: line %d: can't update password\n" msgstr "%s: строка %d: не удалось обновить пароль\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: строка %d: вызов mkdir %s завершился неудачно: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: строка %d: вызов mkdir %s завершился неудачно: %s\n" @@ -1970,6 +2011,11 @@ msgstr "Пароль пользователя %s не может быть изм msgid "The password for %s cannot be changed yet.\n" msgstr "Пароль для %s пока не может быть изменён.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: для параметра -e необходима поддержка теневых паролей\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -2005,10 +2051,6 @@ msgstr "Пароль для %s не был изменён.\n" msgid "%s: password changed.\n" msgstr "%s: пароль изменён.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: информация об истечении срока действия пароля изменена.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2125,6 +2167,10 @@ msgstr "Проверка подлинности по паролю пропуще msgid "Please enter your OWN password as authentication.\n" msgstr "Введите ваш СОБСТВЕННЫЙ пароль для аутентификации.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: неисправность в маскировке сигналов\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: невозможно выполнить fork пользовательской оболочки\n" @@ -2133,10 +2179,6 @@ msgstr "%s: невозможно выполнить fork пользовател msgid "%s: signal malfunction\n" msgstr "%s: неисправность в сигналах\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: неисправность в маскировке сигналов\n" - msgid "Session terminated, terminating shell..." msgstr "Сеанс завершён, выполняется завершение оболочки…" @@ -2205,6 +2247,14 @@ msgstr "" "%s: %s\n" "(Игнорировано)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "У вас нет прав на выполнение su %s\n" @@ -2274,6 +2324,11 @@ msgstr "%s: настройка %s в %s будет проигнорирован msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: не удалось создать новый файл значений по умолчанию\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: не удалось создать новый файл значений по умолчанию\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: не удалось создать новый файл значений по умолчанию\n" @@ -2302,6 +2357,11 @@ msgstr "%s: группа «%s» является группой NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: указано слишком много групп (максимум %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: недостаточно памяти. Не удалось обновить %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2481,14 +2541,39 @@ msgstr "%s: параметр -C нельзя использовать вмест msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: для -Z в ядре требуется включить SELinux\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: неверное имя пользователя «%s»\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: не удалось сбросить запись в faillog для UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: не удалось сбросить запись в faillog для UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: не удалось сбросить запись в faillog для UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: не удалось сбросить запись в lastlog для UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: не удалось сбросить запись в lastlog для UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: не удалось сбросить запись в lastlog для UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2536,10 +2621,20 @@ msgstr "%s: строка %d: вызов chown %s завершился неуда msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: строка %d: вызов chown %s завершился неудачно: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: строка %d: вызов chown %s завершился неудачно: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Невозможно создать сопоставление входа SELinux для %s\n" + msgid "Creating mailbox file" msgstr "Создание почтового ящика" @@ -2552,6 +2647,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Установка прав на файл почтового ящика" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: пользователь «%s» уже существует\n" @@ -2587,6 +2693,12 @@ msgstr "%s: не удалось создать подчинённые польз msgid "%s: can't create subordinate group IDs\n" msgstr "%s: не удалось создать подчинённые групповые ID\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: предупреждение: не удалось сопоставить имя пользователя %s с " +"пользователем SELinux %s.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2598,15 +2710,15 @@ msgstr "" "%s: предупреждение: домашний каталог уже существует.\n" "Никакие файлы из каталога шаблонов копироваться не будут.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: предупреждение: не удалось сопоставить имя пользователя %s с " -"пользователем SELinux %s.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force удалять файлы, даже если они\n" " не принадлежат пользователю\n" @@ -2736,6 +2848,23 @@ msgstr "" " ГРУППЫ, указанные в параметре -G не удаляя\n" " пользователя из других групп\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append добавить пользователя в дополнительные\n" +" ГРУППЫ, указанные в параметре -G не удаляя\n" +" пользователя из других групп\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login НОВОЕ_ИМЯ новое значение имени учётной записи\n" @@ -2800,6 +2929,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: пользователь «%s» уже существует в %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: некорректный диапазон подчинённых uid «%s»\n" @@ -2812,6 +2945,10 @@ msgstr "%s: некорректный диапазон подчинённых gid msgid "%s: no options\n" msgstr "%s: не указаны параметры\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: параметры -L, -p и -U являются взаимоисключающими\n" @@ -2989,6 +3126,18 @@ msgstr "%s: не удалось восстановить %s: %s (ваши изм msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: не удалось найти каталог tcb для %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Использование: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Последний вход в систему: %.19s на %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: информация об истечении срока действия пароля изменена.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Пользователь Порт С Последний раз" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method алгоритм шифрования (один из: %s)\n" diff --git a/po/shadow.pot b/po/shadow.pot index c6a0abb8..d47f2df6 100644 --- a/po/shadow.pot +++ b/po/shadow.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -519,12 +519,23 @@ msgstr "" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "" @@ -756,6 +767,10 @@ msgstr "" msgid "Other" msgstr "" +#, c-format +msgid "%s: fields too long\n" +msgstr "" + msgid "Cannot change ID to root.\n" msgstr "" @@ -807,10 +822,6 @@ msgstr "" msgid "Changing the user information for %s\n" msgstr "" -#, c-format -msgid "%s: fields too long\n" -msgstr "" - #, c-format msgid "" "Usage: %s [options]\n" @@ -831,8 +842,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, c-format @@ -1105,7 +1116,14 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" +msgstr "" + +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, c-format +msgid "Invalid member username %s\n" msgstr "" #, c-format @@ -1212,6 +1230,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1261,6 +1285,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "" @@ -1337,9 +1365,6 @@ msgstr "" msgid "Usage: id [-a]\n" msgstr "" -msgid "Usage: id\n" -msgstr "" - msgid " groups=" msgstr "" @@ -1366,7 +1391,8 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" +#, c-format +msgid "Username Port From%*sLatest\n" msgstr "" msgid "Username Port Latest" @@ -1491,10 +1517,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "" - #, c-format msgid " from %.*s" msgstr "" @@ -1631,6 +1653,10 @@ msgstr "" msgid "%s: line %d: can't update password\n" msgstr "" +#, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "" @@ -1746,6 +1772,10 @@ msgstr "" msgid "The password for %s cannot be changed yet.\n" msgstr "" +#, c-format +msgid "%s: malformed password data obtained for user %s\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1777,10 +1807,6 @@ msgstr "" msgid "%s: password changed.\n" msgstr "" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1888,6 +1914,10 @@ msgstr "" msgid "Please enter your OWN password as authentication.\n" msgstr "" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "" @@ -1896,10 +1926,6 @@ msgstr "" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1939,6 +1965,14 @@ msgid "" "(Ignored)\n" msgstr "" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "" @@ -2004,6 +2038,10 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "" +#, c-format +msgid "%s: cannot create directory for defaults file\n" +msgstr "" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" @@ -2032,6 +2070,10 @@ msgstr "" msgid "%s: too many groups specified (max %d).\n" msgstr "" +#, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2168,14 +2210,34 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, c-format +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "" + +#, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "" + +#, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "" + #, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "" @@ -2216,10 +2278,18 @@ msgstr "" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "" +#, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "" + msgid "Creating mailbox file" msgstr "" @@ -2230,6 +2300,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "" @@ -2263,19 +2344,21 @@ msgstr "" msgid "%s: can't create subordinate group IDs\n" msgstr "" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, c-format msgid "" "%s: warning: the home directory %s already exists.\n" "%s: Not copying any file from skel directory into it.\n" msgstr "" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2383,6 +2466,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2435,6 +2525,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "" @@ -2447,6 +2541,10 @@ msgstr "" msgid "%s: no options\n" msgstr "" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" diff --git a/po/sk.gmo b/po/sk.gmo index f9dfa57d..b19672b8 100644 Binary files a/po/sk.gmo and b/po/sk.gmo differ diff --git a/po/sk.po b/po/sk.po index c9aa9149..dea10a89 100644 --- a/po/sk.po +++ b/po/sk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.17\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2011-11-26 22:06+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" @@ -537,6 +537,10 @@ msgstr "%s: nedá sa vytvoriť adresár %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: nedá sa vytvoriť adresár %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -545,6 +549,13 @@ msgstr "" "neplatná hodnota ENCRYPT_METHOD: „%s“.\n" "Používa sa štandardná hodnota DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Aktuálny adresár sa nedá nastaviť na „%s“\n" @@ -799,6 +810,10 @@ msgstr "Telefón domov" msgid "Other" msgstr "Ostatné" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: položka je príliš dlhá\n" + msgid "Cannot change ID to root.\n" msgstr "ID sa nedá zmeniť na root.\n" @@ -850,10 +865,6 @@ msgstr "%s: „%s“ je hlavným NIS serverom pre tohto klienta.\n" msgid "Changing the user information for %s\n" msgstr "Mením informácie o používateľovi %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: položka je príliš dlhá\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -883,8 +894,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds počet cyklov šifrovacích\n" " algoritmov SHA*\n" @@ -1183,9 +1194,19 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system vytvorí systémový účet\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list vypísať členov skupiny\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "chybné používateľské meno „%s“\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: „%s“ nie je platným názvom skupiny\n" @@ -1299,6 +1320,18 @@ msgstr "%s: meno vašej skupiny sa nezhoduje s vašim používateľským menom\n msgid "%s: only root can use the -g/--group option\n" msgstr "%s: iba root môže používať voľbu -g/--group\n" +#, fuzzy +#| msgid "" +#| " -l, --no-log-init do not add the user to the lastlog and\n" +#| " faillog databases\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -l, --no-log-init nepridávať používateľa do databáz\n" +" lastlog a faillog \n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1354,6 +1387,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s a -r nie sú zlučiteľné\n" @@ -1430,9 +1467,6 @@ msgstr "%s: nie je možné zmazať %s\n" msgid "Usage: id [-a]\n" msgstr "Použitie: id [-a]\n" -msgid "Usage: id\n" -msgstr "Použitie: id\n" - msgid " groups=" msgstr " skupiny=" @@ -1465,8 +1499,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Používateľ Port Z Naposledy" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Používateľ Port Naposledy" msgid "Username Port Latest" msgstr "Používateľ Port Naposledy" @@ -1598,10 +1634,6 @@ msgstr "Upozornenie: po dočasnom zákaze je prihlasovanie opäť povolené." msgid "Last login: %s on %s" msgstr "Posledné prihlásenie: %s na %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Posledné prihlásenie: %.19s na %s" - #, c-format msgid " from %.*s" msgstr " z %.*s" @@ -1747,6 +1779,10 @@ msgstr "%s: riadok %d: používateľ „%s“ neexistuje v %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: riadok %d: heslo sa nedá aktualizovať\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: riadok %d: volanie mkdir zlyhalo\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: riadok %d: volanie mkdir zlyhalo\n" @@ -1879,6 +1915,11 @@ msgstr "Heslo pre %s sa nedá zmeniť.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Heslo pre %s sa zatiaľ nedá zmeniť.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: prepínač -e vyžaduje tieňové heslá\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1913,10 +1954,6 @@ msgstr "Heslo používateľa %s nebolo zmenené.\n" msgid "%s: password changed.\n" msgstr "%s: heslo bolo zmenené.\n" -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Upozornenie o uplynutí doby platnosti hesla" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2030,6 +2067,10 @@ msgstr "Overenie hesla vynechané.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Pre overenie zadajte VAŠE vlastné heslo.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: súbor %s sa nedá zamknúť\n" @@ -2038,10 +2079,6 @@ msgstr "%s: súbor %s sa nedá zamknúť\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2109,6 +2146,14 @@ msgstr "" "%s: %s\n" "(Ignorujem)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Nie ste oprávnení používať su %s\n" @@ -2178,6 +2223,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: nedá sa vytvoriť nový súbor s predvolenými hodnotami\n" @@ -2206,6 +2256,11 @@ msgstr "%s: skupina „%s“ je skupinou NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: bolo zadaných príliš veľa skupín (max %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Nedostatok pamäte. Nie je možné aktualizovať %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2354,14 +2409,39 @@ msgstr "%s: súbor s heslami sa nedá prepísať\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: chybné používateľské meno „%s“\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: Nepodarilo sa obnoviť položku faillog s UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: Nepodarilo sa obnoviť položku faillog s UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: Nepodarilo sa obnoviť položku faillog s UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: Nepodarilo sa obnoviť položku lastlog s UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: Nepodarilo sa obnoviť položku lastlog s UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: Nepodarilo sa obnoviť položku lastlog s UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2405,10 +2485,18 @@ msgstr "%s: riadok %d: volanie chown zlyhalo\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: riadok %d: volanie chown zlyhalo\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: riadok %d: volanie chown zlyhalo\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Menia sa informácie vypršania platnosti pre používateľa %s\n" + msgid "Creating mailbox file" msgstr "Vytvára sa súbor mailbox" @@ -2421,6 +2509,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Nastavujú sa prístupové práva súboru mailbox" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: používateľ „%s“ už existuje\n" @@ -2456,6 +2555,10 @@ msgstr "%s: nie je možné vytvoriť používateľa\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: sa nedá vytvoriť skupina\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2467,13 +2570,15 @@ msgstr "" "%s: upozornenie: domovský adresár už existuje.\n" "Zo skel adresára sa tam neskopíruje žiaden súbor.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force vynúti odstránenie súborov, aj keď\n" " používateľ nie je ich vlastníkom\n" @@ -2596,6 +2701,19 @@ msgid "" " the user from other groups\n" msgstr "" +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -f, --force vynúti odstránenie súborov, aj keď\n" +" používateľ nie je ich vlastníkom\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login LOGIN nová hodnota prihlasovacieho mena\n" @@ -2661,6 +2779,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: používateľ %s už existuje v %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: chybný dátum „%s“\n" @@ -2673,6 +2795,10 @@ msgstr "%s: chybný dátum „%s“\n" msgid "%s: no options\n" msgstr "%s: súbor %s sa nedá otvoriť\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: prepínače -L, -p a -U sa navzájom vylučujú\n" @@ -2848,6 +2974,19 @@ msgstr "%s: %s sa nedá obnoviť: %s (zmeny sú v %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: chybný základný adresár „%s“\n" +#~ msgid "Usage: id\n" +#~ msgstr "Použitie: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Posledné prihlásenie: %.19s na %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Upozornenie o uplynutí doby platnosti hesla" + +#~ msgid "Username Port From Latest" +#~ msgstr "Používateľ Port Z Naposledy" + #~ msgid "" #~ "Usage: vipw [options]\n" #~ "\n" diff --git a/po/sq.po b/po/sq.po index f821b671..bd9398bd 100644 --- a/po/sq.po +++ b/po/sq.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.3\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2004-11-20 03:28+0100\n" "Last-Translator: Elian Myftiu \n" "Language-Team: Albanian \n" @@ -521,12 +521,23 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "" @@ -759,6 +770,10 @@ msgstr "" msgid "Other" msgstr "" +#, c-format +msgid "%s: fields too long\n" +msgstr "" + msgid "Cannot change ID to root.\n" msgstr "" @@ -810,10 +825,6 @@ msgstr "" msgid "Changing the user information for %s\n" msgstr "" -#, c-format -msgid "%s: fields too long\n" -msgstr "" - #, c-format msgid "" "Usage: %s [options]\n" @@ -834,8 +845,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, c-format @@ -1108,7 +1119,14 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" +msgstr "" + +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, c-format +msgid "Invalid member username %s\n" msgstr "" #, c-format @@ -1215,6 +1233,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1264,6 +1288,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "" @@ -1341,9 +1369,6 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "Usage: id [-a]\n" msgstr "" -msgid "Usage: id\n" -msgstr "" - msgid " groups=" msgstr "" @@ -1370,7 +1395,8 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" +#, c-format +msgid "Username Port From%*sLatest\n" msgstr "" msgid "Username Port Latest" @@ -1495,10 +1521,6 @@ msgstr "" msgid "Last login: %s on %s" msgstr "" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "" - #, c-format msgid " from %.*s" msgstr "" @@ -1636,6 +1658,10 @@ msgstr "" msgid "%s: line %d: can't update password\n" msgstr "" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -1751,6 +1777,10 @@ msgstr "" msgid "The password for %s cannot be changed yet.\n" msgstr "" +#, c-format +msgid "%s: malformed password data obtained for user %s\n" +msgstr "" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1782,10 +1812,6 @@ msgstr "" msgid "%s: password changed.\n" msgstr "Fjalëkalimi yt ka skaduar." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Fjalëkalimi yt ka skaduar." - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1894,6 +1920,10 @@ msgstr "" msgid "Please enter your OWN password as authentication.\n" msgstr "" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -1902,10 +1932,6 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -1945,6 +1971,14 @@ msgid "" "(Ignored)\n" msgstr "" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "" @@ -2011,6 +2045,10 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "Kujdes: grup i panjohur %s\n" +#, fuzzy, c-format +msgid "%s: cannot create directory for defaults file\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "" @@ -2039,6 +2077,10 @@ msgstr "" msgid "%s: too many groups specified (max %d).\n" msgstr "" +#, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2175,14 +2217,34 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, c-format +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -2223,10 +2285,18 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "Kujdes: grup i panjohur %s\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "Kujdes: grup i panjohur %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "" + msgid "Creating mailbox file" msgstr "" @@ -2237,6 +2307,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "" @@ -2270,19 +2351,21 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, c-format msgid "" "%s: warning: the home directory %s already exists.\n" "%s: Not copying any file from skel directory into it.\n" msgstr "" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2390,6 +2473,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2442,6 +2532,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "Kujdes: grup i panjohur %s\n" @@ -2454,6 +2548,10 @@ msgstr "Kujdes: grup i panjohur %s\n" msgid "%s: no options\n" msgstr "Kujdes: grup i panjohur %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2613,6 +2711,10 @@ msgstr "" msgid "%s: failed to find tcb directory for %s\n" msgstr "" +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Fjalëkalimi yt ka skaduar." + #, fuzzy #~ msgid "Password set to expire." #~ msgstr "Fjalëkalimi yt ka skaduar." diff --git a/po/sv.gmo b/po/sv.gmo index 81d5bfd5..317a4dd7 100644 Binary files a/po/sv.gmo and b/po/sv.gmo differ diff --git a/po/sv.po b/po/sv.po index 6ca2d9a6..7a63e9e1 100644 --- a/po/sv.po +++ b/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.1.1\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2011-11-25 22:08+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" @@ -551,6 +551,10 @@ msgstr "%s: Kan inte skapa katalogen %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: Misslyckades med att skapa tcb-katalog för %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -559,6 +563,13 @@ msgstr "" "Ogiltigt värde för ENCRYPT_METHOD: \"%s\".\n" "Faller tillbaka på DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Kunde inte byta katalog till \"%s\"\n" @@ -817,6 +828,10 @@ msgstr "Telefonnummer (hem)" msgid "Other" msgstr "Övrigt" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: fälten för långa\n" + msgid "Cannot change ID to root.\n" msgstr "Kan inte ändra ID till root.\n" @@ -868,10 +883,6 @@ msgstr "%s: \"%s\" är NIS-master för denna klient.\n" msgid "Changing the user information for %s\n" msgstr "Ändrar användarinformationen för %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: fälten för långa\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -901,8 +912,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds antal SHA-rundor för SHA*-\n" " krypteringsalgoritmerna\n" @@ -1203,9 +1214,19 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr " -r, --system skapa ett systemkonto\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list lista medlemmarna av gruppen\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "ogiltigt användarnamn \"%s\"\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: \"%s\" är inte ett giltigt gruppnamn\n" @@ -1322,6 +1343,23 @@ msgstr "%s: ditt gruppnamn matchar inte ditt användarnamn\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s: endast root kan använda flaggan -g/--group\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append lägg till användaren till ytterligare " +"GRUPPER\n" +" som nämns av flaggan -G utan att ta bort\n" +" honom/henne från andra grupper\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID ändra grupp-id till GID\n" @@ -1381,6 +1419,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s och -r är inkompatibla\n" @@ -1459,9 +1501,6 @@ msgstr "%s: kan inte ta bort %s\n" msgid "Usage: id [-a]\n" msgstr "Usage: id [-a]\n" -msgid "Usage: id\n" -msgstr "Användning: id\n" - msgid " groups=" msgstr " grupper=" @@ -1500,8 +1539,10 @@ msgstr "" " -u, --user LOGIN skriv ut lastlog information för användare\n" " angiven med LOGIN\n" -msgid "Username Port From Latest" -msgstr "Användarnamn Port Från Senast" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Användarnamn Port Senast" msgid "Username Port Latest" msgstr "Användarnamn Port Senast" @@ -1633,10 +1674,6 @@ msgstr "Varning: inloggning återaktiverad efter temporär nedstängning." msgid "Last login: %s on %s" msgstr "Senast inloggad: %s på %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Senast inloggad: %.19s på %s" - #, c-format msgid " from %.*s" msgstr " från %.*s" @@ -1784,6 +1821,11 @@ msgstr "%s: rad %d: användaren \"%s\" finns inte i %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: rad %d: kan inte uppdatera lösenord\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: rad %d: mkdir %s misslyckades: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: rad %d: mkdir %s misslyckades: %s\n" @@ -1923,6 +1965,11 @@ msgstr "Lösenordet för %s kan inte ändras.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Lösenordet för %s kan inte ändras ännu.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: skugglösenord krävs för -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1959,10 +2006,6 @@ msgstr "Lösenordet för %s är oförändrat.\n" msgid "%s: password changed.\n" msgstr "%s: lösenordet ändrades.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: information om lösenordets utgång har ändrats.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2079,6 +2122,10 @@ msgstr "Lösenordsautentisering kringgådd.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Vänligen ange ditt EGNA lösenord för autentisering.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Kan inte grena användarskal\n" @@ -2087,10 +2134,6 @@ msgstr "%s: Kan inte grena användarskal\n" msgid "%s: signal malfunction\n" msgstr "%s: signalfel\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "Sessionen terminerad, terminerar skal..." @@ -2158,6 +2201,14 @@ msgstr "" "%s: %s\n" "(Ignorerad)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Du är inte bemyndigad att su %s\n" @@ -2227,6 +2278,11 @@ msgstr "%s: %s-konfigurationen i %s kommer att ignoreras\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: kan inte skapa ny standardfil\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: kan inte skapa ny standardfil\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: kan inte skapa ny standardfil\n" @@ -2255,6 +2311,11 @@ msgstr "%s: gruppen \"%s\" är en NIS-grupp.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: för många grupper angivna (max %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Slut på minne. Kan inte uppdatera %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2420,14 +2481,43 @@ msgstr "" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z kräver en SELinux-aktiverad kärna\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: ogiltigt användarnamn \"%s\"\n" + +#, fuzzy, c-format +#| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "" +"%s: misslyckades med att kopiera faillog-posten för användaren %lu till " +"användaren %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to set locktime for UID %lu\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: Misslyckades med att ställa in låstid för UID %lu\n" + +#, fuzzy, c-format +#| msgid "%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "" +"%s: misslyckades med att kopiera lastlog-posten för användaren %lu till " +"användaren %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: Failed to set locktime for UID %lu\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: Misslyckades med att ställa in låstid för UID %lu\n" + #, fuzzy, c-format #| msgid "%s: failed to copy the faillog entry of user %lu to user %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2477,10 +2567,19 @@ msgstr "%s: rad %d: chown %s misslyckades: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: rad %d: chown %s misslyckades: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: rad %d: chown %s misslyckades: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Ändrar åldersinformationen för %s\n" + msgid "Creating mailbox file" msgstr "Skapar postlådefil" @@ -2493,6 +2592,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Ställer in rättigheter för postlådefil" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: användaren \"%s\" finns redan\n" @@ -2528,6 +2638,10 @@ msgstr "%s: kan inte skapa användare\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: kan inte skapa grupp\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2539,13 +2653,15 @@ msgstr "" "%s: varning: hem-katalogen finns redan.\n" "Kopierar ingen fil från skel-katalogen till den.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force tvinga borttagning av filer, även om\n" " de inte ägs av användaren\n" @@ -2671,6 +2787,24 @@ msgstr "" " som nämns av flaggan -G utan att ta bort\n" " honom/henne från andra grupper\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append lägg till användaren till ytterligare " +"GRUPPER\n" +" som nämns av flaggan -G utan att ta bort\n" +" honom/henne från andra grupper\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NYTT_NAMN nytt värde för inloggningsnamnet\n" @@ -2734,6 +2868,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: användaren \"%s\" finns redan i %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: ogiltigt datum \"%s\"\n" @@ -2746,6 +2884,10 @@ msgstr "%s: ogiltigt datum \"%s\"\n" msgid "%s: no options\n" msgstr "%s: kan inte öppna %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: flaggorna -L, -p och -U är uteslutande\n" @@ -2918,6 +3060,18 @@ msgstr "%s: kan inte återställa %s: %s (dina ändringar finns i %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: misslyckades med att hitta tcb-katalog för %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Användning: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Senast inloggad: %.19s på %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: information om lösenordets utgång har ändrats.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Användarnamn Port Från Senast" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method krypteringsmetoden (en av %s)\n" diff --git a/po/tl.gmo b/po/tl.gmo index 1a84a31e..6460a5ae 100644 Binary files a/po/tl.gmo and b/po/tl.gmo differ diff --git a/po/tl.po b/po/tl.po index 3d83f11e..89ecaab3 100644 --- a/po/tl.po +++ b/po/tl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2007-11-26 21:34+0100\n" "Last-Translator: Eric Pareja \n" "Language-Team: Tagalog \n" @@ -539,12 +539,23 @@ msgstr "%s: hindi malikha ang directory %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: hindi malikha ang directory %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Hindi makalipat sa '%s'\n" @@ -778,6 +789,10 @@ msgstr "Telepono sa Bahay" msgid "Other" msgstr "Iba pa" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: mahaba masyado ang mga field\n" + msgid "Cannot change ID to root.\n" msgstr "Hindi mabago ang ID sa root.\n" @@ -829,10 +844,6 @@ msgstr "%s: '%s' ay ang NIS master ng klienteng ito.\n" msgid "Changing the user information for %s\n" msgstr "Pinapalitan ang impormasyon tungkol sa gumagamit na si %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: mahaba masyado ang mga field\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -853,8 +864,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1129,9 +1140,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "hindi tanggap na pangalan '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: hindi tanggap na pangalan ng grupo ang %s\n" @@ -1236,6 +1255,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1285,6 +1310,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s at -r ay hindi maaring magkasabay\n" @@ -1361,9 +1390,6 @@ msgstr "%s: hindi ma-apdeyt ang talaksang %s\n" msgid "Usage: id [-a]\n" msgstr "Pag-gamit: id [-a]\n" -msgid "Usage: id\n" -msgstr "Pag-gamit: id\n" - msgid " groups=" msgstr " mga grupo=" @@ -1390,8 +1416,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Pangalan Puerta Mula Hulihan" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Pangalan Puerta Hulihan" msgid "Username Port Latest" msgstr "Pangalan Puerta Hulihan" @@ -1525,10 +1553,6 @@ msgstr "Babala: pagpasok ay enabled muli matapos ng panandalian pagbawal." msgid "Last login: %s on %s" msgstr "Huling pagpasok: %s sa %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Huling pagpasok: %.19s sa %s" - #, c-format msgid " from %.*s" msgstr " mula %.*s" @@ -1670,6 +1694,10 @@ msgstr "%s: walang gumagamit na nagngangalang %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: linya %d: hindi ma-apdeyt ang kontrasenyas\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: linya %d: bigo ang mkdir\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: linya %d: bigo ang mkdir\n" @@ -1791,6 +1819,11 @@ msgstr "Ang password ni %s ay hindi mapapalitan.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Ang password ni %s ay hindi mapapalitan.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: kailangan ng shadow password para sa -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1823,10 +1856,6 @@ msgstr "Ang password ni %s ay hindi napalitan.\n" msgid "%s: password changed.\n" msgstr "Napalitan ang password." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Babala ng Paglipas ng Taning ng Password" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1934,6 +1963,10 @@ msgstr "Linampasan ang password authentication.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Ibigay ang inyong SARILING kontrasenyas bilang authentication.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: hindi maaldaba ang talaksang %s\n" @@ -1942,10 +1975,6 @@ msgstr "%s: hindi maaldaba ang talaksang %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2014,6 +2043,14 @@ msgstr "" "%s: %s\n" "(Di pinansin)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Hindi kayo awtorisadong gumamit ng su %s\n" @@ -2083,6 +2120,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: hindi malikha ang bagong talaksan ng mga default\n" @@ -2111,6 +2153,10 @@ msgstr "%s: ang grupong '%s' ay grupong NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: sobrang dami ng grupo ang nakatakda (max %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: naubos ang memory sa update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2248,14 +2294,35 @@ msgstr "%s: hindi maisulat muli ang talaksang password\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: hindi tanggap na pangalan `%s'\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: hindi maapdeyt ang talaksang password\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: hindi malikha ang directory %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: hindi malikha ang directory %s\n" @@ -2298,10 +2365,18 @@ msgstr "%s: linya %d: bigo ang chown\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: linya %d: bigo ang chown\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: linya %d: bigo ang chown\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Pinapalitan ang impormasyong pagtanda para kay %s\n" + msgid "Creating mailbox file" msgstr "Inililikha ang talaksang mailbox" @@ -2314,6 +2389,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Itinatakda ang pahintulot sa talaksang mailbox" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: mayroon nang gumagamit na %s\n" @@ -2349,6 +2435,10 @@ msgstr "%s: hindi malikha ang %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: hindi malikha ang %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2360,13 +2450,11 @@ msgstr "" "%s: babala: mayroon nang tahanang directory.\n" "Walang kokopyahing talaksan mula sa skel directory dito.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2477,6 +2565,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2529,6 +2624,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: mayroon nang gumagamit na %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: hindi tanggap na petsa '%s'\n" @@ -2541,6 +2640,10 @@ msgstr "%s: hindi tanggap na petsa '%s'\n" msgid "%s: no options\n" msgstr "%s: hindi mabuksan ang talaksang %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2712,6 +2815,19 @@ msgstr "%s: hindi maibalik ang %s: %s (ang mga pagbabago ay nasa %s)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: hindi tanggap na batayang directory '%s'\n" +#~ msgid "Usage: id\n" +#~ msgstr "Pag-gamit: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Huling pagpasok: %.19s sa %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Babala ng Paglipas ng Taning ng Password" + +#~ msgid "Username Port From Latest" +#~ msgstr "Pangalan Puerta Mula Hulihan" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/tr.gmo b/po/tr.gmo index 40afdedc..70e0b29b 100644 Binary files a/po/tr.gmo and b/po/tr.gmo differ diff --git a/po/tr.po b/po/tr.po index 6ce93b98..ec6adf94 100644 --- a/po/tr.po +++ b/po/tr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2008-03-29 20:31+0200\n" "Last-Translator: Mehmet Türker \n" "Language-Team: Türkçe \n" @@ -531,6 +531,10 @@ msgstr "%s: %s dizini yaratılamıyor\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: %s dizini yaratılamıyor\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -539,6 +543,13 @@ msgstr "" "Geçersiz ENCRYPT_METHOD değeri: '%s'.\n" "Varsayılan olarak DES kullanılacak.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "\"%s\" dizinine geçilemiyor\n" @@ -781,6 +792,10 @@ msgstr "Ev Telefonu" msgid "Other" msgstr "Diğer" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: alanlar çok uzun\n" + msgid "Cannot change ID to root.\n" msgstr "ID root kullanıcısı olarak değiştirilemiyor.\n" @@ -832,10 +847,6 @@ msgstr "%s: `%s' bu istemci için NIS efendisidir.\n" msgid "Changing the user information for %s\n" msgstr "%s için kullanıcı bilgileri değiştiriliyor\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: alanlar çok uzun\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -863,8 +874,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" " SHA yuvarlamaları sayısı\n" @@ -1150,9 +1161,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "geçersiz kullanıcı adı '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s geçerli bir grup adı değil\n" @@ -1262,6 +1281,15 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +#, fuzzy +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" +" SHA yuvarlamaları sayısı\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1314,6 +1342,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s ve -r uyumsuz\n" @@ -1390,9 +1422,6 @@ msgstr "%s: %s dosyası güncellenemiyor\n" msgid "Usage: id [-a]\n" msgstr "Kullanım: id [-a]\n" -msgid "Usage: id\n" -msgstr "Kullanım: id\n" - msgid " groups=" msgstr ".gruplar=" @@ -1419,8 +1448,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Kullanıcı adı Port Kimden Sonuncu" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Kullanıcı adı Port Sonuncu" msgid "Username Port Latest" msgstr "Kullanıcı adı Port Sonuncu" @@ -1554,10 +1585,6 @@ msgstr "Uyarı: geçici bir kilitlenme sonrasında giriş tekrar olanaklı kıl msgid "Last login: %s on %s" msgstr "Son giriş: %s üzerinden %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Son giriş: %s üzerinden %.19s" - #, c-format msgid " from %.*s" msgstr "%.*s'den" @@ -1700,6 +1727,10 @@ msgstr "%s: kullanıcı `%s' mevcut değil\n" msgid "%s: line %d: can't update password\n" msgstr "%s: satır %d: parola güncellenemiyor\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: satır %d: mkdir başarısız oldu\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: satır %d: mkdir başarısız oldu\n" @@ -1830,6 +1861,11 @@ msgstr "%s için parola değiştirilemedi.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "%s için parola henüz değiştirilemiyor.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: -e için gölge parolalar gerekli\n" + #, fuzzy, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1865,10 +1901,6 @@ msgstr "%s için parola değişmedi\n" msgid "%s: password changed.\n" msgstr "Parola değişti " -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Parola Kullanım Süresi Bitti Uyarısı" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1976,6 +2008,10 @@ msgstr "Parola yetkilendirmesi atlandı.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Lütfen yetkilendirme için KENDİ parolanızı girin.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: %s dosyası kilitlenemiyor\n" @@ -1984,10 +2020,6 @@ msgstr "%s: %s dosyası kilitlenemiyor\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2055,6 +2087,14 @@ msgstr "" "%s: %s\n" "(Dikkate alınmadı)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "su %s için yetkili değilsiniz\n" @@ -2124,6 +2164,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: yeni varsayılanlar dosyası oluşturulamadı\n" @@ -2152,6 +2197,10 @@ msgstr "%s: grup '%s' bir NIS grubu.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: çok fazla grup verildi (azami %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Bellek yetersiz. Grup veritabanı güncellenemiyor.\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2307,14 +2356,35 @@ msgstr "%s: parola dosyası yazılamıyor\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: geçersiz kullanıcı adı '%s'\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: parola dosyası güncellenemedi\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: %s dizini yaratılamıyor\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: %s dizini yaratılamıyor\n" @@ -2357,10 +2427,18 @@ msgstr "%s: satır %d: chown başarısız oldu\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: satır %d: chown başarısız oldu\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: satır %d: chown başarısız oldu\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s için ömür bilgisi değiştiriliyor\n" + msgid "Creating mailbox file" msgstr "Mesaj kutusu dosyası yaratılıyor" @@ -2373,6 +2451,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Mail kutusu dosyası için yetkiler ayarlanıyor" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: kullanıcı %s mevcut\n" @@ -2408,6 +2497,10 @@ msgstr "%s: kullanıcı yaratılamıyor\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: grup yaratılamıyor\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2419,14 +2512,12 @@ msgstr "" "%s: uyarı: Ev dizini zaten mevcut.\n" "Temel dizinden hiçbir dosya kopyalanmıyor.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - #, fuzzy msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" " SHA yuvarlamaları sayısı\n" @@ -2546,6 +2637,16 @@ msgid "" " the user from other groups\n" msgstr "" +#, fuzzy +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -s, --sha-rounds SHA* kripto algoritmaları için kullanılacak\n" +" SHA yuvarlamaları sayısı\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2608,6 +2709,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: kullanıcı %s mevcut\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: geçersiz tarih '%s'\n" @@ -2620,6 +2725,10 @@ msgstr "%s: geçersiz tarih '%s'\n" msgid "%s: no options\n" msgstr "%s: %s dosyası açılamıyor\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: -L, -p, ve -U bayrakları özel bayraklardır\n" @@ -2793,6 +2902,19 @@ msgstr "%s: %s geri yüklenemiyor: %s (değişiklikleriniz %s içinde)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: geçersiz ana dizin '%s'\n" +#~ msgid "Usage: id\n" +#~ msgstr "Kullanım: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Son giriş: %s üzerinden %.19s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Parola Kullanım Süresi Bitti Uyarısı" + +#~ msgid "Username Port From Latest" +#~ msgstr "Kullanıcı adı Port Kimden Sonuncu" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/uk.gmo b/po/uk.gmo index 41132a1d..2eefc99a 100644 Binary files a/po/uk.gmo and b/po/uk.gmo differ diff --git a/po/uk.po b/po/uk.po index 4f7dd370..914cfe3f 100644 --- a/po/uk.po +++ b/po/uk.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.18\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2007-11-26 22:52+0100\n" "Last-Translator: Eugeniy Meshcheryakov \n" "Language-Team: Ukrainian\n" @@ -533,12 +533,23 @@ msgstr "%s: не можу створити теку %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: не можу створити теку %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" "Defaulting to DES.\n" msgstr "" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Неможливо перейти до теки \"%s\"\n" @@ -772,6 +783,10 @@ msgstr "Домашній телефон" msgid "Other" msgstr "Інше" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: поля занадто довгі\n" + msgid "Cannot change ID to root.\n" msgstr "Не можу змінити ID на root.\n" @@ -823,10 +838,6 @@ msgstr "%s: \"%s\" є NIS-сервером для цього клієнта.\n" msgid "Changing the user information for %s\n" msgstr "Зміна інформації про користувача %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: поля занадто довгі\n" - #, fuzzy, c-format msgid "" "Usage: %s [options]\n" @@ -847,8 +858,8 @@ msgid "" msgstr "" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" #, fuzzy, c-format @@ -1123,9 +1134,17 @@ msgstr "" msgid " -r, --system create a system account\n" msgstr "" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr "" +msgid " -U, --users USERS list of user members of this group\n" +msgstr "" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "невірне ім'я користувача '%s'\n" + #, fuzzy, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: %s: то не є вірне ім'я групи\n" @@ -1230,6 +1249,12 @@ msgstr "" msgid "%s: only root can use the -g/--group option\n" msgstr "" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" + msgid " -g, --gid GID change the group ID to GID\n" msgstr "" @@ -1279,6 +1304,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr "" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, fuzzy, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: -s та -r несумісні\n" @@ -1355,9 +1384,6 @@ msgstr "%s: неможливо оновити файл %s\n" msgid "Usage: id [-a]\n" msgstr "Використання: id [-a]\n" -msgid "Usage: id\n" -msgstr "Використання: id\n" - msgid " groups=" msgstr " групи=" @@ -1384,8 +1410,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr "" -msgid "Username Port From Latest" -msgstr "Користувач Порт Звідки Останній вхід" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Користувач Порт Останній вхід" msgid "Username Port Latest" msgstr "Користувач Порт Останній вхід" @@ -1518,10 +1546,6 @@ msgstr "Застереження: login поновлено після тимча msgid "Last login: %s on %s" msgstr "Останній вхід в систему: %s на %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Останній вхід в систему: %.19s на %s" - #, c-format msgid " from %.*s" msgstr " з %.*s" @@ -1663,6 +1687,10 @@ msgstr "%s: користувач %s не існує\n" msgid "%s: line %d: can't update password\n" msgstr "%s: рядок %d: не можу оновити пароль\n" +#, fuzzy, c-format +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: рядок %d: mkdir не виконався\n" + #, fuzzy, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: рядок %d: mkdir не виконався\n" @@ -1785,6 +1813,11 @@ msgstr "Пароль для %s не може бути змінений.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Пароль для %s не може бути змінений.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: приховані паролі потрібні для -e\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1816,10 +1849,6 @@ msgstr "Пароль для %s не змінено.\n" msgid "%s: password changed.\n" msgstr "Пароль змінено." -#, fuzzy, c-format -msgid "%s: password expiry information changed.\n" -msgstr "Застереження про прострочення пароля" - #, fuzzy, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -1927,6 +1956,10 @@ msgstr "Аутентифікацію пройдено.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Будь ласка введіть Ваш власний пароль для аутентифікації.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "" + #, fuzzy, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: не можу заблокувати файл %s\n" @@ -1935,10 +1968,6 @@ msgstr "%s: не можу заблокувати файл %s\n" msgid "%s: signal malfunction\n" msgstr "" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "" - msgid "Session terminated, terminating shell..." msgstr "" @@ -2005,6 +2034,14 @@ msgstr "" "%s: %s\n" "(Ігнорую)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Ви не авторизовані для su %s\n" @@ -2074,6 +2111,11 @@ msgstr "" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: не можу створити новий файл із значеннями по замовчуванню\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: не можу створити новий файл із значеннями по замовчуванню\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: не можу створити новий файл із значеннями по замовчуванню\n" @@ -2102,6 +2144,10 @@ msgstr "%s: група \"%s\" є групою NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: вказано забагато груп (макс %d).\n" +#, fuzzy, c-format +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: бракує пам'яті у update_group\n" + #, fuzzy, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2239,14 +2285,35 @@ msgstr "%s: не можу переписати файл паролів\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: невірне ім'я користувача '%s'\n" + +#, fuzzy, c-format +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: не можу створити теку %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: не можу створити теку %s\n" + +#, fuzzy, c-format +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: не можу оновити файл паролів\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "" +#, fuzzy, c-format +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: не можу створити теку %s\n" + #, fuzzy, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s: не можу створити теку %s\n" @@ -2289,10 +2356,18 @@ msgstr "%s: рядок %d: chown не виконався\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: рядок %d: chown не виконався\n" +#, fuzzy, c-format +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: рядок %d: chown не виконався\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Змінюю вікову інформацію для %s\n" + msgid "Creating mailbox file" msgstr "Створюється файл поштової скриньки" @@ -2305,6 +2380,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Встановлюються права доступу на файл поштової скриньки" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, fuzzy, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: користувач %s існує\n" @@ -2340,6 +2426,10 @@ msgstr "%s: не можу створити %s\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: не можу створити %s\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2351,13 +2441,11 @@ msgstr "" "%s: увага: домашня тека вже існує.\n" "Жоден файл з директорії кістяка не копіюється.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" - msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" msgid " -r, --remove remove home directory and mail spool\n" @@ -2467,6 +2555,13 @@ msgid "" " the user from other groups\n" msgstr "" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr "" @@ -2519,6 +2614,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: користувач %s існує\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, fuzzy, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: невірна дата \"%s\"\n" @@ -2531,6 +2630,10 @@ msgstr "%s: невірна дата \"%s\"\n" msgid "%s: no options\n" msgstr "%s: не можу відкрити файл %s\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "" @@ -2701,6 +2804,19 @@ msgstr "%s: не можу відновити %s: %s (ваші зміни у %s)\ msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: невірна базова тека \"%s\"\n" +#~ msgid "Usage: id\n" +#~ msgstr "Використання: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Останній вхід в систему: %.19s на %s" + +#, fuzzy +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "Застереження про прострочення пароля" + +#~ msgid "Username Port From Latest" +#~ msgstr "Користувач Порт Звідки Останній вхід" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/po/vi.gmo b/po/vi.gmo index 1a60fb4f..eb533e82 100644 Binary files a/po/vi.gmo and b/po/vi.gmo differ diff --git a/po/vi.po b/po/vi.po index 81e269ab..3985254f 100644 --- a/po/vi.po +++ b/po/vi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow master\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2016-10-04 07:07+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" @@ -563,6 +563,10 @@ msgstr "%s: không thể chuyển sang thư mục chroot %s: %s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s: không thể thay đổi thư mục gốc thành %s: %s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -571,6 +575,13 @@ msgstr "" "Phương pháp mã hóa (ENCRYPT_METHOD) không hợp lệ: “%s”\n" "nên hoàn nguyên về giá trị mặc định: DES.\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "Không thể cd (chuyển đổi thư mục) sang “%s”.\n" @@ -831,6 +842,10 @@ msgstr "Điện thoại ở nhà" msgid "Other" msgstr "Khác" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s: trường quá dài\n" + msgid "Cannot change ID to root.\n" msgstr "Không thể thay đổi mã số thành siêu quản trị (root).\n" @@ -882,10 +897,6 @@ msgstr "%s: “%s” là NIS cái cho ứng dụng khách này.\n" msgid "Changing the user information for %s\n" msgstr "Đang thay đổi thông tin về người dùng đối với %s\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s: trường quá dài\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -916,8 +927,8 @@ msgstr "" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr "" " -s, --sha-rounds số vòng SHA cho thuật toán mã hóa SHA*\n" @@ -1232,9 +1243,19 @@ msgstr " -r, --system tạo một tài khoản hệ thống\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root THƯ_MỤC_ĐỔI thư mục để chuyển gốc đến\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list liệt kê những người trong nhóm\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "tên người dùng không hợp lệ “%s”\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s: “%s” không phải là tên nhóm hợp lệ\n" @@ -1346,6 +1367,22 @@ msgstr "%s: tên nhóm của bạn không tương ứng với tên người dùn msgid "%s: only root can use the -g/--group option\n" msgstr "%s: chỉ siêu quản trị có quyền sử dụng tùy chọn “-g/--group”\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append thêm người dùng vào các nhóm phụ\n" +" đưa ra bởi tùy chọn “-G” mà không gỡ bỏ ta " +"khỏi nhóm khác\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID thay đổi mã số nhóm sang GID này\n" @@ -1407,6 +1444,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort sắp xếp các mục tin theo UID\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s: hai tùy chọn “-s” và “-r” không tương thích với nhau\n" @@ -1485,9 +1526,6 @@ msgstr "%s: không thể xóa %s\n" msgid "Usage: id [-a]\n" msgstr "Cách dùng: id [-a]\n" -msgid "Usage: id\n" -msgstr "Cách dùng: id\n" - msgid " groups=" msgstr " nhóm=" @@ -1525,8 +1563,10 @@ msgstr "" " -u, --user ĐĂNG_NHẬP hiển thị mục ghi lastlog cho _người dùng_ " "tên này\n" -msgid "Username Port From Latest" -msgstr "Tài_khoản Cổng Từ Mới nhất" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "Người dùng Cổng Mới nhất" msgid "Username Port Latest" msgstr "Người dùng Cổng Mới nhất" @@ -1660,10 +1700,6 @@ msgstr "Cảnh báo: đăng nhập đã bật lại sau bị khóa ra tạm th msgid "Last login: %s on %s" msgstr "Đang nhập cuối cùng: %s vào %s" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "Đang nhập cuối cùng: %.19s vào %s" - #, c-format msgid " from %.*s" msgstr " từ %.*s" @@ -1816,6 +1852,11 @@ msgstr "%s: dòng %d: người dùng “%s” không tồn tại trong %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s: dòng %d: không thể cập nhật mật khẩu\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s: dòng %d: lỗi mkdir (tạo thư mục) %s: %s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s: dòng %d: lỗi mkdir (tạo thư mục) %s: %s\n" @@ -1955,6 +1996,11 @@ msgstr "Không thể thay đổi mật khẩu cho %s.\n" msgid "The password for %s cannot be changed yet.\n" msgstr "Chưa có thể thay đổi mật khẩu cho %s.\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s: cần mật khẩu shadow cho tùy chọn “-e”\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1991,10 +2037,6 @@ msgstr "Mật khẩu cho %s chưa thay đổi.\n" msgid "%s: password changed.\n" msgstr "%s: mật khẩu đã thay đổi.\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s: thông tin đã thay đổi về sự hết hạn sử dụng mật khẩu.\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2111,6 +2153,10 @@ msgstr "Xác thực mật khẩu bị đi vòng.\n" msgid "Please enter your OWN password as authentication.\n" msgstr "Hãy nhập mật khẩu của MÌNH để xác thực.\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: trục trặc mặt nạ tín hiệu\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s: Không thể rẽ nhánh tiến trình hệ vỏ người dùng\n" @@ -2119,10 +2165,6 @@ msgstr "%s: Không thể rẽ nhánh tiến trình hệ vỏ người dùng\n" msgid "%s: signal malfunction\n" msgstr "%s: tín hiệu trục trặc\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: trục trặc mặt nạ tín hiệu\n" - msgid "Session terminated, terminating shell..." msgstr "Phiên làm việc đã kết thúc, nên kết thúc hệ vỏ…" @@ -2193,6 +2235,14 @@ msgstr "" "%s: %s\n" "(Bị bỏ qua)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "Bạn không có quyền sử dụng lệnh “su” (siêu người dùng) với %s.\n" @@ -2263,6 +2313,11 @@ msgstr "%s: cấu hình %s trong %s sẽ bị bỏ qua\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s: không thể tạo tập tin mặc định mới\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s: không thể tạo tập tin mặc định mới\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s: không thể tạo tập tin mặc định mới\n" @@ -2291,6 +2346,11 @@ msgstr "%s: nhóm “%s” là nhóm kiểu NIS.\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s: ghi rõ quá nhiều nhóm (tối đa %d).\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s: Hết bộ nhớ. Không thể cập nhật %s.\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2454,14 +2514,39 @@ msgstr "%s: Tùy chọn -C không thể dùng cùng với -S\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: “-Z” yêu cầu hạt nhân bật tính năng hỗ trợ SELinux\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s: tên dùng không hợp lệ “%s”\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: không đặt lại được mục tin faillog của UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: không đặt lại được mục tin faillog của UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: không đặt lại được mục tin faillog của UID %lu: %s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: gặp lỗi khi đặt lại mục tin lastlog của UID %lu: %s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: gặp lỗi khi đặt lại mục tin lastlog của UID %lu: %s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: gặp lỗi khi đặt lại mục tin lastlog của UID %lu: %s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2509,10 +2594,20 @@ msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s: dòng %d: lỗi chown (thay đổi quyền sở hữu) %s: %s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "Không thể tạo ánh xạ đăng nhập SELinux cho %s\n" + msgid "Creating mailbox file" msgstr "Đang tạo tập tin hộp thư" @@ -2525,6 +2620,17 @@ msgstr "" msgid "Setting mailbox file permissions" msgstr "Đang đặt quyền truy cập tập tin hộp thư" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s: người dùng “%s” đã có\n" @@ -2558,6 +2664,11 @@ msgstr "%s: không thể tạo mã số người dùng lệ thuộc\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s: không thể tạo mã nhóm phụ thuộc\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "" +"%s: cảnh báo: lỗi ánh xạ tên người dùng %s tới người dùng SELinux %s.\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2569,14 +2680,15 @@ msgstr "" "%s: cảnh báo: thư mục riêng đã có.\n" "Vì vậy không sao chép vào nó tập tin nào từ thư mục “skel”.\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "" -"%s: cảnh báo: lỗi ánh xạ tên người dùng %s tới người dùng SELinux %s.\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr "" " -f, --force ép buộc gỡ bỏ tập tin, thậm chí nếu không\n" " được sở hữu bởi người dùng\n" @@ -2705,6 +2817,23 @@ msgstr "" " đưa ra bởi tùy chọn “-G” mà không gỡ bỏ ta " "khỏi nhóm khác\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append thêm người dùng vào các nhóm phụ\n" +" đưa ra bởi tùy chọn “-G” mà không gỡ bỏ ta " +"khỏi nhóm khác\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login ĐĂNG_NHẬP giá trị mới của tên đăng nhập\n" @@ -2766,6 +2895,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s: người dùng “%s” đã có trong %s\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s: vùng mã số người dùng lệ thuộc không hợp lệ “%s”\n" @@ -2778,6 +2911,10 @@ msgstr "%s: vùng mã số nhóm lệ thuộc không hợp lệ “%s”\n" msgid "%s: no options\n" msgstr "%s: không tùy chọn\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: các cờ “-L”, “-p” và “-U” loại từ lẫn nhau\n" @@ -2949,6 +3086,18 @@ msgstr "%s: không thể phục hồi %s: %s (các thay đổi của bạn nằm msgid "%s: failed to find tcb directory for %s\n" msgstr "%s: gặp lỗi khi tìm thư mục tcb cho %s\n" +#~ msgid "Usage: id\n" +#~ msgstr "Cách dùng: id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "Đang nhập cuối cùng: %.19s vào %s" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s: thông tin đã thay đổi về sự hết hạn sử dụng mật khẩu.\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "Tài_khoản Cổng Từ Mới nhất" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method phương pháp mật mã (một của %s)\n" diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo index 5fa71070..7a28e4b8 100644 Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ diff --git a/po/zh_CN.po b/po/zh_CN.po index a59a2aca..52ef5014 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.15\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2018-06-16 18:17+0800\n" "Last-Translator: Daming Yang \n" "Language-Team: Chinese (simplified) \n" @@ -549,6 +549,10 @@ msgstr "%s:无法进入 chroot 目录 %s:%s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s:无法 chroot 到目录 %s:%s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -557,6 +561,13 @@ msgstr "" "无效的 ENCRYPT_METHOD 值:“%s”。\n" "默认为 DES。\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "无法 cd 进入“%s”\n" @@ -803,6 +814,10 @@ msgstr "家庭电话" msgid "Other" msgstr "其它" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s:字段太长\n" + msgid "Cannot change ID to root.\n" msgstr "无法将 ID 改为 root。\n" @@ -854,10 +869,6 @@ msgstr "%s:“%s”是此客户端的 NIS 管理员。\n" msgid "Changing the user information for %s\n" msgstr "正在改变 %s 的用户信息\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s:字段太长\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -885,8 +896,8 @@ msgstr " -m, --md5 使用 MD5 算法加密明文密码\n" #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds 使用 SHA* 加密算法的轮数\n" #, c-format @@ -1173,9 +1184,19 @@ msgstr " -r, --system 创建一个系统账户\n" #, fuzzy #| msgid " -R, --root CHROOT_DIR directory to chroot into\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -R, --root CHROOT_DIR chroot 到的目录\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list 列出组中的所有成员\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "无效的用户名“%s”\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s:“%s”不是有效的组名\n" @@ -1284,6 +1305,21 @@ msgstr "%s:您的组名和用户名不匹配\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s:只有 root 才可以使用 -g/--group 选项\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,\n" +" 并不从其它组中删除此用户\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID 将组 ID 改为 GID\n" @@ -1339,6 +1375,10 @@ msgstr " -r, --read-only 显示错误和警告,但不改变文 msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort 通过 UID 排序项目\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s:-s 与 -r 不兼容\n" @@ -1415,9 +1455,6 @@ msgstr "%s:无法删除 %s\n" msgid "Usage: id [-a]\n" msgstr "用法:id [-a]\n" -msgid "Usage: id\n" -msgstr "用法:id\n" - msgid " groups=" msgstr " 组=" @@ -1446,8 +1483,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr " -u, --user LOGIN 打印 LOGIN 用户的最近登录记录\n" -msgid "Username Port From Latest" -msgstr "用户名 端口 来自 最后登录时间" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "用户名 端口 最后登录时间" msgid "Username Port Latest" msgstr "用户名 端口 最后登录时间" @@ -1579,10 +1618,6 @@ msgstr "警告:将在暂时锁定一段时间后恢复登录。" msgid "Last login: %s on %s" msgstr "上次登录:%s 在 %s 上" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "上次登录:%.19s 在 %s 上" - #, c-format msgid " from %.*s" msgstr " 来自 %.*s" @@ -1729,6 +1764,11 @@ msgstr "%s:第 %d 行:用户“%s”不存在于 %s 中\n" msgid "%s: line %d: can't update password\n" msgstr "%s:第 %d 行:无法更新密码\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s:第 %d 行:创建目录 %s 失败:%s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s:第 %d 行:创建目录 %s 失败:%s\n" @@ -1854,6 +1894,11 @@ msgstr "无法更改 %s 的密码。\n" msgid "The password for %s cannot be changed yet.\n" msgstr "尚无法更改 %s 的密码。\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s:-e 参数需要有影子密码\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1888,10 +1933,6 @@ msgstr "%s 的密码未被改变。\n" msgid "%s: password changed.\n" msgstr "%s:密码已更改。\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s:密码过期信息已更改。\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2005,6 +2046,10 @@ msgstr "忽略密码认证\n" msgid "Please enter your OWN password as authentication.\n" msgstr "请输入您“自己”的密码作为验证。\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s:信号屏蔽(mask)故障\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s:无法 fork 用户 shell\n" @@ -2013,10 +2058,6 @@ msgstr "%s:无法 fork 用户 shell\n" msgid "%s: signal malfunction\n" msgstr "%s:信号故障\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s:信号屏蔽(mask)故障\n" - msgid "Session terminated, terminating shell..." msgstr "会话结束,结束 shell ..." @@ -2082,6 +2123,14 @@ msgstr "" "%s:%s\n" "(忽略)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "您没有被授权 su %s\n" @@ -2151,6 +2200,11 @@ msgstr "%s:%s 配置(位于 %s) 将被忽略\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s:无法创建新的默认文件\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s:无法创建新的默认文件\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s:无法创建新的默认文件\n" @@ -2179,6 +2233,11 @@ msgstr "%s:“%s”组是一个 NIS 组。\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s:指定了过多组(最多 %d)。\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s:超出内存。不能更新 %s。\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2325,14 +2384,39 @@ msgstr "%s:选项 -C 不能与 -S 选项一起使用\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s:-Z 选项要求内核启用 SELinux\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s:无效的用户名“%s”\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s:重置 UID %lu 的登录失败条目失败:%s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s:重置 UID %lu 的登录失败条目失败:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s:重置 UID %lu 的登录失败条目失败:%s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s:重置 UID %lu 的最近登录条目失败:%s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s:重置 UID %lu 的最近登录条目失败:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s:重置 UID %lu 的最近登录条目失败:%s\n" + #, fuzzy, c-format #| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" @@ -2380,10 +2464,20 @@ msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" +#, fuzzy, c-format +#| msgid "%s: line %d: chown %s failed: %s\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s:第 %d 行:改变 %s 的属主失败:%s\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "" +#, fuzzy, c-format +#| msgid "Cannot create SELinux login mapping for %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "无法为 %s 创建登录映射\n" + msgid "Creating mailbox file" msgstr "正在创建信箱文件" @@ -2394,6 +2488,17 @@ msgstr "没有找到“mail”组。以 0600 权限模式创建用户的信箱 msgid "Setting mailbox file permissions" msgstr "正在设置信箱文件访问权限" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s:用户“%s”已存在\n" @@ -2427,6 +2532,10 @@ msgstr "%s:无法创建子用户 ID\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s:无法创建子用户组 ID\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "%s:警告:将用户名 %s 到 %s SELinux 的用户映射失败。\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2438,13 +2547,15 @@ msgstr "" "%s:警告:此主目录已经存在。\n" "不从 skel 目录里向其中复制任何文件。\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "%s:警告:将用户名 %s 到 %s SELinux 的用户映射失败。\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr " -f, --force 即使不属于此用户,也强制删除文件\n" msgid " -r, --remove remove home directory and mail spool\n" @@ -2556,6 +2667,22 @@ msgstr "" " -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,\n" " 并不从其它组中删除此用户\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append GROUP 将用户追加至上边 -G 中提到的附加组中,\n" +" 并不从其它组中删除此用户\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login NEW_LOGIN 新的登录名称\n" @@ -2611,6 +2738,10 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s:用户“%s”已存在于 %s 中\n" +#, c-format +msgid "%s: homedir must be an absolute path\n" +msgstr "" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s:无效的子 UID 范围“%s”\n" @@ -2623,6 +2754,10 @@ msgstr "%s:无效的子 GID 范围“%s”\n" msgid "%s: no options\n" msgstr "%s:无选项\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s:-L、-p 和 -U 标志互斥\n" @@ -2787,6 +2922,18 @@ msgstr "%s:无法恢复 %s:%s (您的修改在 %s 中)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s:无法为“%s”找到 tcb 目录\n" +#~ msgid "Usage: id\n" +#~ msgstr "用法:id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "上次登录:%.19s 在 %s 上" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s:密码过期信息已更改。\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "用户名 端口 来自 最后登录时间" + #~ msgid " -c, --crypt-method the crypt method (one of %s)\n" #~ msgstr " -c, --crypt-method 加密方法 (%s 之一)\n" diff --git a/po/zh_TW.gmo b/po/zh_TW.gmo index 0dae7679..92e3368d 100644 Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ diff --git a/po/zh_TW.po b/po/zh_TW.po index 76642bfb..257ef158 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: shadow 4.0.9\n" "Report-Msgid-Bugs-To: pkg-shadow-devel@lists.alioth.debian.org\n" -"POT-Creation-Date: 2020-01-23 14:59-0600\n" +"POT-Creation-Date: 2022-01-02 21:10-0600\n" "PO-Revision-Date: 2019-09-23 21:29+0800\n" "Last-Translator: pan93412 \n" "Language-Team: Chinese \n" @@ -548,6 +548,10 @@ msgstr "%s:無法切換至 chroot 目錄 %s:%s\n" msgid "%s: unable to chroot to directory %s: %s\n" msgstr "%s:無法 chroot 到 %s 目錄:%s\n" +#, c-format +msgid "Unable to obtain random bytes.\n" +msgstr "" + #, c-format msgid "" "Invalid ENCRYPT_METHOD value: '%s'.\n" @@ -556,6 +560,13 @@ msgstr "" "ENCRYPT_METHOD 數值:「%s」。\n" "預設值為 DES。\n" +#, c-format +msgid "" +"Unable to generate a salt from setting \"%s\", check your settings in " +"ENCRYPT_METHOD and the corresponding configuration for your selected hash " +"method.\n" +msgstr "" + #, c-format msgid "Unable to cd to '%s'\n" msgstr "無法切換至「%s」目錄\n" @@ -798,6 +809,10 @@ msgstr "家用電話" msgid "Other" msgstr "其它" +#, c-format +msgid "%s: fields too long\n" +msgstr "%s:欄位過長\n" + msgid "Cannot change ID to root.\n" msgstr "無法將 ID 變更成 root。\n" @@ -849,10 +864,6 @@ msgstr "%s:「%s」是此客戶端的 NIS 管理員。\n" msgid "Changing the user information for %s\n" msgstr "正在變更 %s 的使用者資訊\n" -#, c-format -msgid "%s: fields too long\n" -msgstr "%s:欄位過長\n" - #, c-format msgid "" "Usage: %s [options]\n" @@ -882,8 +893,8 @@ msgstr " -m, --md5 使用 MD5 算法加密此純文字密 #| " -s, --sha-rounds number of SHA rounds for the SHA*\n" #| " crypt algorithms\n" msgid "" -" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" -" crypt algorithms\n" +" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" +" or YESCRYPT crypt algorithms\n" msgstr " -s, --sha-rounds SHA* 加密算法的 SHA 回數\n" #, c-format @@ -1171,9 +1182,21 @@ msgstr " -p, --password 密碼 對此新群組使用此已加密密碼 msgid " -r, --system create a system account\n" msgstr " -r, --system 建立系統帳號\n" -msgid " -P, --prefix PREFIX_DIR directory prefix\n" +#, fuzzy +#| msgid " -P, --prefix PREFIX_DIR directory prefix\n" +msgid " -P, --prefix PREFIX_DI directory prefix\n" msgstr " -P, --prefix 目錄前綴 目錄前綴\n" +#, fuzzy +#| msgid " -l, --list list the members of the group\n" +msgid " -U, --users USERS list of user members of this group\n" +msgstr " -l, --list 列出群組成員\n" + +#, fuzzy, c-format +#| msgid "invalid user name '%s'\n" +msgid "Invalid member username %s\n" +msgstr "無效的使用者名稱「%s」\n" + #, c-format msgid "%s: '%s' is not a valid group name\n" msgstr "%s:「%s」非有效群組名稱\n" @@ -1284,6 +1307,21 @@ msgstr "%s:您的群組名稱與使用者名稱不符\n" msgid "%s: only root can use the -g/--group option\n" msgstr "%s:只有 root 才能使用 -g/--group 選項\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -a, --append append the users mentioned by -U option to " +"the group \n" +" without removing existing user members\n" +msgstr "" +" -a, --append 將使用者附加至 -G 選項所指定的增補群組,\n" +" 而不將使用者從其他群組移除\n" + msgid " -g, --gid GID change the group ID to GID\n" msgstr " -g, --gid GID 將群組 ID 變更成 GID\n" @@ -1342,6 +1380,10 @@ msgstr "" msgid " -s, --sort sort entries by UID\n" msgstr " -s, --sort 依 UID 排序項目\n" +msgid "" +" -S, --silence-warnings silence controversial/paranoid warnings\n" +msgstr "" + #, c-format msgid "%s: -s and -r are incompatible\n" msgstr "%s:-s 和 -r 是互不相容的\n" @@ -1418,9 +1460,6 @@ msgstr "%s:無法刪除 %s\n" msgid "Usage: id [-a]\n" msgstr "用法:id [-a]\n" -msgid "Usage: id\n" -msgstr "用法:id\n" - msgid " groups=" msgstr " 群組=" @@ -1451,8 +1490,10 @@ msgid "" " -u, --user LOGIN print lastlog record of the specified LOGIN\n" msgstr " -u, --user 使用者 輸出 <使用者> 的 lastlog 記錄\n" -msgid "Username Port From Latest" -msgstr "使用者名 埠號 來自 最後登入時間" +#, fuzzy, c-format +#| msgid "Username Port Latest" +msgid "Username Port From%*sLatest\n" +msgstr "使用者名 埠號 最後登入時間" msgid "Username Port Latest" msgstr "使用者名 埠號 最後登入時間" @@ -1588,10 +1629,6 @@ msgstr "警告:在短暫的鎖定後將恢復登入。" msgid "Last login: %s on %s" msgstr "上次登入:%s 在 %s 上" -#, c-format -msgid "Last login: %.19s on %s" -msgstr "上次登入:%.19s 在 %s 上" - #, c-format msgid " from %.*s" msgstr " 來自 %.*s" @@ -1738,6 +1775,11 @@ msgstr "%s:第 %d 行:「%s」使用者不存在 %s\n" msgid "%s: line %d: can't update password\n" msgstr "%s:第 %d 行:無法更新密碼\n" +#, fuzzy, c-format +#| msgid "%s: line %d: mkdir %s failed: %s\n" +msgid "%s: line %d: homedir must be an absolute path\n" +msgstr "%s:第 %d 行:建立 %s 目錄失敗:%s\n" + #, c-format msgid "%s: line %d: mkdir %s failed: %s\n" msgstr "%s:第 %d 行:建立 %s 目錄失敗:%s\n" @@ -1861,6 +1903,11 @@ msgstr "無法更改 %s 的密碼。\n" msgid "The password for %s cannot be changed yet.\n" msgstr "尚無法變更 %s 的密碼。\n" +#, fuzzy, c-format +#| msgid "%s: shadow passwords required for -e\n" +msgid "%s: malformed password data obtained for user %s\n" +msgstr "%s:-e 參數需要有shadow密碼\n" + #, c-format msgid "" "%s: unlocking the password would result in a passwordless account.\n" @@ -1895,10 +1942,6 @@ msgstr "%s 的密碼未被改變。\n" msgid "%s: password changed.\n" msgstr "%s:密碼已變更。\n" -#, c-format -msgid "%s: password expiry information changed.\n" -msgstr "%s:已變更密碼過期資訊。\n" - #, c-format msgid "" "Usage: %s [options] [passwd]\n" @@ -2012,6 +2055,10 @@ msgstr "忽略密碼認証\n" msgid "Please enter your OWN password as authentication.\n" msgstr "請輸入您自己的密碼作為驗証。\n" +#, c-format +msgid "%s: signal masking malfunction\n" +msgstr "%s: 訊號遮罩發生問題\n" + #, c-format msgid "%s: Cannot fork user shell\n" msgstr "%s:無法 fork 使用者 shell\n" @@ -2020,10 +2067,6 @@ msgstr "%s:無法 fork 使用者 shell\n" msgid "%s: signal malfunction\n" msgstr "%s: 訊號發生問題\n" -#, c-format -msgid "%s: signal masking malfunction\n" -msgstr "%s: 訊號遮罩發生問題\n" - msgid "Session terminated, terminating shell..." msgstr "已終止工作階段,正在終止 shell..." @@ -2076,6 +2119,14 @@ msgstr "" "%s:%s\n" "(忽略)\n" +#, c-format +msgid "Password field is empty, this is forbidden for all accounts.\n" +msgstr "" + +#, c-format +msgid "Password field is empty, this is forbidden for super-user.\n" +msgstr "" + #, c-format msgid "You are not authorized to su %s\n" msgstr "您沒有被授權 su %s\n" @@ -2148,6 +2199,11 @@ msgstr "%1$s: 會忽略 %3$s 中的 %2$s 組態設定檔\n" msgid "%s: cannot create new defaults file: %s\n" msgstr "%s:無法建立新的預設檔案:%s\n" +#, fuzzy, c-format +#| msgid "%s: cannot create new defaults file\n" +msgid "%s: cannot create directory for defaults file\n" +msgstr "%s:無法建立新的預設檔案\n" + #, c-format msgid "%s: cannot create new defaults file\n" msgstr "%s:無法建立新的預設檔案\n" @@ -2176,6 +2232,11 @@ msgstr "%s:群組「%s」是 NIS 群組。\n" msgid "%s: too many groups specified (max %d).\n" msgstr "%s:指定了過多群組(最多 %d)。\n" +#, fuzzy, c-format +#| msgid "%s: Out of memory. Cannot update %s.\n" +msgid "%s: Out of memory. Cannot find group '%s'.\n" +msgstr "%s:記憶體不足。無法更新 %s。\n" + #, c-format msgid "" "Usage: %s [options] LOGIN\n" @@ -2327,14 +2388,39 @@ msgstr "%s:-Z 不能跟 --prefix 一起使用\n" msgid "%s: -Z requires SELinux enabled kernel\n" msgstr "%s: -Z 需要啟用 SELinux 的核心\n" +#, fuzzy, c-format +#| msgid "%s: invalid user name '%s'\n" +msgid "%s: invalid user name '%s': use --badname to ignore\n" +msgstr "%s:無效使用者名稱「%s」\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to open the faillog file for UID %lu: %s\n" +msgstr "%s: 無法重設 UID %lu 的 faillog 項目:%s\n" + #, c-format msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" msgstr "%s: 無法重設 UID %lu 的 faillog 項目:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the faillog entry of UID %lu: %s\n" +msgid "%s: failed to close the faillog file for UID %lu: %s\n" +msgstr "%s: 無法重設 UID %lu 的 faillog 項目:%s\n" + +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to open the lastlog file for UID %lu: %s\n" +msgstr "%s: 無法重設 UID %lu 的 lastlog 項目:%s\n" + #, c-format msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" msgstr "%s: 無法重設 UID %lu 的 lastlog 項目:%s\n" +#, fuzzy, c-format +#| msgid "%s: failed to reset the lastlog entry of UID %lu: %s\n" +msgid "%s: failed to close the lastlog file for UID %lu: %s\n" +msgstr "%s: 無法重設 UID %lu 的 lastlog 項目:%s\n" + #, c-format msgid "%s: failed to reset the tallylog entry of user \"%s\"\n" msgstr "%s:無法重設「%s」使用者的 tallylog 項目\n" @@ -2375,10 +2461,20 @@ msgstr "%s:警告:在「%s」上變更所有權失敗:%m\n" msgid "%s: warning: chmod on `%s' failed: %m\n" msgstr "%s:警告:在「%s」上變更權限失敗:%m\n" +#, fuzzy, c-format +#| msgid "%s: warning: chown on `%s' failed: %m\n" +msgid "%s: warning: chown on '%s' failed: %m\n" +msgstr "%s:警告:在「%s」上變更所有權失敗:%m\n" + #, c-format msgid "%s: cannot reset SELinux file creation context\n" msgstr "%s: 無法重設 SELinux 檔案建立上下文\n" +#, fuzzy, c-format +#| msgid "%s: cannot set SELinux context for home directory %s\n" +msgid "%s: cannot set SELinux context for mailbox file %s\n" +msgstr "%s:無法對家目錄 %s 設定 SELinux 上下文\n" + msgid "Creating mailbox file" msgstr "正在建立 mailbox 檔案" @@ -2389,6 +2485,17 @@ msgstr "找不到 'mail' 群組。將建立模式為 0600 的使用者 mailbox msgid "Setting mailbox file permissions" msgstr "正在設定 mailbox 檔案的權限" +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d " +"range.\n" +msgstr "" + +#, c-format +msgid "" +"%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n" +msgstr "" + #, c-format msgid "%s: user '%s' already exists\n" msgstr "%s:「%s」使用者已存在\n" @@ -2423,6 +2530,10 @@ msgstr "%s:無法建立次級使用者 ID\n" msgid "%s: can't create subordinate group IDs\n" msgstr "%s:無法建立次級群組 ID\n" +#, c-format +msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" +msgstr "%s: 警告:映射 %s 使用者名稱至 %s SELinux 使用者失敗。\n" + #, fuzzy, c-format #| msgid "" #| "%s: warning: the home directory already exists.\n" @@ -2434,13 +2545,15 @@ msgstr "" "%s: 警告:家目錄已存在。\n" "將不複製任何基礎結構目錄中的檔案至家目錄。\n" -#, c-format -msgid "%s: warning: the user name %s to %s SELinux user mapping failed.\n" -msgstr "%s: 警告:映射 %s 使用者名稱至 %s SELinux 使用者失敗。\n" - +#, fuzzy +#| msgid "" +#| " -f, --force force removal of files,\n" +#| " even if not owned by user\n" msgid "" -" -f, --force force removal of files,\n" -" even if not owned by user\n" +" -f, --force force some actions that would fail " +"otherwise\n" +" e.g. removal of user still logged in\n" +" or files, even if not owned by the user\n" msgstr " -f, --force 即使使用者未擁有該檔案仍強制移除\n" msgid " -r, --remove remove home directory and mail spool\n" @@ -2550,6 +2663,22 @@ msgstr "" " -a, --append 將使用者附加至 -G 選項所指定的增補群組,\n" " 而不將使用者從其他群組移除\n" +#, fuzzy +#| msgid "" +#| " -a, --append append the user to the supplemental " +#| "GROUPS\n" +#| " mentioned by the -G option without " +#| "removing\n" +#| " the user from other groups\n" +msgid "" +" -r, --remove remove the user from only the supplemental " +"GROUPS\n" +" mentioned by the -G option without removing\n" +" the user from other groups\n" +msgstr "" +" -a, --append 將使用者附加至 -G 選項所指定的增補群組,\n" +" 而不將使用者從其他群組移除\n" + msgid " -l, --login NEW_LOGIN new value of the login name\n" msgstr " -l, --login 新使用者名稱 設定使用者名稱的新值\n" @@ -2607,6 +2736,11 @@ msgstr "" msgid "%s: user '%s' already exists in %s\n" msgstr "%s:使用者「%s」已存在於 %s\n" +#, fuzzy, c-format +#| msgid "%s: home directory \"%s\" must be mounted on BTRFS\n" +msgid "%s: homedir must be an absolute path\n" +msgstr "%s:「%s」家目錄必須掛載於 BTRFS\n" + #, c-format msgid "%s: invalid subordinate uid range '%s'\n" msgstr "%s:次級 UID 範圍「%s」無效\n" @@ -2619,6 +2753,10 @@ msgstr "%s:次級 GID 範圍「%s」無效\n" msgid "%s: no options\n" msgstr "%s:沒有選項\n" +#, c-format +msgid "%s: %s and %s are mutually exclusive flags\n" +msgstr "" + #, c-format msgid "%s: the -L, -p, and -U flags are exclusive\n" msgstr "%s: -L、-p 及 -U 旗標互斥\n" @@ -2782,6 +2920,18 @@ msgstr "%s:無法復原 %s:%s (您的修改在 %s 中)\n" msgid "%s: failed to find tcb directory for %s\n" msgstr "%s:找不到 %s 的 tcb 目錄\n" +#~ msgid "Usage: id\n" +#~ msgstr "用法:id\n" + +#~ msgid "Last login: %.19s on %s" +#~ msgstr "上次登入:%.19s 在 %s 上" + +#~ msgid "%s: password expiry information changed.\n" +#~ msgstr "%s:已變更密碼過期資訊。\n" + +#~ msgid "Username Port From Latest" +#~ msgstr "使用者名 埠號 來自 最後登入時間" + #, fuzzy #~| msgid "Usage: %s [input]\n" #~ msgid "" diff --git a/src/Makefile.am b/src/Makefile.am index f175928a..a1a2e4e3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -10,6 +10,7 @@ sgidperms = 2755 AM_CPPFLAGS = \ -I${top_srcdir}/lib \ -I$(top_srcdir)/libmisc \ + -I$(top_srcdir) \ -DLOCALEDIR=\"$(datadir)/locale\" # XXX why are login and su in /bin anyway (other than for @@ -78,7 +79,7 @@ shadowsgidubins = passwd endif LDADD = $(INTLLIBS) \ - $(top_builddir)/libmisc/libmisc.a \ + $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la \ $(LIBTCB) @@ -95,18 +96,18 @@ LIBCRYPT_NOPAM = $(LIBCRYPT) endif chage_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) -newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) +newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl +newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl chfn_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) chsh_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) expiry_LDADD = $(LDADD) $(LIBECONF) gpasswd_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) +groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl +groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) +groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl grpck_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) grpconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) grpunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) @@ -116,7 +117,7 @@ login_SOURCES = \ login_nopam.c login_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) newgrp_LDADD = $(LDADD) $(LIBAUDIT) $(LIBCRYPT) $(LIBECONF) -newusers_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) +newusers_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -ldl nologin_LDADD = passwd_LDADD = $(LDADD) $(LIBPAM) $(LIBCRACK) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBECONF) pwck_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) @@ -127,9 +128,9 @@ su_SOURCES = \ suauth.c su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) sulogin_LDADD = $(LDADD) $(LIBCRYPT) $(LIBECONF) -useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF) -usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) +useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -ldl +userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF) -ldl +usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -ldl vipw_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) install-am: all-am @@ -156,4 +157,79 @@ if FCAPS setcap cap_setuid+ep $(DESTDIR)$(ubindir)/newuidmap setcap cap_setgid+ep $(DESTDIR)$(ubindir)/newgidmap endif + +bin_PROGRAMS += getsubids +noinst_PROGRAMS += get_subid_owners \ + new_subid_range \ + free_subid_range \ + check_subid_range + +MISCLIBS = \ + $(LIBAUDIT) \ + $(LIBSELINUX) \ + $(LIBSEMANAGE) \ + $(LIBCRYPT_NOPAM) \ + $(LIBSKEY) \ + $(LIBMD) \ + $(LIBECONF) \ + $(LIBCRYPT) \ + $(LIBTCB) + +getsubids_LDADD = \ + $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la \ + $(top_builddir)/libsubid/libsubid.la \ + $(MISCLIBS) -ldl + +getsubids_CPPFLAGS = \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/libmisc \ + -I$(top_srcdir) \ + -I$(top_srcdir)/libsubid + +get_subid_owners_LDADD = \ + $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la \ + $(top_builddir)/libsubid/libsubid.la \ + $(MISCLIBS) -ldl + +get_subid_owners_CPPFLAGS = \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/libmisc \ + -I$(top_srcdir) \ + -I$(top_srcdir)/libsubid + +new_subid_range_CPPFLAGS = \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/libmisc \ + -I$(top_srcdir) \ + -I$(top_srcdir)/libsubid + +new_subid_range_LDADD = \ + $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la \ + $(top_builddir)/libsubid/libsubid.la \ + $(MISCLIBS) -ldl + +free_subid_range_CPPFLAGS = \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir)/libmisc \ + -I$(top_srcdir) \ + -I$(top_srcdir)/libsubid + +free_subid_range_LDADD = \ + $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la \ + $(top_builddir)/libsubid/libsubid.la \ + $(MISCLIBS) -ldl + +check_subid_range_CPPFLAGS = \ + -I$(top_srcdir)/lib \ + -I$(top_srcdir) \ + -I$(top_srcdir)/libmisc + +check_subid_range_LDADD = \ + $(top_builddir)/lib/libshadow.la \ + $(top_builddir)/libmisc/libmisc.la \ + $(MISCLIBS) -ldl endif diff --git a/src/Makefile.in b/src/Makefile.in index d66e6e85..5aeb65c1 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -88,11 +88,12 @@ PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -bin_PROGRAMS = groups$(EXEEXT) login$(EXEEXT) $(am__EXEEXT_1) +bin_PROGRAMS = groups$(EXEEXT) login$(EXEEXT) $(am__EXEEXT_1) \ + $(am__EXEEXT_2) sbin_PROGRAMS = nologin$(EXEEXT) ubin_PROGRAMS = faillog$(EXEEXT) lastlog$(EXEEXT) chage$(EXEEXT) \ chfn$(EXEEXT) chsh$(EXEEXT) expiry$(EXEEXT) gpasswd$(EXEEXT) \ - newgrp$(EXEEXT) passwd$(EXEEXT) $(am__EXEEXT_2) + newgrp$(EXEEXT) passwd$(EXEEXT) $(am__EXEEXT_4) @ENABLE_SUBIDS_TRUE@am__append_1 = newgidmap newuidmap @WITH_SU_TRUE@am__append_2 = su usbin_PROGRAMS = chgpasswd$(EXEEXT) chpasswd$(EXEEXT) \ @@ -102,15 +103,27 @@ usbin_PROGRAMS = chgpasswd$(EXEEXT) chpasswd$(EXEEXT) \ pwck$(EXEEXT) pwconv$(EXEEXT) pwunconv$(EXEEXT) \ useradd$(EXEEXT) userdel$(EXEEXT) usermod$(EXEEXT) \ vipw$(EXEEXT) -noinst_PROGRAMS = id$(EXEEXT) sulogin$(EXEEXT) +noinst_PROGRAMS = id$(EXEEXT) sulogin$(EXEEXT) $(am__EXEEXT_3) @WITH_SU_TRUE@am__append_3 = su @WITH_TCB_FALSE@am__append_4 = passwd @ACCT_TOOLS_SETUID_TRUE@am__append_5 = chgpasswd chpasswd groupadd groupdel groupmod newusers useradd userdel usermod @ENABLE_SUBIDS_TRUE@@FCAPS_FALSE@am__append_6 = newgidmap newuidmap +@ENABLE_SUBIDS_TRUE@am__append_7 = getsubids +@ENABLE_SUBIDS_TRUE@am__append_8 = get_subid_owners \ +@ENABLE_SUBIDS_TRUE@ new_subid_range \ +@ENABLE_SUBIDS_TRUE@ free_subid_range \ +@ENABLE_SUBIDS_TRUE@ check_subid_range + subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ - $(top_srcdir)/configure.ac +am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \ + $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \ + $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ + $(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \ + $(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \ + $(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \ + $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \ + $(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) @@ -119,9 +132,14 @@ CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @WITH_SU_TRUE@am__EXEEXT_1 = su$(EXEEXT) +@ENABLE_SUBIDS_TRUE@am__EXEEXT_2 = getsubids$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)" \ "$(DESTDIR)$(ubindir)" "$(DESTDIR)$(usbindir)" -@ENABLE_SUBIDS_TRUE@am__EXEEXT_2 = newgidmap$(EXEEXT) \ +@ENABLE_SUBIDS_TRUE@am__EXEEXT_3 = get_subid_owners$(EXEEXT) \ +@ENABLE_SUBIDS_TRUE@ new_subid_range$(EXEEXT) \ +@ENABLE_SUBIDS_TRUE@ free_subid_range$(EXEEXT) \ +@ENABLE_SUBIDS_TRUE@ check_subid_range$(EXEEXT) +@ENABLE_SUBIDS_TRUE@am__EXEEXT_4 = newgidmap$(EXEEXT) \ @ENABLE_SUBIDS_TRUE@ newuidmap$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) $(sbin_PROGRAMS) \ $(ubin_PROGRAMS) $(usbin_PROGRAMS) @@ -129,7 +147,7 @@ chage_SOURCES = chage.c chage_OBJECTS = chage.$(OBJEXT) am__DEPENDENCIES_1 = am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.a \ + $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) @ACCT_TOOLS_SETUID_TRUE@am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) chage_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_3) \ @@ -139,9 +157,25 @@ AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = +check_subid_range_SOURCES = check_subid_range.c +check_subid_range_OBJECTS = \ + check_subid_range-check_subid_range.$(OBJEXT) +@USE_PAM_FALSE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) +@ENABLE_SUBIDS_TRUE@am__DEPENDENCIES_5 = $(am__DEPENDENCIES_1) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_4) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_1) +@ENABLE_SUBIDS_TRUE@check_subid_range_DEPENDENCIES = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) chfn_SOURCES = chfn.c chfn_OBJECTS = chfn.$(OBJEXT) -@USE_PAM_FALSE@am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1) chfn_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ $(am__DEPENDENCIES_4) $(am__DEPENDENCIES_1) \ @@ -169,8 +203,31 @@ faillog_SOURCES = faillog.c faillog_OBJECTS = faillog.$(OBJEXT) faillog_LDADD = $(LDADD) faillog_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.a \ + $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) +free_subid_range_SOURCES = free_subid_range.c +free_subid_range_OBJECTS = \ + free_subid_range-free_subid_range.$(OBJEXT) +@ENABLE_SUBIDS_TRUE@free_subid_range_DEPENDENCIES = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) +get_subid_owners_SOURCES = get_subid_owners.c +get_subid_owners_OBJECTS = \ + get_subid_owners-get_subid_owners.$(OBJEXT) +@ENABLE_SUBIDS_TRUE@get_subid_owners_DEPENDENCIES = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) +getsubids_SOURCES = getsubids.c +getsubids_OBJECTS = getsubids-getsubids.$(OBJEXT) +@ENABLE_SUBIDS_TRUE@getsubids_DEPENDENCIES = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) gpasswd_SOURCES = gpasswd.c gpasswd_OBJECTS = gpasswd.$(OBJEXT) gpasswd_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ @@ -200,7 +257,7 @@ groups_SOURCES = groups.c groups_OBJECTS = groups.$(OBJEXT) groups_LDADD = $(LDADD) groups_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.a \ + $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) grpck_SOURCES = grpck.c grpck_OBJECTS = grpck.$(OBJEXT) @@ -218,7 +275,7 @@ id_SOURCES = id.c id_OBJECTS = id.$(OBJEXT) id_LDADD = $(LDADD) id_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.a \ + $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) lastlog_SOURCES = lastlog.c lastlog_OBJECTS = lastlog.$(OBJEXT) @@ -234,12 +291,19 @@ logoutd_SOURCES = logoutd.c logoutd_OBJECTS = logoutd.$(OBJEXT) logoutd_LDADD = $(LDADD) logoutd_DEPENDENCIES = $(am__DEPENDENCIES_1) \ - $(top_builddir)/libmisc/libmisc.a \ + $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la $(am__DEPENDENCIES_1) +new_subid_range_SOURCES = new_subid_range.c +new_subid_range_OBJECTS = new_subid_range-new_subid_range.$(OBJEXT) +@ENABLE_SUBIDS_TRUE@new_subid_range_DEPENDENCIES = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(am__DEPENDENCIES_5) newgidmap_SOURCES = newgidmap.c newgidmap_OBJECTS = newgidmap.$(OBJEXT) newgidmap_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) newgrp_SOURCES = newgrp.c newgrp_OBJECTS = newgrp.$(OBJEXT) newgrp_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ @@ -247,7 +311,7 @@ newgrp_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ newuidmap_SOURCES = newuidmap.c newuidmap_OBJECTS = newuidmap.$(OBJEXT) newuidmap_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ - $(am__DEPENDENCIES_1) + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) newusers_SOURCES = newusers.c newusers_OBJECTS = newusers.$(OBJEXT) newusers_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ @@ -320,16 +384,21 @@ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__maybe_remake_depfiles = depfiles -am__depfiles_remade = ./$(DEPDIR)/chage.Po ./$(DEPDIR)/chfn.Po \ - ./$(DEPDIR)/chgpasswd.Po ./$(DEPDIR)/chpasswd.Po \ - ./$(DEPDIR)/chsh.Po ./$(DEPDIR)/expiry.Po \ - ./$(DEPDIR)/faillog.Po ./$(DEPDIR)/gpasswd.Po \ +am__depfiles_remade = ./$(DEPDIR)/chage.Po \ + ./$(DEPDIR)/check_subid_range-check_subid_range.Po \ + ./$(DEPDIR)/chfn.Po ./$(DEPDIR)/chgpasswd.Po \ + ./$(DEPDIR)/chpasswd.Po ./$(DEPDIR)/chsh.Po \ + ./$(DEPDIR)/expiry.Po ./$(DEPDIR)/faillog.Po \ + ./$(DEPDIR)/free_subid_range-free_subid_range.Po \ + ./$(DEPDIR)/get_subid_owners-get_subid_owners.Po \ + ./$(DEPDIR)/getsubids-getsubids.Po ./$(DEPDIR)/gpasswd.Po \ ./$(DEPDIR)/groupadd.Po ./$(DEPDIR)/groupdel.Po \ ./$(DEPDIR)/groupmems.Po ./$(DEPDIR)/groupmod.Po \ ./$(DEPDIR)/groups.Po ./$(DEPDIR)/grpck.Po \ ./$(DEPDIR)/grpconv.Po ./$(DEPDIR)/grpunconv.Po \ ./$(DEPDIR)/id.Po ./$(DEPDIR)/lastlog.Po ./$(DEPDIR)/login.Po \ ./$(DEPDIR)/login_nopam.Po ./$(DEPDIR)/logoutd.Po \ + ./$(DEPDIR)/new_subid_range-new_subid_range.Po \ ./$(DEPDIR)/newgidmap.Po ./$(DEPDIR)/newgrp.Po \ ./$(DEPDIR)/newuidmap.Po ./$(DEPDIR)/newusers.Po \ ./$(DEPDIR)/nologin.Po ./$(DEPDIR)/passwd.Po \ @@ -357,20 +426,22 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = -SOURCES = chage.c chfn.c chgpasswd.c chpasswd.c chsh.c expiry.c \ - faillog.c gpasswd.c groupadd.c groupdel.c groupmems.c \ - groupmod.c groups.c grpck.c grpconv.c grpunconv.c id.c \ - lastlog.c $(login_SOURCES) logoutd.c newgidmap.c newgrp.c \ - newuidmap.c newusers.c nologin.c passwd.c pwck.c pwconv.c \ - pwunconv.c $(su_SOURCES) sulogin.c useradd.c userdel.c \ - usermod.c vipw.c -DIST_SOURCES = chage.c chfn.c chgpasswd.c chpasswd.c chsh.c expiry.c \ - faillog.c gpasswd.c groupadd.c groupdel.c groupmems.c \ - groupmod.c groups.c grpck.c grpconv.c grpunconv.c id.c \ - lastlog.c $(login_SOURCES) logoutd.c newgidmap.c newgrp.c \ - newuidmap.c newusers.c nologin.c passwd.c pwck.c pwconv.c \ - pwunconv.c $(su_SOURCES) sulogin.c useradd.c userdel.c \ - usermod.c vipw.c +SOURCES = chage.c check_subid_range.c chfn.c chgpasswd.c chpasswd.c \ + chsh.c expiry.c faillog.c free_subid_range.c \ + get_subid_owners.c getsubids.c gpasswd.c groupadd.c groupdel.c \ + groupmems.c groupmod.c groups.c grpck.c grpconv.c grpunconv.c \ + id.c lastlog.c $(login_SOURCES) logoutd.c new_subid_range.c \ + newgidmap.c newgrp.c newuidmap.c newusers.c nologin.c passwd.c \ + pwck.c pwconv.c pwunconv.c $(su_SOURCES) sulogin.c useradd.c \ + userdel.c usermod.c vipw.c +DIST_SOURCES = chage.c check_subid_range.c chfn.c chgpasswd.c \ + chpasswd.c chsh.c expiry.c faillog.c free_subid_range.c \ + get_subid_owners.c getsubids.c gpasswd.c groupadd.c groupdel.c \ + groupmems.c groupmod.c groups.c grpck.c grpconv.c grpunconv.c \ + id.c lastlog.c $(login_SOURCES) logoutd.c new_subid_range.c \ + newgidmap.c newgrp.c newuidmap.c newusers.c nologin.c passwd.c \ + pwck.c pwconv.c pwunconv.c $(su_SOURCES) sulogin.c useradd.c \ + userdel.c usermod.c vipw.c am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ @@ -423,7 +494,6 @@ ECONF_CPPFLAGS = @ECONF_CPPFLAGS@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@ GMSGFMT = @GMSGFMT@ GMSGFMT_015 = @GMSGFMT_015@ GREP = @GREP@ @@ -452,9 +522,14 @@ LIBS = @LIBS@ LIBSELINUX = @LIBSELINUX@ LIBSEMANAGE = @LIBSEMANAGE@ LIBSKEY = @LIBSKEY@ +LIBSUBID_ABI = @LIBSUBID_ABI@ +LIBSUBID_ABI_MAJOR = @LIBSUBID_ABI_MAJOR@ +LIBSUBID_ABI_MICRO = @LIBSUBID_ABI_MICRO@ +LIBSUBID_ABI_MINOR = @LIBSUBID_ABI_MINOR@ LIBTCB = @LIBTCB@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ +LIYESCRYPT = @LIYESCRYPT@ LN_S = @LN_S@ LTLIBICONV = @LTLIBICONV@ LTLIBINTL = @LTLIBINTL@ @@ -492,7 +567,6 @@ VENDORDIR = @VENDORDIR@ VERSION = @VERSION@ XGETTEXT = @XGETTEXT@ XGETTEXT_015 = @XGETTEXT_015@ -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@ XMLCATALOG = @XMLCATALOG@ XML_CATALOG_FILE = @XML_CATALOG_FILE@ XSLTPROC = @XSLTPROC@ @@ -562,6 +636,7 @@ sgidperms = 2755 AM_CPPFLAGS = \ -I${top_srcdir}/lib \ -I$(top_srcdir)/libmisc \ + -I$(top_srcdir) \ -DLOCALEDIR=\"$(datadir)/locale\" suidusbins = $(am__append_5) @@ -570,7 +645,7 @@ suidubins = chage chfn chsh expiry gpasswd newgrp $(am__append_4) \ $(am__append_6) @WITH_TCB_TRUE@shadowsgidubins = passwd LDADD = $(INTLLIBS) \ - $(top_builddir)/libmisc/libmisc.a \ + $(top_builddir)/libmisc/libmisc.la \ $(top_builddir)/lib/libshadow.la \ $(LIBTCB) @@ -579,18 +654,18 @@ LDADD = $(INTLLIBS) \ @USE_PAM_FALSE@LIBCRYPT_NOPAM = $(LIBCRYPT) @USE_PAM_TRUE@LIBCRYPT_NOPAM = chage_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) -newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) +newuidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl +newgidmap_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCAP) $(LIBECONF) -ldl chfn_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) chgpasswd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) chsh_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) chpasswd_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) expiry_LDADD = $(LDADD) $(LIBECONF) gpasswd_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) +groupadd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl +groupdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl groupmems_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) +groupmod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) -ldl grpck_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) grpconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) grpunconv_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) @@ -601,7 +676,7 @@ login_SOURCES = \ login_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) newgrp_LDADD = $(LDADD) $(LIBAUDIT) $(LIBCRYPT) $(LIBECONF) -newusers_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) +newusers_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT) $(LIBECONF) -ldl nologin_LDADD = passwd_LDADD = $(LDADD) $(LIBPAM) $(LIBCRACK) $(LIBAUDIT) $(LIBSELINUX) $(LIBCRYPT_NOPAM) $(LIBECONF) pwck_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) @@ -613,10 +688,79 @@ su_SOURCES = \ su_LDADD = $(LDADD) $(LIBPAM) $(LIBAUDIT) $(LIBCRYPT_NOPAM) $(LIBSKEY) $(LIBMD) $(LIBECONF) sulogin_LDADD = $(LDADD) $(LIBCRYPT) $(LIBECONF) -useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF) -usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) +useradd_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -ldl +userdel_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBECONF) -ldl +usermod_LDADD = $(LDADD) $(LIBPAM_SUID) $(LIBAUDIT) $(LIBSELINUX) $(LIBSEMANAGE) $(LIBACL) $(LIBATTR) $(LIBECONF) -ldl vipw_LDADD = $(LDADD) $(LIBAUDIT) $(LIBSELINUX) $(LIBECONF) +@ENABLE_SUBIDS_TRUE@MISCLIBS = \ +@ENABLE_SUBIDS_TRUE@ $(LIBAUDIT) \ +@ENABLE_SUBIDS_TRUE@ $(LIBSELINUX) \ +@ENABLE_SUBIDS_TRUE@ $(LIBSEMANAGE) \ +@ENABLE_SUBIDS_TRUE@ $(LIBCRYPT_NOPAM) \ +@ENABLE_SUBIDS_TRUE@ $(LIBSKEY) \ +@ENABLE_SUBIDS_TRUE@ $(LIBMD) \ +@ENABLE_SUBIDS_TRUE@ $(LIBECONF) \ +@ENABLE_SUBIDS_TRUE@ $(LIBCRYPT) \ +@ENABLE_SUBIDS_TRUE@ $(LIBTCB) + +@ENABLE_SUBIDS_TRUE@getsubids_LDADD = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl + +@ENABLE_SUBIDS_TRUE@getsubids_CPPFLAGS = \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid + +@ENABLE_SUBIDS_TRUE@get_subid_owners_LDADD = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl + +@ENABLE_SUBIDS_TRUE@get_subid_owners_CPPFLAGS = \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid + +@ENABLE_SUBIDS_TRUE@new_subid_range_CPPFLAGS = \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid + +@ENABLE_SUBIDS_TRUE@new_subid_range_LDADD = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl + +@ENABLE_SUBIDS_TRUE@free_subid_range_CPPFLAGS = \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libsubid + +@ENABLE_SUBIDS_TRUE@free_subid_range_LDADD = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libsubid/libsubid.la \ +@ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl + +@ENABLE_SUBIDS_TRUE@check_subid_range_CPPFLAGS = \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/lib \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir) \ +@ENABLE_SUBIDS_TRUE@ -I$(top_srcdir)/libmisc + +@ENABLE_SUBIDS_TRUE@check_subid_range_LDADD = \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/lib/libshadow.la \ +@ENABLE_SUBIDS_TRUE@ $(top_builddir)/libmisc/libmisc.la \ +@ENABLE_SUBIDS_TRUE@ $(MISCLIBS) -ldl + all: all-am .SUFFIXES: @@ -860,6 +1004,10 @@ chage$(EXEEXT): $(chage_OBJECTS) $(chage_DEPENDENCIES) $(EXTRA_chage_DEPENDENCIE @rm -f chage$(EXEEXT) $(AM_V_CCLD)$(LINK) $(chage_OBJECTS) $(chage_LDADD) $(LIBS) +check_subid_range$(EXEEXT): $(check_subid_range_OBJECTS) $(check_subid_range_DEPENDENCIES) $(EXTRA_check_subid_range_DEPENDENCIES) + @rm -f check_subid_range$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_subid_range_OBJECTS) $(check_subid_range_LDADD) $(LIBS) + chfn$(EXEEXT): $(chfn_OBJECTS) $(chfn_DEPENDENCIES) $(EXTRA_chfn_DEPENDENCIES) @rm -f chfn$(EXEEXT) $(AM_V_CCLD)$(LINK) $(chfn_OBJECTS) $(chfn_LDADD) $(LIBS) @@ -884,6 +1032,18 @@ faillog$(EXEEXT): $(faillog_OBJECTS) $(faillog_DEPENDENCIES) $(EXTRA_faillog_DEP @rm -f faillog$(EXEEXT) $(AM_V_CCLD)$(LINK) $(faillog_OBJECTS) $(faillog_LDADD) $(LIBS) +free_subid_range$(EXEEXT): $(free_subid_range_OBJECTS) $(free_subid_range_DEPENDENCIES) $(EXTRA_free_subid_range_DEPENDENCIES) + @rm -f free_subid_range$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(free_subid_range_OBJECTS) $(free_subid_range_LDADD) $(LIBS) + +get_subid_owners$(EXEEXT): $(get_subid_owners_OBJECTS) $(get_subid_owners_DEPENDENCIES) $(EXTRA_get_subid_owners_DEPENDENCIES) + @rm -f get_subid_owners$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(get_subid_owners_OBJECTS) $(get_subid_owners_LDADD) $(LIBS) + +getsubids$(EXEEXT): $(getsubids_OBJECTS) $(getsubids_DEPENDENCIES) $(EXTRA_getsubids_DEPENDENCIES) + @rm -f getsubids$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(getsubids_OBJECTS) $(getsubids_LDADD) $(LIBS) + gpasswd$(EXEEXT): $(gpasswd_OBJECTS) $(gpasswd_DEPENDENCIES) $(EXTRA_gpasswd_DEPENDENCIES) @rm -f gpasswd$(EXEEXT) $(AM_V_CCLD)$(LINK) $(gpasswd_OBJECTS) $(gpasswd_LDADD) $(LIBS) @@ -936,6 +1096,10 @@ logoutd$(EXEEXT): $(logoutd_OBJECTS) $(logoutd_DEPENDENCIES) $(EXTRA_logoutd_DEP @rm -f logoutd$(EXEEXT) $(AM_V_CCLD)$(LINK) $(logoutd_OBJECTS) $(logoutd_LDADD) $(LIBS) +new_subid_range$(EXEEXT): $(new_subid_range_OBJECTS) $(new_subid_range_DEPENDENCIES) $(EXTRA_new_subid_range_DEPENDENCIES) + @rm -f new_subid_range$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(new_subid_range_OBJECTS) $(new_subid_range_LDADD) $(LIBS) + newgidmap$(EXEEXT): $(newgidmap_OBJECTS) $(newgidmap_DEPENDENCIES) $(EXTRA_newgidmap_DEPENDENCIES) @rm -f newgidmap$(EXEEXT) $(AM_V_CCLD)$(LINK) $(newgidmap_OBJECTS) $(newgidmap_LDADD) $(LIBS) @@ -1003,12 +1167,16 @@ distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chage.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_subid_range-check_subid_range.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chfn.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chgpasswd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chpasswd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chsh.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expiry.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/faillog.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/free_subid_range-free_subid_range.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get_subid_owners-get_subid_owners.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getsubids-getsubids.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpasswd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/groupadd.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/groupdel.Po@am__quote@ # am--include-marker @@ -1023,6 +1191,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/login.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/login_nopam.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logoutd.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/new_subid_range-new_subid_range.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newgidmap.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newgrp.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newuidmap.Po@am__quote@ # am--include-marker @@ -1067,6 +1236,76 @@ am--depfiles: $(am__depfiles_remade) @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< +check_subid_range-check_subid_range.o: check_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT check_subid_range-check_subid_range.o -MD -MP -MF $(DEPDIR)/check_subid_range-check_subid_range.Tpo -c -o check_subid_range-check_subid_range.o `test -f 'check_subid_range.c' || echo '$(srcdir)/'`check_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/check_subid_range-check_subid_range.Tpo $(DEPDIR)/check_subid_range-check_subid_range.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='check_subid_range.c' object='check_subid_range-check_subid_range.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o check_subid_range-check_subid_range.o `test -f 'check_subid_range.c' || echo '$(srcdir)/'`check_subid_range.c + +check_subid_range-check_subid_range.obj: check_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT check_subid_range-check_subid_range.obj -MD -MP -MF $(DEPDIR)/check_subid_range-check_subid_range.Tpo -c -o check_subid_range-check_subid_range.obj `if test -f 'check_subid_range.c'; then $(CYGPATH_W) 'check_subid_range.c'; else $(CYGPATH_W) '$(srcdir)/check_subid_range.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/check_subid_range-check_subid_range.Tpo $(DEPDIR)/check_subid_range-check_subid_range.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='check_subid_range.c' object='check_subid_range-check_subid_range.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(check_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o check_subid_range-check_subid_range.obj `if test -f 'check_subid_range.c'; then $(CYGPATH_W) 'check_subid_range.c'; else $(CYGPATH_W) '$(srcdir)/check_subid_range.c'; fi` + +free_subid_range-free_subid_range.o: free_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(free_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT free_subid_range-free_subid_range.o -MD -MP -MF $(DEPDIR)/free_subid_range-free_subid_range.Tpo -c -o free_subid_range-free_subid_range.o `test -f 'free_subid_range.c' || echo '$(srcdir)/'`free_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/free_subid_range-free_subid_range.Tpo $(DEPDIR)/free_subid_range-free_subid_range.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='free_subid_range.c' object='free_subid_range-free_subid_range.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(free_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o free_subid_range-free_subid_range.o `test -f 'free_subid_range.c' || echo '$(srcdir)/'`free_subid_range.c + +free_subid_range-free_subid_range.obj: free_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(free_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT free_subid_range-free_subid_range.obj -MD -MP -MF $(DEPDIR)/free_subid_range-free_subid_range.Tpo -c -o free_subid_range-free_subid_range.obj `if test -f 'free_subid_range.c'; then $(CYGPATH_W) 'free_subid_range.c'; else $(CYGPATH_W) '$(srcdir)/free_subid_range.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/free_subid_range-free_subid_range.Tpo $(DEPDIR)/free_subid_range-free_subid_range.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='free_subid_range.c' object='free_subid_range-free_subid_range.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(free_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o free_subid_range-free_subid_range.obj `if test -f 'free_subid_range.c'; then $(CYGPATH_W) 'free_subid_range.c'; else $(CYGPATH_W) '$(srcdir)/free_subid_range.c'; fi` + +get_subid_owners-get_subid_owners.o: get_subid_owners.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_subid_owners_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_subid_owners-get_subid_owners.o -MD -MP -MF $(DEPDIR)/get_subid_owners-get_subid_owners.Tpo -c -o get_subid_owners-get_subid_owners.o `test -f 'get_subid_owners.c' || echo '$(srcdir)/'`get_subid_owners.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_subid_owners-get_subid_owners.Tpo $(DEPDIR)/get_subid_owners-get_subid_owners.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_subid_owners.c' object='get_subid_owners-get_subid_owners.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_subid_owners_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_subid_owners-get_subid_owners.o `test -f 'get_subid_owners.c' || echo '$(srcdir)/'`get_subid_owners.c + +get_subid_owners-get_subid_owners.obj: get_subid_owners.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_subid_owners_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT get_subid_owners-get_subid_owners.obj -MD -MP -MF $(DEPDIR)/get_subid_owners-get_subid_owners.Tpo -c -o get_subid_owners-get_subid_owners.obj `if test -f 'get_subid_owners.c'; then $(CYGPATH_W) 'get_subid_owners.c'; else $(CYGPATH_W) '$(srcdir)/get_subid_owners.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/get_subid_owners-get_subid_owners.Tpo $(DEPDIR)/get_subid_owners-get_subid_owners.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='get_subid_owners.c' object='get_subid_owners-get_subid_owners.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(get_subid_owners_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o get_subid_owners-get_subid_owners.obj `if test -f 'get_subid_owners.c'; then $(CYGPATH_W) 'get_subid_owners.c'; else $(CYGPATH_W) '$(srcdir)/get_subid_owners.c'; fi` + +getsubids-getsubids.o: getsubids.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getsubids_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT getsubids-getsubids.o -MD -MP -MF $(DEPDIR)/getsubids-getsubids.Tpo -c -o getsubids-getsubids.o `test -f 'getsubids.c' || echo '$(srcdir)/'`getsubids.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/getsubids-getsubids.Tpo $(DEPDIR)/getsubids-getsubids.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getsubids.c' object='getsubids-getsubids.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getsubids_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o getsubids-getsubids.o `test -f 'getsubids.c' || echo '$(srcdir)/'`getsubids.c + +getsubids-getsubids.obj: getsubids.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getsubids_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT getsubids-getsubids.obj -MD -MP -MF $(DEPDIR)/getsubids-getsubids.Tpo -c -o getsubids-getsubids.obj `if test -f 'getsubids.c'; then $(CYGPATH_W) 'getsubids.c'; else $(CYGPATH_W) '$(srcdir)/getsubids.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/getsubids-getsubids.Tpo $(DEPDIR)/getsubids-getsubids.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='getsubids.c' object='getsubids-getsubids.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(getsubids_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o getsubids-getsubids.obj `if test -f 'getsubids.c'; then $(CYGPATH_W) 'getsubids.c'; else $(CYGPATH_W) '$(srcdir)/getsubids.c'; fi` + +new_subid_range-new_subid_range.o: new_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(new_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT new_subid_range-new_subid_range.o -MD -MP -MF $(DEPDIR)/new_subid_range-new_subid_range.Tpo -c -o new_subid_range-new_subid_range.o `test -f 'new_subid_range.c' || echo '$(srcdir)/'`new_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/new_subid_range-new_subid_range.Tpo $(DEPDIR)/new_subid_range-new_subid_range.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_subid_range.c' object='new_subid_range-new_subid_range.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(new_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o new_subid_range-new_subid_range.o `test -f 'new_subid_range.c' || echo '$(srcdir)/'`new_subid_range.c + +new_subid_range-new_subid_range.obj: new_subid_range.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(new_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT new_subid_range-new_subid_range.obj -MD -MP -MF $(DEPDIR)/new_subid_range-new_subid_range.Tpo -c -o new_subid_range-new_subid_range.obj `if test -f 'new_subid_range.c'; then $(CYGPATH_W) 'new_subid_range.c'; else $(CYGPATH_W) '$(srcdir)/new_subid_range.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/new_subid_range-new_subid_range.Tpo $(DEPDIR)/new_subid_range-new_subid_range.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='new_subid_range.c' object='new_subid_range-new_subid_range.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(new_subid_range_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o new_subid_range-new_subid_range.obj `if test -f 'new_subid_range.c'; then $(CYGPATH_W) 'new_subid_range.c'; else $(CYGPATH_W) '$(srcdir)/new_subid_range.c'; fi` + mostlyclean-libtool: -rm -f *.lo @@ -1200,12 +1439,16 @@ clean-am: clean-binPROGRAMS clean-generic clean-libtool \ distclean: distclean-am -rm -f ./$(DEPDIR)/chage.Po + -rm -f ./$(DEPDIR)/check_subid_range-check_subid_range.Po -rm -f ./$(DEPDIR)/chfn.Po -rm -f ./$(DEPDIR)/chgpasswd.Po -rm -f ./$(DEPDIR)/chpasswd.Po -rm -f ./$(DEPDIR)/chsh.Po -rm -f ./$(DEPDIR)/expiry.Po -rm -f ./$(DEPDIR)/faillog.Po + -rm -f ./$(DEPDIR)/free_subid_range-free_subid_range.Po + -rm -f ./$(DEPDIR)/get_subid_owners-get_subid_owners.Po + -rm -f ./$(DEPDIR)/getsubids-getsubids.Po -rm -f ./$(DEPDIR)/gpasswd.Po -rm -f ./$(DEPDIR)/groupadd.Po -rm -f ./$(DEPDIR)/groupdel.Po @@ -1220,6 +1463,7 @@ distclean: distclean-am -rm -f ./$(DEPDIR)/login.Po -rm -f ./$(DEPDIR)/login_nopam.Po -rm -f ./$(DEPDIR)/logoutd.Po + -rm -f ./$(DEPDIR)/new_subid_range-new_subid_range.Po -rm -f ./$(DEPDIR)/newgidmap.Po -rm -f ./$(DEPDIR)/newgrp.Po -rm -f ./$(DEPDIR)/newuidmap.Po @@ -1282,12 +1526,16 @@ installcheck-am: maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/chage.Po + -rm -f ./$(DEPDIR)/check_subid_range-check_subid_range.Po -rm -f ./$(DEPDIR)/chfn.Po -rm -f ./$(DEPDIR)/chgpasswd.Po -rm -f ./$(DEPDIR)/chpasswd.Po -rm -f ./$(DEPDIR)/chsh.Po -rm -f ./$(DEPDIR)/expiry.Po -rm -f ./$(DEPDIR)/faillog.Po + -rm -f ./$(DEPDIR)/free_subid_range-free_subid_range.Po + -rm -f ./$(DEPDIR)/get_subid_owners-get_subid_owners.Po + -rm -f ./$(DEPDIR)/getsubids-getsubids.Po -rm -f ./$(DEPDIR)/gpasswd.Po -rm -f ./$(DEPDIR)/groupadd.Po -rm -f ./$(DEPDIR)/groupdel.Po @@ -1302,6 +1550,7 @@ maintainer-clean: maintainer-clean-am -rm -f ./$(DEPDIR)/login.Po -rm -f ./$(DEPDIR)/login_nopam.Po -rm -f ./$(DEPDIR)/logoutd.Po + -rm -f ./$(DEPDIR)/new_subid_range-new_subid_range.Po -rm -f ./$(DEPDIR)/newgidmap.Po -rm -f ./$(DEPDIR)/newgrp.Po -rm -f ./$(DEPDIR)/newuidmap.Po diff --git a/src/chage.c b/src/chage.c index bcc58c95..ced3a3e8 100644 --- a/src/chage.c +++ b/src/chage.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -52,6 +29,7 @@ #include "defines.h" #include "pwio.h" #include "shadowio.h" +#include "shadowlog.h" #ifdef WITH_TCB #include "tcbfuncs.h" #endif @@ -89,7 +67,6 @@ static long expdate; /* local function prototypes */ static /*@noreturn@*/void usage (int status); -static void date_to_str (char *buf, size_t maxsize, time_t date); static int new_fields (void); static void print_date (time_t date); static void list_fields (void); @@ -160,19 +137,6 @@ static /*@noreturn@*/void usage (int status) exit (status); } -static void date_to_str (char *buf, size_t maxsize, time_t date) -{ - struct tm *tp; - - tp = gmtime (&date); -#ifdef HAVE_STRFTIME - (void) strftime (buf, maxsize, "%Y-%m-%d", tp); -#else - (void) snprintf (buf, maxsize, "%04d-%02d-%02d", - tp->tm_year + 1900, tp->tm_mon + 1, tp->tm_mday); -#endif /* HAVE_STRFTIME */ -} - /* * new_fields - change the user's password aging information interactively. * @@ -203,10 +167,10 @@ static int new_fields (void) return 0; } - if (-1 == lstchgdate) { + if (-1 == lstchgdate || lstchgdate > LONG_MAX / SCALE) { strcpy (buf, "-1"); } else { - date_to_str (buf, sizeof buf, (time_t) lstchgdate * SCALE); + date_to_str (sizeof(buf), buf, lstchgdate * SCALE); } change_field (buf, sizeof buf, _("Last Password Change (YYYY-MM-DD)")); @@ -234,10 +198,10 @@ static int new_fields (void) return 0; } - if (-1 == expdate) { + if (-1 == expdate || LONG_MAX / SCALE < expdate) { strcpy (buf, "-1"); } else { - date_to_str (buf, sizeof buf, (time_t) expdate * SCALE); + date_to_str (sizeof(buf), buf, expdate * SCALE); } change_field (buf, sizeof buf, @@ -257,12 +221,11 @@ static int new_fields (void) static void print_date (time_t date) { -#ifdef HAVE_STRFTIME struct tm *tp; char buf[80]; char format[80]; - if( iflg ) { + if (iflg) { (void) snprintf (format, 80, "%%Y-%%m-%%d"); } else { @@ -276,20 +239,6 @@ static void print_date (time_t date) (void) strftime (buf, sizeof buf, format, tp); (void) puts (buf); } -#else - struct tm *tp; - char *cp = NULL; - - tp = gmtime (&date); - if (NULL != tp) { - cp = asctime (tp); - } - if (NULL != cp) { - (void) printf ("%6.6s, %4.4s\n", cp + 4, cp + 20); - } else { - (void) printf ("time_t: %lu\n", date); - } -#endif } /* @@ -309,7 +258,7 @@ static void list_fields (void) * was last modified. The date is the number of days since 1/1/1970. */ (void) fputs (_("Last password change\t\t\t\t\t: "), stdout); - if (lstchgdate < 0) { + if (lstchgdate < 0 || lstchgdate > LONG_MAX / SCALE) { (void) puts (_("never")); } else if (lstchgdate == 0) { (void) puts (_("password must be changed")); @@ -327,7 +276,8 @@ static void list_fields (void) (void) puts (_("password must be changed")); } else if ( (lstchgdate < 0) || (maxdays >= (10000 * (DAY / SCALE))) - || (maxdays < 0)) { + || (maxdays < 0) + || ((LONG_MAX - changed) / SCALE < maxdays)) { (void) puts (_("never")); } else { expires = changed + maxdays * SCALE; @@ -346,7 +296,9 @@ static void list_fields (void) } else if ( (lstchgdate < 0) || (inactdays < 0) || (maxdays >= (10000 * (DAY / SCALE))) - || (maxdays < 0)) { + || (maxdays < 0) + || (maxdays > LONG_MAX - inactdays) + || ((LONG_MAX - changed) / SCALE < maxdays + inactdays)) { (void) puts (_("never")); } else { expires = changed + (maxdays + inactdays) * SCALE; @@ -358,7 +310,7 @@ static void list_fields (void) * password expiring or not. */ (void) fputs (_("Account expires\t\t\t\t\t\t: "), stdout); - if (expdate < 0) { + if (expdate < 0 || LONG_MAX / SCALE < expdate) { (void) puts (_("never")); } else { expires = expdate * SCALE; @@ -811,6 +763,8 @@ int main (int argc, char **argv) * Get the program name so that error messages can use it. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); sanitize_env (); (void) setlocale (LC_ALL, ""); diff --git a/src/check_subid_range.c b/src/check_subid_range.c new file mode 100644 index 00000000..38703b60 --- /dev/null +++ b/src/check_subid_range.c @@ -0,0 +1,51 @@ +// This program is for testing purposes only. +// usage is "[program] owner [u|g] start count +// Exits 0 if owner has subid range starting start, of size count +// Exits 1 otherwise. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "defines.h" +#include "prototypes.h" +#include "subordinateio.h" +#include "idmapping.h" +#include "shadowlog.h" + +const char *Prog; + +int main(int argc, char **argv) +{ + char *owner; + unsigned long start, count; + bool check_uids; + Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); + + if (argc != 5) + exit(1); + + owner = argv[1]; + check_uids = argv[2][0] == 'u'; + start = strtoul(argv[3], NULL, 10); + if (start == ULONG_MAX && errno == ERANGE) + exit(1); + count = strtoul(argv[4], NULL, 10); + if (count == ULONG_MAX && errno == ERANGE) + exit(1); + if (check_uids) { + if (have_sub_uids(owner, start, count)) + exit(0); + exit(1); + } + if (have_sub_gids(owner, start, count)) + exit(0); + exit(1); +} diff --git a/src/chfn.c b/src/chfn.c index b2658fcf..1c2f1cce 100644 --- a/src/chfn.c +++ b/src/chfn.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -52,6 +29,7 @@ #include "pwio.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables. @@ -61,7 +39,7 @@ static char fullnm[BUFSIZ]; static char roomno[BUFSIZ]; static char workph[BUFSIZ]; static char homeph[BUFSIZ]; -static char slop[BUFSIZ]; +static char slop[BUFSIZ + 1 + 80]; static bool amroot; /* Flags */ static bool fflg = false; /* -f - set full name */ @@ -276,7 +254,7 @@ static void process_flags (int argc, char **argv) {NULL, 0, NULL, '\0'} }; - /* + /* * The remaining arguments will be processed one by one and executed * by this command. The name is the last argument if it does not * begin with a "-", otherwise the name is determined from the @@ -311,6 +289,11 @@ static void process_flags (int argc, char **argv) exit (E_NOPERM); } oflg = true; + if (strlen (optarg) > (unsigned int) 80) { + fprintf (stderr, + _("%s: fields too long\n"), Prog); + exit (E_NOPERM); + } STRFCPY (slop, optarg); break; case 'r': @@ -386,7 +369,7 @@ static void check_perms (const struct passwd *pw) /* * Non-privileged users are optionally authenticated (must enter the * password of the user whose information is being changed) before - * any changes can be made. Idea from util-linux chfn/chsh. + * any changes can be made. Idea from util-linux chfn/chsh. * --marekm */ if (!amroot && getdef_bool ("CHFN_AUTH")) { @@ -634,6 +617,8 @@ int main (int argc, char **argv) * prefix to most error messages. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); sanitize_env (); (void) setlocale (LC_ALL, ""); diff --git a/src/chgpasswd.c b/src/chgpasswd.c index 4013abb3..d17acb67 100644 --- a/src/chgpasswd.c +++ b/src/chgpasswd.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 2006 , Tomasz Kłoczko - * Copyright (c) 2006 , Jonas Meurer - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 2006 , Tomasz Kłoczko + * SPDX-FileCopyrightText: 2006 , Jonas Meurer + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -54,6 +31,7 @@ #endif /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables @@ -61,9 +39,9 @@ const char *Prog; static bool eflg = false; static bool md5flg = false; -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) static bool sflg = false; -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ static /*@null@*//*@observer@*/const char *crypt_method = NULL; #define cflg (NULL != crypt_method) @@ -73,6 +51,9 @@ static long sha_rounds = 5000; #ifdef USE_BCRYPT static long bcrypt_rounds = 13; #endif +#ifdef USE_YESCRYPT +static long yescrypt_cost = 5; +#endif #ifdef SHADOWGRP static bool is_shadow_grp; @@ -128,14 +109,15 @@ static /*@noreturn@*/void usage (int status) Prog); (void) fprintf (usageout, _(" -c, --crypt-method METHOD the crypt method (one of %s)\n"), -#if !defined(USE_SHA_CRYPT) && !defined(USE_BCRYPT) "NONE DES MD5" -#elif defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) - "NONE DES MD5 SHA256 SHA512 BCRYPT" -#elif defined(USE_SHA_CRYPT) - "NONE DES MD5 SHA256 SHA512" -#else - "NONE DES MD5 BCRYPT" +#if defined(USE_SHA_CRYPT) + " SHA256 SHA512" +#endif +#if defined(USE_BCRYPT) + " BCRYPT" +#endif +#if defined(USE_YESCRYPT) + " YESCRYPT" #endif ); (void) fputs (_(" -e, --encrypted supplied passwords are encrypted\n"), usageout); @@ -144,11 +126,11 @@ static /*@noreturn@*/void usage (int status) " the MD5 algorithm\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) - (void) fputs (_(" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" - " crypt algorithms\n"), +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) + (void) fputs (_(" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" + " or YESCRYPT crypt algorithms\n"), usageout); -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ (void) fputs ("\n", usageout); exit (status); @@ -162,19 +144,22 @@ static /*@noreturn@*/void usage (int status) static void process_flags (int argc, char **argv) { int c; +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) + int bad_s; +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ static struct option long_options[] = { {"crypt-method", required_argument, NULL, 'c'}, {"encrypted", no_argument, NULL, 'e'}, {"help", no_argument, NULL, 'h'}, {"md5", no_argument, NULL, 'm'}, {"root", required_argument, NULL, 'R'}, -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) {"sha-rounds", required_argument, NULL, 's'}, -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ {NULL, 0, NULL, '\0'} }; while ((c = getopt_long (argc, argv, -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) "c:ehmR:s:", #else "c:ehmR:", @@ -195,40 +180,36 @@ static void process_flags (int argc, char **argv) break; case 'R': /* no-op, handled in process_root_flag () */ break; -#if defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) case 's': sflg = true; + bad_s = 0; +#if defined(USE_SHA_CRYPT) if ( ( ((0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) - && (0 == getlong(optarg, &sha_rounds))) - || ( (0 == strcmp (crypt_method, "BCRYPT")) + && (0 == getlong(optarg, &sha_rounds)))) { + bad_s = 1; + } +#endif /* USE_SHA_CRYPT */ +#if defined(USE_BCRYPT) + if (( (0 == strcmp (crypt_method, "BCRYPT")) && (0 == getlong(optarg, &bcrypt_rounds)))) { + bad_s = 1; + } +#endif /* USE_BCRYPT */ +#if defined(USE_YESCRYPT) + if (( (0 == strcmp (crypt_method, "YESCRYPT")) + && (0 == getlong(optarg, &yescrypt_cost)))) { + bad_s = 1; + } +#endif /* USE_YESCRYPT */ + if (bad_s != 0) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); usage (E_USAGE); } break; -#elif defined(USE_SHA_CRYPT) - case 's': - sflg = true; - if (0 == getlong(optarg, &sha_rounds)) { - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); - usage (E_USAGE); - } - break; -#elif defined(USE_BCRYPT) - case 's': - sflg = true; - if (0 == getlong(optarg, &bcrypt_rounds)) { - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); - usage (E_USAGE); - } - break; -#endif +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ default: usage (E_USAGE); @@ -247,7 +228,7 @@ static void process_flags (int argc, char **argv) */ static void check_flags (void) { -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) if (sflg && !cflg) { fprintf (stderr, _("%s: %s flag is only allowed with the %s flag\n"), @@ -271,10 +252,13 @@ static void check_flags (void) #ifdef USE_SHA_CRYPT && (0 != strcmp (crypt_method, "SHA256")) && (0 != strcmp (crypt_method, "SHA512")) -#endif +#endif /* USE_SHA_CRYPT */ #ifdef USE_BCRYPT && (0 != strcmp (crypt_method, "BCRYPT")) -#endif +#endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT + && (0 != strcmp (crypt_method, "YESCRYPT")) +#endif /* USE_YESCRYPT */ ) { fprintf (stderr, _("%s: unsupported crypt method: %s\n"), @@ -431,6 +415,8 @@ int main (int argc, char **argv) int line = 0; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); @@ -497,23 +483,24 @@ int main (int argc, char **argv) if (md5flg) { crypt_method = "MD5"; } -#if defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) if (sflg) { +#if defined(USE_SHA_CRYPT) if ( (0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) { arg = &sha_rounds; } - else if (0 == strcmp (crypt_method, "BCRYPT")) { +#endif /* USE_SHA_CRYPT */ +#if defined(USE_BCRYPT) + if (0 == strcmp (crypt_method, "BCRYPT")) { arg = &bcrypt_rounds; } - } -#elif defined(USE_SHA_CRYPT) - if (sflg) { - arg = &sha_rounds; - } -#elif defined(USE_BCRYPT) - if (sflg) { - arg = &bcrypt_rounds; +#endif /* USE_BCRYPT */ +#if defined(USE_YESCRYPT) + if (0 == strcmp (crypt_method, "YESCRYPT")) { + arg = &yescrypt_cost; + } +#endif /* USE_YESCRYPT */ } #endif salt = crypt_make_salt (crypt_method, arg); @@ -584,7 +571,7 @@ int main (int argc, char **argv) newgr.gr_passwd = cp; } - /* + /* * The updated group file entry is then put back and will * be written to the group file later, after all the * other entries have been updated as well. diff --git a/src/chpasswd.c b/src/chpasswd.c index be61e038..cd2d1cf0 100644 --- a/src/chpasswd.c +++ b/src/chpasswd.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -51,6 +28,7 @@ #include "shadowio.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables @@ -58,7 +36,7 @@ const char *Prog; static bool eflg = false; static bool md5flg = false; -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) static bool sflg = false; #endif @@ -70,6 +48,9 @@ static long sha_rounds = 5000; #ifdef USE_BCRYPT static long bcrypt_rounds = 13; #endif +#ifdef USE_YESCRYPT +static long yescrypt_cost = 5; +#endif static bool is_shadow_pwd; static bool pw_locked = false; @@ -121,14 +102,15 @@ static /*@noreturn@*/void usage (int status) Prog); (void) fprintf (usageout, _(" -c, --crypt-method METHOD the crypt method (one of %s)\n"), -#if !defined(USE_SHA_CRYPT) && !defined(USE_BCRYPT) "NONE DES MD5" -#elif defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) - "NONE DES MD5 SHA256 SHA512 BCRYPT" -#elif defined(USE_SHA_CRYPT) - "NONE DES MD5 SHA256 SHA512" -#else - "NONE DES MD5 BCRYPT" +#if defined(USE_SHA_CRYPT) + " SHA256 SHA512" +#endif +#if defined(USE_BCRYPT) + " BCRYPT" +#endif +#if defined(USE_YESCRYPT) + " YESCRYPT" #endif ); (void) fputs (_(" -e, --encrypted supplied passwords are encrypted\n"), usageout); @@ -137,11 +119,11 @@ static /*@noreturn@*/void usage (int status) " the MD5 algorithm\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) - (void) fputs (_(" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" - " crypt algorithms\n"), +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) + (void) fputs (_(" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" + " or YESCRYPT crypt algorithms\n"), usageout); -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ (void) fputs ("\n", usageout); exit (status); @@ -155,20 +137,23 @@ static /*@noreturn@*/void usage (int status) static void process_flags (int argc, char **argv) { int c; +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) + int bad_s; +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ static struct option long_options[] = { {"crypt-method", required_argument, NULL, 'c'}, {"encrypted", no_argument, NULL, 'e'}, {"help", no_argument, NULL, 'h'}, {"md5", no_argument, NULL, 'm'}, {"root", required_argument, NULL, 'R'}, -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) {"sha-rounds", required_argument, NULL, 's'}, -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ {NULL, 0, NULL, '\0'} }; while ((c = getopt_long (argc, argv, -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) "c:ehmR:s:", #else "c:ehmR:", @@ -189,40 +174,36 @@ static void process_flags (int argc, char **argv) break; case 'R': /* no-op, handled in process_root_flag () */ break; -#if defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) case 's': sflg = true; + bad_s = 0; +#if defined(USE_SHA_CRYPT) if ( ( ((0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) - && (0 == getlong(optarg, &sha_rounds))) - || ( (0 == strcmp (crypt_method, "BCRYPT")) + && (0 == getlong(optarg, &sha_rounds)))) { + bad_s = 1; + } +#endif /* USE_SHA_CRYPT */ +#if defined(USE_BCRYPT) + if (( (0 == strcmp (crypt_method, "BCRYPT")) && (0 == getlong(optarg, &bcrypt_rounds)))) { + bad_s = 1; + } +#endif /* USE_BCRYPT */ +#if defined(USE_YESCRYPT) + if (( (0 == strcmp (crypt_method, "YESCRYPT")) + && (0 == getlong(optarg, &yescrypt_cost)))) { + bad_s = 1; + } +#endif /* USE_YESCRYPT */ + if (bad_s != 0) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); usage (E_USAGE); } break; -#elif defined(USE_SHA_CRYPT) - case 's': - sflg = true; - if (0 == getlong(optarg, &sha_rounds)) { - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); - usage (E_USAGE); - } - break; -#elif defined(USE_BCRYPT) - case 's': - sflg = true; - if (0 == getlong(optarg, &bcrypt_rounds)) { - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); - usage (E_USAGE); - } - break; -#endif +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ default: usage (E_USAGE); @@ -241,7 +222,7 @@ static void process_flags (int argc, char **argv) */ static void check_flags (void) { -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) if (sflg && !cflg) { fprintf (stderr, _("%s: %s flag is only allowed with the %s flag\n"), @@ -269,6 +250,9 @@ static void check_flags (void) #ifdef USE_BCRYPT && (0 != strcmp (crypt_method, "BCRYPT")) #endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT + && (0 != strcmp (crypt_method, "YESCRYPT")) +#endif /* USE_YESCRYPT */ ) { fprintf (stderr, _("%s: unsupported crypt method: %s\n"), @@ -423,6 +407,8 @@ int main (int argc, char **argv) int line = 0; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); @@ -507,7 +493,7 @@ int main (int argc, char **argv) newpwd = cp; #ifdef USE_PAM - if (use_pam){ + if (use_pam) { if (do_pam_passwd_non_interactive ("chpasswd", name, newpwd) != 0) { fprintf (stderr, _("%s: (line %d, user %s) password not changed\n"), @@ -530,23 +516,24 @@ int main (int argc, char **argv) if (md5flg) { crypt_method = "MD5"; } -#if defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) if (sflg) { +#if defined(USE_SHA_CRYPT) if ( (0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) { arg = &sha_rounds; } - else if (0 == strcmp (crypt_method, "BCRYPT")) { +#endif /* USE_SHA_CRYPT */ +#if defined(USE_BCRYPT) + if (0 == strcmp (crypt_method, "BCRYPT")) { arg = &bcrypt_rounds; } - } -#elif defined(USE_SHA_CRYPT) - if (sflg) { - arg = &sha_rounds; - } -#elif defined(USE_BCRYPT) - if (sflg) { - arg = &bcrypt_rounds; +#endif /* USE_BCRYPT */ +#if defined(USE_YESCRYPT) + if (0 == strcmp (crypt_method, "YESCRYPT")) { + arg = &yescrypt_cost; + } +#endif /* USE_YESCRYPT */ } #endif salt = crypt_make_salt (crypt_method, arg); @@ -624,7 +611,7 @@ int main (int argc, char **argv) newpw.pw_passwd = cp; } - /* + /* * The updated password file entry is then put back and will * be written to the password file later, after all the * other entries have been updated as well. diff --git a/src/chsh.c b/src/chsh.c index 06edf407..21d1c3ef 100644 --- a/src/chsh.c +++ b/src/chsh.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -51,6 +28,7 @@ #endif /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" #ifndef SHELLS_FILE #define SHELLS_FILE "/etc/shells" @@ -441,6 +419,8 @@ int main (int argc, char **argv) * most error messages. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/expiry.c b/src/expiry.c index 41add942..112c08c2 100644 --- a/src/expiry.c +++ b/src/expiry.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1994 , Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1994 , Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -43,6 +20,7 @@ #include "prototypes.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* Global variables */ const char *Prog; @@ -132,7 +110,7 @@ static void process_flags (int argc, char **argv) } } -/* +/* * expiry - check and enforce password expiration policy * * expiry checks (-c) the current password expiration and forces (-f) @@ -144,10 +122,12 @@ int main (int argc, char **argv) struct spwd *spwd; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); sanitize_env (); - /* + /* * Start by disabling all of the keyboard signals. */ (void) signal (SIGHUP, catch_signals); diff --git a/src/faillog.c b/src/faillog.c index 1309dad4..d33fe9b6 100644 --- a/src/faillog.c +++ b/src/faillog.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -46,6 +23,7 @@ #include "prototypes.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* local function prototypes */ static /*@noreturn@*/void usage (int status); @@ -110,11 +88,8 @@ static void print_one (/*@null@*/const struct passwd *pw, bool force) off_t offset; struct faillog fl; time_t now; - -#ifdef HAVE_STRFTIME char *cp; char ptime[80]; -#endif if (NULL == pw) { return; @@ -163,13 +138,15 @@ static void print_one (/*@null@*/const struct passwd *pw, bool force) } tm = localtime (&fl.fail_time); -#ifdef HAVE_STRFTIME + if (!tm) { + fprintf (stderr, "Cannot read time from faillog.\n"); + return; + } strftime (ptime, sizeof (ptime), "%D %H:%M:%S %z", tm); cp = ptime; -#endif + printf ("%-9s %5d %5d ", pw->pw_name, fl.fail_cnt, fl.fail_max); - /* FIXME: cp is not defined ifndef HAVE_STRFTIME */ printf ("%s %s", cp, fl.fail_line); if (0 != fl.fail_locktime) { if ( ((fl.fail_time + fl.fail_locktime) > now) @@ -569,6 +546,8 @@ int main (int argc, char **argv) * most error messages. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/free_subid_range.c b/src/free_subid_range.c new file mode 100644 index 00000000..a2d2e8e0 --- /dev/null +++ b/src/free_subid_range.c @@ -0,0 +1,55 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#include +#include +#include "subid.h" +#include "stdlib.h" +#include "prototypes.h" +#include "shadowlog.h" + +/* Test program for the subid freeing routine */ + +const char *Prog; + +void usage(void) +{ + fprintf(stderr, "Usage: %s [-g] user start count\n", Prog); + fprintf(stderr, " Release a user's subuid (or with -g, subgid) range\n"); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + int c; + bool ok; + struct subordinate_range range; + bool group = false; // get subuids by default + + Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); + while ((c = getopt(argc, argv, "g")) != EOF) { + switch(c) { + case 'g': group = true; break; + default: usage(); + } + } + argv = &argv[optind]; + argc = argc - optind; + if (argc < 3) + usage(); + range.owner = argv[0]; + range.start = atoi(argv[1]); + range.count = atoi(argv[2]); + if (group) + ok = subid_ungrant_gid_range(&range); + else + ok = subid_ungrant_uid_range(&range); + + if (!ok) { + fprintf(stderr, "Failed freeing id range\n"); + exit(EXIT_FAILURE); + } + + return 0; +} diff --git a/src/get_subid_owners.c b/src/get_subid_owners.c new file mode 100644 index 00000000..b0f46397 --- /dev/null +++ b/src/get_subid_owners.c @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#include +#include "subid.h" +#include "stdlib.h" +#include "prototypes.h" +#include "shadowlog.h" + +const char *Prog; + +void usage(void) +{ + fprintf(stderr, "Usage: [-g] %s subuid\n", Prog); + fprintf(stderr, " list uids who own the given subuid\n"); + fprintf(stderr, " pass -g to query a subgid\n"); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + int i, n; + uid_t *uids; + + Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); + if (argc < 2) { + usage(); + } + if (argc == 3 && strcmp(argv[1], "-g") == 0) + n = subid_get_gid_owners(atoi(argv[2]), &uids); + else if (argc == 2 && strcmp(argv[1], "-h") == 0) + usage(); + else + n = subid_get_uid_owners(atoi(argv[1]), &uids); + if (n < 0) { + fprintf(stderr, "No owners found\n"); + exit(1); + } + for (i = 0; i < n; i++) { + printf("%d\n", uids[i]); + } + free(uids); + return 0; +} diff --git a/src/getsubids.c b/src/getsubids.c new file mode 100644 index 00000000..4384cfae --- /dev/null +++ b/src/getsubids.c @@ -0,0 +1,49 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#include +#include +#include +#include "subid.h" +#include "prototypes.h" +#include "shadowlog.h" + +const char *Prog; + +void usage(void) +{ + fprintf(stderr, "Usage: %s [-g] user\n", Prog); + fprintf(stderr, " list subuid ranges for user\n"); + fprintf(stderr, " pass -g to list subgid ranges\n"); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + int i, count=0; + struct subid_range *ranges; + const char *owner; + + Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); + if (argc < 2) + usage(); + owner = argv[1]; + if (argc == 3 && strcmp(argv[1], "-g") == 0) { + owner = argv[2]; + count = subid_get_gid_ranges(owner, &ranges); + } else if (argc == 2 && strcmp(argv[1], "-h") == 0) { + usage(); + } else { + count = subid_get_uid_ranges(owner, &ranges); + } + if (!ranges) { + fprintf(stderr, "Error fetching ranges\n"); + exit(1); + } + for (i = 0; i < count; i++) { + printf("%d: %s %lu %lu\n", i, owner, + ranges[i].start, ranges[i].count); + } + return 0; +} diff --git a/src/gpasswd.c b/src/gpasswd.c index 4d75af96..c7c9477d 100644 --- a/src/gpasswd.c +++ b/src/gpasswd.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -53,6 +30,7 @@ /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables */ @@ -988,6 +966,8 @@ int main (int argc, char **argv) */ bywho = getuid (); Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); OPENLOG ("gpasswd"); setbuf (stdout, NULL); @@ -1204,6 +1184,19 @@ int main (int argc, char **argv) nscd_flush_cache ("group"); sssd_flush_cache (SSSD_DB_GROUP); +#ifdef SHADOWGRP + if (is_shadowgrp) { + if (sgent.sg_adm) { + xfree(sgent.sg_adm); + } + if (sgent.sg_mem) { + xfree(sgent.sg_mem); + } + } +#endif + if (grent.gr_mem) { + xfree(grent.gr_mem); + } exit (E_SUCCESS); } diff --git a/src/groupadd.c b/src/groupadd.c index 2dd8eec9..66ccb53e 100644 --- a/src/groupadd.c +++ b/src/groupadd.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -56,6 +33,7 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadowlog.h" /* * exit status values @@ -79,6 +57,7 @@ static /*@null@*/char *group_passwd; static /*@null@*/char *empty_list = NULL; static const char *prefix = ""; +static char *user_list; static bool oflg = false; /* permit non-unique group ID to be specified with -g */ static bool gflg = false; /* ID value for the new group */ @@ -126,7 +105,8 @@ static /*@noreturn@*/void usage (int status) (void) fputs (_(" -p, --password PASSWORD use this encrypted password for the new group\n"), usageout); (void) fputs (_(" -r, --system create a system account\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); - (void) fputs (_(" -P, --prefix PREFIX_DIR directory prefix\n"), usageout); + (void) fputs (_(" -P, --prefix PREFIX_DI directory prefix\n"), usageout); + (void) fputs (_(" -U, --users USERS list of user members of this group\n"), usageout); (void) fputs ("\n", usageout); exit (status); } @@ -207,6 +187,19 @@ static void grp_update (void) } #endif /* SHADOWGRP */ + if (user_list) { + char *token; + token = strtok(user_list, ","); + while (token) { + if (prefix_getpwnam (token) == NULL) { + fprintf (stderr, _("Invalid member username %s\n"), token); + exit (E_GRP_UPDATE); + } + grp.gr_mem = add_list(grp.gr_mem, token); + token = strtok(NULL, ","); + } + } + /* * Write out the new group file entry. */ @@ -391,10 +384,11 @@ static void process_flags (int argc, char **argv) {"system", no_argument, NULL, 'r'}, {"root", required_argument, NULL, 'R'}, {"prefix", required_argument, NULL, 'P'}, + {"users", required_argument, NULL, 'U'}, {NULL, 0, NULL, '\0'} }; - while ((c = getopt_long (argc, argv, "fg:hK:op:rR:P:", + while ((c = getopt_long (argc, argv, "fg:hK:op:rR:P:U:", long_options, NULL)) != -1) { switch (c) { case 'f': @@ -453,6 +447,9 @@ static void process_flags (int argc, char **argv) break; case 'P': /* no-op, handled in process_prefix_flag () */ break; + case 'U': + user_list = optarg; + break; default: usage (E_USAGE); } @@ -579,6 +576,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/groupdel.c b/src/groupdel.c index f941a84a..c84faa79 100644 --- a/src/groupdel.c +++ b/src/groupdel.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -54,6 +31,7 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadowlog.h" /* * Global variables */ @@ -323,6 +301,7 @@ static void process_flags (int argc, char **argv) int c; static struct option long_options[] = { {"help", no_argument, NULL, 'h'}, + {"force", no_argument, NULL, 'f'}, {"root", required_argument, NULL, 'R'}, {"prefix", required_argument, NULL, 'P'}, {NULL, 0, NULL, '\0'} @@ -356,7 +335,7 @@ static void process_flags (int argc, char **argv) * main - groupdel command * * The syntax of the groupdel command is - * + * * groupdel group * * The named group will be deleted. @@ -375,6 +354,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/groupmems.c b/src/groupmems.c index fc91c8b1..a0e3266b 100644 --- a/src/groupmems.c +++ b/src/groupmems.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 2000 , International Business Machines - * George Kraft IV, gk4@us.ibm.com, 03/23/2000 - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 2000 , International Business Machines + * SPDX-FileCopyrightText: 2000 , George Kraft IV, gk4@us.ibm.com, 03/23/2000 + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -47,6 +24,7 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadowlog.h" /* Exit Status Values */ /*@-exitarg@*/ @@ -84,7 +62,7 @@ static bool sgr_locked = false; static char *whoami (void); static void add_user (const char *user, const struct group *grp); -static void remove_user (const char *user, +static void remove_user (const char *user, const struct group *grp); static void purge_members (const struct group *grp); static void display_members (const char *const *members); @@ -196,7 +174,7 @@ static void add_user (const char *user, /* * remove_user - Remove an user from a given group */ -static void remove_user (const char *user, +static void remove_user (const char *user, const struct group *grp) { struct group *newgrp; @@ -586,7 +564,7 @@ static void close_files (void) #endif } -int main (int argc, char **argv) +int main (int argc, char **argv) { char *name; const struct group *grp; @@ -595,6 +573,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/groupmod.c b/src/groupmod.c index 1dca5fc9..006eca1c 100644 --- a/src/groupmod.c +++ b/src/groupmod.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -56,6 +33,7 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif +#include "shadowlog.h" /* * exit status values */ @@ -87,6 +65,7 @@ static gid_t group_id; static gid_t group_newid; static const char* prefix = ""; +static char *user_list; static struct cleanup_info_mod info_passwd; static struct cleanup_info_mod info_group; @@ -95,6 +74,7 @@ static struct cleanup_info_mod info_gshadow; #endif static bool + aflg = false, /* append -U members rather than replace them */ oflg = false, /* permit non-unique group ID to be specified with -g */ gflg = false, /* new ID value for the group */ nflg = false, /* a new name has been specified for the group */ @@ -117,6 +97,7 @@ static void open_files (void); static void close_files (void); static void update_primary_groups (gid_t ogid, gid_t ngid); + /* * usage - display usage message and exit */ @@ -129,6 +110,8 @@ static void usage (int status) "\n" "Options:\n"), Prog); + (void) fputs (_(" -a, --append append the users mentioned by -U option to the group \n" + " without removing existing user members\n"), usageout); (void) fputs (_(" -g, --gid GID change the group ID to GID\n"), usageout); (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); (void) fputs (_(" -n, --new-name NEW_GROUP change the name to NEW_GROUP\n"), usageout); @@ -137,6 +120,7 @@ static void usage (int status) " PASSWORD\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); (void) fputs (_(" -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files\n"), usageout); + (void) fputs (_(" -U, --users USERS list of user members of this group\n"), usageout); (void) fputs ("\n", usageout); exit (status); } @@ -255,6 +239,32 @@ static void grp_update (void) update_primary_groups (ogrp->gr_gid, group_newid); } + if (user_list) { + char *token; + + if (!aflg) { + // requested to replace the existing groups + if (NULL != grp.gr_mem[0]) + gr_free_members(&grp); + grp.gr_mem = (char **)xmalloc(sizeof(char *)); + grp.gr_mem[0] = (char *)0; + } else { + // append to existing groups + if (NULL != grp.gr_mem[0]) + grp.gr_mem = dup_list (grp.gr_mem); + } + + token = strtok(user_list, ","); + while (token) { + if (prefix_getpwnam (token) == NULL) { + fprintf (stderr, _("Invalid member username %s\n"), token); + exit (E_GRP_UPDATE); + } + grp.gr_mem = add_list(grp.gr_mem, token); + token = strtok(NULL, ","); + } + } + /* * Write out the new group file entry. */ @@ -379,6 +389,7 @@ static void process_flags (int argc, char **argv) { int c; static struct option long_options[] = { + {"append", no_argument, NULL, 'a'}, {"gid", required_argument, NULL, 'g'}, {"help", no_argument, NULL, 'h'}, {"new-name", required_argument, NULL, 'n'}, @@ -386,11 +397,15 @@ static void process_flags (int argc, char **argv) {"password", required_argument, NULL, 'p'}, {"root", required_argument, NULL, 'R'}, {"prefix", required_argument, NULL, 'P'}, + {"users", required_argument, NULL, 'U'}, {NULL, 0, NULL, '\0'} }; - while ((c = getopt_long (argc, argv, "g:hn:op:R:P:", + while ((c = getopt_long (argc, argv, "ag:hn:op:R:P:U:", long_options, NULL)) != -1) { switch (c) { + case 'a': + aflg = true; + break; case 'g': gflg = true; if ( (get_gid (optarg, &group_newid) == 0) @@ -419,6 +434,9 @@ static void process_flags (int argc, char **argv) break; case 'P': /* no-op, handled in process_prefix_flag () */ break; + case 'U': + user_list = optarg; + break; default: usage (E_USAGE); } @@ -752,6 +770,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/groups.c b/src/groups.c index fcd669b0..12bd224b 100644 --- a/src/groups.c +++ b/src/groups.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -39,6 +16,7 @@ #include #include "defines.h" #include "prototypes.h" +#include "shadowlog.h" /* * Global variables */ @@ -106,18 +84,12 @@ static void print_groups (const char *member) */ int main (int argc, char **argv) { -#ifdef HAVE_GETGROUPS long sys_ngroups; GETGROUPS_T *groups; -#else - char *logname; - char *getlogin (); -#endif -#ifdef HAVE_GETGROUPS sys_ngroups = sysconf (_SC_NGROUPS_MAX); groups = (GETGROUPS_T *) malloc (sizeof (GETGROUPS_T) * sys_ngroups); -#endif + (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); @@ -126,6 +98,8 @@ int main (int argc, char **argv) * Get the program name so that error messages can use it. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); if (argc == 1) { @@ -134,7 +108,6 @@ int main (int argc, char **argv) * current user. */ -#ifdef HAVE_GETGROUPS int i; int pri_grp; /* TODO: should be GETGROUPS_T */ /* @@ -193,18 +166,6 @@ int main (int argc, char **argv) } } (void) putchar ('\n'); -#else - /* - * This system does not have the getgroups() system call, so - * I must check the groups file directly. - */ - logname = getlogin (); - if (NULL != logname) { - print_groups (logname); - } else { - exit (EXIT_FAILURE); - } -#endif } else { /* diff --git a/src/grpck.c b/src/grpck.c index e6216efa..7accac94 100644 --- a/src/grpck.c +++ b/src/grpck.c @@ -1,40 +1,15 @@ /* - * Copyright (c) 1992 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1992 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include -#ident "$Id$" - #include #include #include @@ -47,6 +22,7 @@ #include "nscd.h" #include "sssd.h" #include "prototypes.h" +#include "shadowlog.h" #ifdef SHADOWGRP #include "sgroupio.h" @@ -82,6 +58,7 @@ static bool gr_locked = false; /* Options */ static bool read_only = false; static bool sort_mode = false; +static bool silence_warnings = false; /* local function prototypes */ static void fail_exit (int status); @@ -158,6 +135,7 @@ static /*@noreturn@*/void usage (int status) " but do not change files\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); (void) fputs (_(" -s, --sort sort entries by UID\n"), usageout); + (void) fputs (_(" -S, --silence-warnings silence controversial/paranoid warnings\n"), usageout); (void) fputs ("\n", usageout); exit (status); } @@ -193,18 +171,19 @@ static void process_flags (int argc, char **argv) { int c; static struct option long_options[] = { - {"help", no_argument, NULL, 'h'}, - {"quiet", no_argument, NULL, 'q'}, - {"read-only", no_argument, NULL, 'r'}, - {"root", required_argument, NULL, 'R'}, - {"sort", no_argument, NULL, 's'}, + {"help", no_argument, NULL, 'h'}, + {"quiet", no_argument, NULL, 'q'}, + {"read-only", no_argument, NULL, 'r'}, + {"root", required_argument, NULL, 'R'}, + {"silence-warnings", no_argument, NULL, 'S'}, + {"sort", no_argument, NULL, 's'}, {NULL, 0, NULL, '\0'} }; /* * Parse the command line arguments */ - while ((c = getopt_long (argc, argv, "hqrR:s", + while ((c = getopt_long (argc, argv, "hqrR:sS", long_options, NULL)) != -1) { switch (c) { case 'h': @@ -221,6 +200,9 @@ static void process_flags (int argc, char **argv) case 's': sort_mode = true; break; + case 'S': + silence_warnings = true; + break; default: usage (E_USAGE); } @@ -456,7 +438,7 @@ static void compare_members_lists (const char *groupname, break; } } - if (*other_pmem == NULL) { + if (!silence_warnings && *other_pmem == NULL) { printf ("'%s' is a member of the '%s' group in %s but not in %s\n", *pmem, groupname, file, other_file); @@ -713,7 +695,7 @@ static void check_sgr_file (int *errors, bool *changed) } /* - * All shadow group file deletions wind up here. + * All shadow group file deletions wind up here. * This code removes the current entry from the * linked list. When done, it skips back to the top * of the loop to try out the next list element. @@ -836,6 +818,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/grpconv.c b/src/grpconv.c index 5e5eaaca..57d8d58e 100644 --- a/src/grpconv.c +++ b/src/grpconv.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2006, Tomasz Kłoczko - * Copyright (c) 2011 , Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2011 , Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -55,6 +32,7 @@ #ifdef SHADOWGRP #include "groupio.h" #include "sgroupio.h" +#include "shadowlog.h" /* * Global variables */ @@ -146,6 +124,8 @@ int main (int argc, char **argv) struct sgrp sgent; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/grpunconv.c b/src/grpunconv.c index e4105c26..fc6cecf9 100644 --- a/src/grpunconv.c +++ b/src/grpunconv.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1996 , Michael Meskes - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2006, Tomasz Kłoczko - * Copyright (c) 2008 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1996 , Michael Meskes + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -55,6 +32,7 @@ #ifdef SHADOWGRP #include "groupio.h" #include "sgroupio.h" +#include "shadowlog.h" /* * Global variables */ @@ -145,6 +123,8 @@ int main (int argc, char **argv) const struct sgrp *sg; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/id.c b/src/id.c index 4462ae09..49521093 100644 --- a/src/id.c +++ b/src/id.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -52,11 +29,7 @@ static void usage (void); static void usage (void) { -#ifdef HAVE_GETGROUPS (void) fputs (_("Usage: id [-a]\n"), stderr); -#else - (void) fputs (_("Usage: id\n"), stderr); -#endif exit (EXIT_FAILURE); } @@ -73,11 +46,9 @@ static void usage (void) * gid_t for everything. Some systems have a small and fixed NGROUPS, * usually about 16 or 32. Others use bigger values. */ -#ifdef HAVE_GETGROUPS GETGROUPS_T *groups; int ngroups; bool aflg = 0; -#endif struct passwd *pw; struct group *gr; @@ -92,8 +63,8 @@ static void usage (void) * work if the system library is recompiled. */ sys_ngroups = sysconf (_SC_NGROUPS_MAX); -#ifdef HAVE_GETGROUPS groups = (GETGROUPS_T *) malloc (sizeof (GETGROUPS_T) * sys_ngroups); + /* * See if the -a flag has been given to print out the concurrent * group set. @@ -106,11 +77,6 @@ static void usage (void) aflg = true; } } -#else - if (argc > 1) { - usage (); - } -#endif ruid = getuid (); euid = geteuid (); @@ -161,7 +127,7 @@ static void usage (void) (void) printf (" EGID=%lu", (unsigned long) egid); } } -#ifdef HAVE_GETGROUPS + /* * Print out the concurrent group set if the user has requested it. * The group numbers will be printed followed by their names. @@ -195,7 +161,6 @@ static void usage (void) } } free (groups); -#endif /* * Finish off the line. diff --git a/src/lastlog.c b/src/lastlog.c index c1caedb0..3c0fc9c6 100644 --- a/src/lastlog.c +++ b/src/lastlog.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -42,11 +19,15 @@ #include #include #include +#ifdef HAVE_LL_HOST +#include +#endif #include "defines.h" #include "prototypes.h" #include "getdef.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Needed for MkLinux DR1/2/2.1 - J. @@ -104,9 +85,10 @@ static void print_one (/*@null@*/const struct passwd *pw) time_t ll_time; off_t offset; struct lastlog ll; - -#ifdef HAVE_STRFTIME char ptime[80]; + +#ifdef HAVE_LL_HOST + int maxIPv6Addrlen; #endif if (NULL == pw) { @@ -150,7 +132,17 @@ static void print_one (/*@null@*/const struct passwd *pw) /* Print the header only once */ if (!once) { #ifdef HAVE_LL_HOST - puts (_("Username Port From Latest")); + /* + * ll_host is in minimized form, thus the maximum IPv6 address possible is + * 8*4+7 = 39 characters. + * RFC 4291 2.5.6 states that for LL-addresses fe80+only the interface ID is set, + * thus having a maximum size of 25+1+IFNAMSIZ. + * POSIX says IFNAMSIZ should be 16 characters long including the null byte, thus + * 25+1+IFNAMSIZ >= 42 > 39 + */ + /* Link-Local address + % + Interfacename */ + maxIPv6Addrlen = 25+1+IFNAMSIZ; + printf (_("Username Port From%*sLatest\n"), maxIPv6Addrlen-3, " "); #else puts (_("Username Port Latest")); #endif @@ -159,21 +151,16 @@ static void print_one (/*@null@*/const struct passwd *pw) ll_time = ll.ll_time; tm = localtime (&ll_time); -#ifdef HAVE_STRFTIME strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", tm); cp = ptime; -#else - cp = asctime (tm); - cp[24] = '\0'; -#endif if (ll.ll_time == (time_t) 0) { cp = _("**Never logged in**\0"); } #ifdef HAVE_LL_HOST - printf ("%-16s %-8.8s %-16.16s %s\n", - pw->pw_name, ll.ll_line, ll.ll_host, cp); + printf ("%-16s %-8.8s %*s%s\n", + pw->pw_name, ll.ll_line, -maxIPv6Addrlen, ll.ll_host, cp); #else printf ("%-16s\t%-8.8s %s\n", pw->pw_name, ll.ll_line, cp); @@ -300,6 +287,8 @@ int main (int argc, char **argv) * most error messages. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/login.c b/src/login.c index 00508cd5..bb85c758 100644 --- a/src/login.c +++ b/src/login.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2001, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2012, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2001, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2012, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -53,6 +30,7 @@ #include "pwauth.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" #ifdef USE_PAM #include "pam_defs.h" @@ -216,7 +194,7 @@ static void setup_tty (void) /* * ttymon invocation prefers this, but these settings - * won't come into effect after the first username login + * won't come into effect after the first username login */ (void) STTY (0, &termio); } @@ -400,7 +378,7 @@ static void init_env (void) } } #endif /* !USE_PAM */ - /* + /* * Add the clock frequency so that profiling commands work * correctly. */ @@ -519,7 +497,7 @@ static void update_utmp (const char *user, * of reasons, such as X servers or network logins. * * the flags which login supports are - * + * * -p - preserve the environment * -r - perform autologin protocol for rlogin * -f - do not perform authentication, user is preauthenticated @@ -533,7 +511,7 @@ int main (int argc, char **argv) #ifdef RLOGIN char term[128] = ""; #endif /* RLOGIN */ -#if defined(HAVE_STRFTIME) && !defined(USE_PAM) +#if !defined(USE_PAM) char ptime[80]; #endif unsigned int delay; @@ -577,6 +555,8 @@ int main (int argc, char **argv) amroot = (getuid () == 0); Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); if (geteuid() != 0) { fprintf (stderr, _("%s: Cannot possibly work without effective root\n"), Prog); @@ -648,7 +628,7 @@ int main (int argc, char **argv) (void) umask (getdef_num ("UMASK", GETDEF_DEFAULT_UMASK)); { - /* + /* * Use the ULIMIT in the login.defs file, and if * there isn't one, use the default value. The * user may have one for themselves, but otherwise, @@ -978,6 +958,19 @@ int main (int argc, char **argv) || ('*' == user_passwd[0])) { failed = true; } + + if (strcmp (user_passwd, "") == 0) { + char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); + if (prevent_no_auth == NULL) { + prevent_no_auth = "superuser"; + } + if (strcmp(prevent_no_auth, "yes") == 0) { + failed = true; + } else if ((pwd->pw_uid == 0) + && (strcmp(prevent_no_auth, "superuser") == 0)) { + failed = true; + } + } } if (strcmp (user_passwd, SHADOW_PASSWD_STRING) == 0) { @@ -1273,6 +1266,7 @@ int main (int argc, char **argv) env++; } } + (void) pam_end (pamh, PAM_SUCCESS | PAM_DATA_SILENT); #endif (void) setlocale (LC_ALL, ""); @@ -1304,16 +1298,11 @@ int main (int argc, char **argv) && (ll.ll_time != 0)) { time_t ll_time = ll.ll_time; -#ifdef HAVE_STRFTIME (void) strftime (ptime, sizeof (ptime), "%a %b %e %H:%M:%S %z %Y", localtime (&ll_time)); printf (_("Last login: %s on %s"), ptime, ll.ll_line); -#else - printf (_("Last login: %.19s on %s"), - ctime (&ll_time), ll.ll_line); -#endif #ifdef HAVE_LL_HOST /* __linux__ || SUN4 */ if ('\0' != ll.ll_host[0]) { printf (_(" from %.*s"), diff --git a/src/login_nopam.c b/src/login_nopam.c index 68a37755..df6ba882 100644 --- a/src/login_nopam.c +++ b/src/login_nopam.c @@ -1,4 +1,9 @@ /* Taken from logdaemon-5.0, only minimal changes. --marekm */ +/* + * SPDX-FileCopyrightText: 1990 - 1995, Wietse Venema. + * + * SPDX-License-Identifier: Unlicense + */ /************************************************************************ * Copyright 1995 by Wietse Venema. All rights reserved. Individual files @@ -10,7 +15,7 @@ * * Redistribution and use in source and binary forms are permitted * provided that this entire copyright notice is duplicated in all such -* copies. +* copies. * * This software is provided "as is" and without any expressed or implied * warranties, including, without limitation, the implied warranties of @@ -30,7 +35,7 @@ * control based on login names and on host (or domain) names, internet * addresses (or network numbers), or on terminal line names in case of * non-networked logins. Diagnostics are reported through syslog(3). - * + * * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. */ #include diff --git a/src/logoutd.c b/src/logoutd.c index 1503a743..d369acf4 100644 --- a/src/logoutd.c +++ b/src/logoutd.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1991 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -40,6 +17,7 @@ #include #include "defines.h" #include "prototypes.h" +#include "shadowlog.h" /* * Global variables */ @@ -187,6 +165,8 @@ int main (int argc, char **argv) * Start syslogging everything */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); OPENLOG ("logoutd"); @@ -196,7 +176,7 @@ int main (int argc, char **argv) */ while (true) { - /* + /* * Attempt to re-open the utmpx/utmp file. The file is only * open while it is being used. */ diff --git a/src/new_subid_range.c b/src/new_subid_range.c new file mode 100644 index 00000000..6cb294d4 --- /dev/null +++ b/src/new_subid_range.c @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ + +#include +#include +#include "subid.h" +#include "stdlib.h" +#include "prototypes.h" +#include "shadowlog.h" + +/* Test program for the subid creation routine */ + +const char *Prog; + +void usage(void) +{ + fprintf(stderr, "Usage: %s [-g] [-n] user count\n", Prog); + fprintf(stderr, " Find a subuid (or with -g, subgid) range for user\n"); + fprintf(stderr, " If -n is given, a new range will be created even if one exists\n"); + fprintf(stderr, " count defaults to 65536\n"); + exit(EXIT_FAILURE); +} + +int main(int argc, char *argv[]) +{ + int c; + struct subordinate_range range; + bool makenew = false; // reuse existing by default + bool group = false; // get subuids by default + bool ok; + + Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); + while ((c = getopt(argc, argv, "gn")) != EOF) { + switch(c) { + case 'n': makenew = true; break; + case 'g': group = true; break; + default: usage(); + } + } + argv = &argv[optind]; + argc = argc - optind; + if (argc == 0) + usage(); + range.owner = argv[0]; + range.start = 0; + range.count = 65536; + if (argc > 1) + range.count = atoi(argv[1]); + if (group) + ok = subid_grant_gid_range(&range, !makenew); + else + ok = subid_grant_uid_range(&range, !makenew); + + if (!ok) { + fprintf(stderr, "Failed creating new id range\n"); + exit(EXIT_FAILURE); + } + printf("Subuid range %lu:%lu\n", range.start, range.count); + + return 0; +} diff --git a/src/newgidmap.c b/src/newgidmap.c index 7fcb459f..ebf16cde 100644 --- a/src/newgidmap.c +++ b/src/newgidmap.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2013 Eric Biederman - * All rights reserved. + * SPDX-FileCopyrightText: 2013 Eric Biederman * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -39,7 +16,9 @@ #include "defines.h" #include "prototypes.h" #include "subordinateio.h" +#include "getdef.h" #include "idmapping.h" +#include "shadowlog.h" /* * Global variables @@ -60,7 +39,7 @@ static bool verify_range(struct passwd *pw, struct map_range *range, bool *allow } /* Allow a process to map its own gid. */ - if ((range->count == 1) && (pw->pw_gid == range->lower)) { + if ((range->count == 1) && (getgid() == range->lower)) { /* noop -- if setgroups is enabled already we won't disable it. */ return true; } @@ -175,6 +154,8 @@ int main(int argc, char **argv) bool allow_setgroups = false; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); /* * The valid syntax are @@ -228,9 +209,9 @@ int main(int argc, char **argv) * mappings we have been asked to set. */ if ((getuid() != pw->pw_uid) || - (getgid() != pw->pw_gid) || + (!getdef_bool("GRANT_AUX_GROUP_SUBIDS") && (getgid() != pw->pw_gid)) || (pw->pw_uid != st.st_uid) || - (pw->pw_gid != st.st_gid)) { + (getgid() != st.st_gid)) { fprintf(stderr, _( "%s: Target %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" ), Prog, target, (unsigned long int)getuid(), (unsigned long int)pw->pw_uid, (unsigned long int)st.st_uid, diff --git a/src/newgrp.c b/src/newgrp.c index e3c44e14..cb88f6d7 100644 --- a/src/newgrp.c +++ b/src/newgrp.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -44,6 +21,7 @@ #include "prototypes.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables @@ -161,7 +139,8 @@ static void check_perms (const struct group *grp, */ spwd = xgetspnam (pwd->pw_name); if (NULL != spwd) { - pwd->pw_passwd = spwd->sp_pwdp; + pwd->pw_passwd = xstrdup (spwd->sp_pwdp); + spw_free (spwd); } if ((pwd->pw_passwd[0] == '\0') && (grp->gr_passwd[0] != '\0')) { @@ -443,9 +422,10 @@ int main (int argc, char **argv) * don't need to re-exec anything. -- JWP */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); is_newgrp = (strcmp (Prog, "newgrp") == 0); OPENLOG (is_newgrp ? "newgrp" : "sg"); - gid = getgid (); argc--; argv++; @@ -492,7 +472,7 @@ int main (int argc, char **argv) initflag = true; } if (!is_newgrp) { - /* + /* * Do the command line for everything that is * not "newgrp". */ @@ -531,7 +511,7 @@ int main (int argc, char **argv) group = argv[0]; } else { /* - * get the group file entry for her login group id. + * get the group file entry for her login group id. * the entry must exist, simply to be annoying. * * Perhaps in the past, but the default behavior now depends on the @@ -593,17 +573,17 @@ int main (int argc, char **argv) * now we put her in the new group. The password file entry for her * current user id has been gotten. If there was no optional group * argument she will have her real and effective group id set to the - * set to the value from her password file entry. + * set to the value from her password file entry. * * If run as newgrp, or as sg with no command, this process exec's - * an interactive subshell with the effective GID of the new group. + * an interactive subshell with the effective GID of the new group. * If run as sg with a command, that command is exec'ed in this * subshell. When this process terminates, either because the user * exits, or the command completes, the parent of this process * resumes with the current GID. * * If a group is explicitly specified on the command line, the - * interactive shell or command is run with that effective GID. + * interactive shell or command is run with that effective GID. * Access will be denied if no entry for that group can be found in * /etc/group. If the current user name appears in the members list * for that group, access will be granted immediately; if not, the @@ -648,7 +628,7 @@ int main (int argc, char **argv) } #endif /* HAVE_SETGROUPS */ /* - * For splitted groups (due to limitations of NIS), check all + * For splitted groups (due to limitations of NIS), check all * groups of the same GID like the requested group for * membership of the current user. */ @@ -696,7 +676,7 @@ int main (int argc, char **argv) #ifdef HAVE_SETGROUPS /* * I am going to try to add her new group id to her concurrent group - * set. If the group id is already present i'll just skip this part. + * set. If the group id is already present i'll just skip this part. * If the group doesn't fit, i'll complain loudly and skip this * part. */ @@ -852,7 +832,7 @@ int main (int argc, char **argv) /* * The previous code, when run as newgrp, re-exec'ed the shell in - * the current process with the original gid on error conditions. + * the current process with the original gid on error conditions. * See the comment above. This historical behavior now has the * effect of creating unlogged extraneous shell layers when the * command line has an error or there is an authentication failure. @@ -865,7 +845,7 @@ int main (int argc, char **argv) if (NULL != group) { snprintf (audit_buf, sizeof(audit_buf), "changing new-group=%s", group); - audit_logger (AUDIT_CHGRP_ID, Prog, + audit_logger (AUDIT_CHGRP_ID, Prog, audit_buf, NULL, (unsigned int) getuid (), 0); } else { diff --git a/src/newuidmap.c b/src/newuidmap.c index 55d84ba8..9aa2ddcc 100644 --- a/src/newuidmap.c +++ b/src/newuidmap.c @@ -1,30 +1,7 @@ /* - * Copyright (c) 2013 Eric Biederman - * All rights reserved. + * SPDX-FileCopyrightText: 2013 Eric Biederman * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -39,7 +16,9 @@ #include "defines.h" #include "prototypes.h" #include "subordinateio.h" +#include "getdef.h" #include "idmapping.h" +#include "shadowlog.h" /* * Global variables @@ -105,6 +84,8 @@ int main(int argc, char **argv) int written; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); /* * The valid syntax are @@ -145,7 +126,7 @@ int main(int argc, char **argv) (unsigned long) getuid ())); return EXIT_FAILURE; } - + /* Get the effective uid and effective gid of the target process */ if (fstat(proc_dir_fd, &st) < 0) { fprintf(stderr, _("%s: Could not stat directory for target %u\n"), @@ -158,9 +139,9 @@ int main(int argc, char **argv) * mappings we have been asked to set. */ if ((getuid() != pw->pw_uid) || - (getgid() != pw->pw_gid) || + (!getdef_bool("GRANT_AUX_GROUP_SUBIDS") && (getgid() != pw->pw_gid)) || (pw->pw_uid != st.st_uid) || - (pw->pw_gid != st.st_gid)) { + (getgid() != st.st_gid)) { fprintf(stderr, _( "%s: Target process %u is owned by a different user: uid:%lu pw_uid:%lu st_uid:%lu, gid:%lu pw_gid:%lu st_gid:%lu\n" ), Prog, target, (unsigned long int)getuid(), (unsigned long int)pw->pw_uid, (unsigned long int)st.st_uid, diff --git a/src/newusers.c b/src/newusers.c index e9fe0e27..c1d29f83 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1993, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1993, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -70,6 +47,7 @@ #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ #include "chkname.h" +#include "shadowlog.h" /* * Global variables @@ -89,6 +67,9 @@ static long sha_rounds = 5000; #ifdef USE_BCRYPT static long bcrypt_rounds = 13; #endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT +static long yescrypt_cost = 5; +#endif /* USE_YESCRYPT */ #endif /* !USE_PAM */ static bool is_shadow; @@ -139,14 +120,15 @@ static void usage (int status) #ifndef USE_PAM (void) fprintf (usageout, _(" -c, --crypt-method METHOD the crypt method (one of %s)\n"), -#if !defined(USE_SHA_CRYPT) && !defined(USE_BCRYPT) - "NONE DES MD5" -#elif defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) - "NONE DES MD5 SHA256 SHA512 BCRYPT" -#elif defined(USE_SHA_CRYPT) - "NONE DES MD5 SHA256 SHA512" -#else - "NONE DES MD5 BCRYPT" + "NONE DES MD5" +#if defined(USE_SHA_CRYPT) + " SHA256 SHA512" +#endif +#if defined(USE_BCRYPT) + " BCRYPT" +#endif +#if defined(USE_YESCRYPT) + " YESCRYPT" #endif ); #endif /* !USE_PAM */ @@ -154,11 +136,11 @@ static void usage (int status) (void) fputs (_(" -r, --system create system accounts\n"), usageout); (void) fputs (_(" -R, --root CHROOT_DIR directory to chroot into\n"), usageout); #ifndef USE_PAM -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) - (void) fputs (_(" -s, --sha-rounds number of rounds for the SHA or BCRYPT\n" - " crypt algorithms\n"), +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) + (void) fputs (_(" -s, --sha-rounds number of rounds for the SHA, BCRYPT\n" + " or YESCRYPT crypt algorithms\n"), usageout); -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ #endif /* !USE_PAM */ (void) fputs ("\n", usageout); @@ -423,7 +405,7 @@ static int add_user (const char *name, uid_t uid, gid_t gid) } #ifndef USE_PAM -/* +/* * update_passwd - update the password in the passwd entry * * Return 0 if successful. @@ -433,25 +415,28 @@ static int update_passwd (struct passwd *pwd, const char *password) void *crypt_arg = NULL; char *cp; if (NULL != crypt_method) { -#if defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) if (sflg) { if ( (0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) { crypt_arg = &sha_rounds; } - else if (0 == strcmp (crypt_method, "BCRYPT")) { + } +#endif /* USE_SHA_CRYPT */ +#if defined(USE_BCRYPT) + if (sflg) { + if (0 == strcmp (crypt_method, "BCRYPT")) { crypt_arg = &bcrypt_rounds; } } -#elif defined(USE_SHA_CRYPT) +#endif /* USE_BCRYPT */ +#if defined(USE_YESCRYPT) if (sflg) { - crypt_arg = &sha_rounds; + if (0 == strcmp (crypt_method, "YESCRYPT")) { + crypt_arg = &yescrypt_cost; + } } -#elif defined(USE_BCRYPT) - if (sflg) { - crypt_arg = &bcrypt_rounds; - } -#endif +#endif /* USE_YESCRYPT */ } if ((NULL != crypt_method) && (0 == strcmp(crypt_method, "NONE"))) { @@ -484,25 +469,28 @@ static int add_passwd (struct passwd *pwd, const char *password) #ifndef USE_PAM void *crypt_arg = NULL; if (NULL != crypt_method) { -#if defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) if (sflg) { if ( (0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) { crypt_arg = &sha_rounds; } - else if (0 == strcmp (crypt_method, "BCRYPT")) { + } +#endif /* USE_SHA_CRYPT */ +#if defined(USE_BCRYPT) + if (sflg) { + if (0 == strcmp (crypt_method, "BCRYPT")) { crypt_arg = &bcrypt_rounds; } } -#elif defined(USE_SHA_CRYPT) +#endif /* USE_BCRYPT */ +#if defined(USE_YESCRYPT) if (sflg) { - crypt_arg = &sha_rounds; + if (0 == strcmp (crypt_method, "YESCRYPT")) { + crypt_arg = &yescrypt_cost; + } } -#elif defined(USE_BCRYPT) - if (sflg) { - crypt_arg = &bcrypt_rounds; - } -#endif +#endif /* USE_PAM */ } /* @@ -619,6 +607,9 @@ static int add_passwd (struct passwd *pwd, const char *password) static void process_flags (int argc, char **argv) { int c; +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) + int bad_s; +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ static struct option long_options[] = { {"badnames", no_argument, NULL, 'b'}, #ifndef USE_PAM @@ -628,20 +619,20 @@ static void process_flags (int argc, char **argv) {"system", no_argument, NULL, 'r'}, {"root", required_argument, NULL, 'R'}, #ifndef USE_PAM -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) {"sha-rounds", required_argument, NULL, 's'}, -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ #endif /* !USE_PAM */ {NULL, 0, NULL, '\0'} }; while ((c = getopt_long (argc, argv, #ifndef USE_PAM -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) "c:bhrs:", -#else /* !USE_SHA_CRYPT && !USE_BCRYPT */ +#else /* !USE_SHA_CRYPT && !USE_BCRYPT && !USE_YESCRYPT */ "c:bhr", -#endif /* USE_SHA_CRYPT || USE_BCRYPT */ +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ #else /* USE_PAM */ "bhr", #endif @@ -664,40 +655,36 @@ static void process_flags (int argc, char **argv) case 'R': /* no-op, handled in process_root_flag () */ break; #ifndef USE_PAM -#if defined(USE_SHA_CRYPT) && defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) case 's': sflg = true; + bad_s = 0; +#if defined(USE_SHA_CRYPT) if ( ( ((0 == strcmp (crypt_method, "SHA256")) || (0 == strcmp (crypt_method, "SHA512"))) - && (0 == getlong(optarg, &sha_rounds))) - || ( (0 == strcmp (crypt_method, "BCRYPT")) + && (0 == getlong(optarg, &sha_rounds)))) { + bad_s = 1; + } +#endif /* USE_SHA_CRYPT */ +#if defined(USE_BCRYPT) + if (( (0 == strcmp (crypt_method, "BCRYPT")) && (0 == getlong(optarg, &bcrypt_rounds)))) { + bad_s = 1; + } +#endif /* USE_BCRYPT */ +#if defined(USE_YESCRYPT) + if (( (0 == strcmp (crypt_method, "YESCRYPT")) + && (0 == getlong(optarg, &yescrypt_cost)))) { + bad_s = 1; + } +#endif /* USE_YESCRYPT */ + if (bad_s != 0) { fprintf (stderr, _("%s: invalid numeric argument '%s'\n"), Prog, optarg); usage (EXIT_FAILURE); } break; -#elif defined(USE_SHA_CRYPT) - case 's': - sflg = true; - if (0 == getlong(optarg, &sha_rounds)) { - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); - usage (EXIT_FAILURE); - } - break; -#elif defined(USE_BCRYPT) - case 's': - sflg = true; - if (0 == getlong(optarg, &bcrypt_rounds)) { - fprintf (stderr, - _("%s: invalid numeric argument '%s'\n"), - Prog, optarg); - usage (EXIT_FAILURE); - } - break; -#endif +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ #endif /* !USE_PAM */ default: usage (EXIT_FAILURE); @@ -731,14 +718,14 @@ static void process_flags (int argc, char **argv) static void check_flags (void) { #ifndef USE_PAM -#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) +#if defined(USE_SHA_CRYPT) || defined(USE_BCRYPT) || defined(USE_YESCRYPT) if (sflg && !cflg) { fprintf (stderr, _("%s: %s flag is only allowed with the %s flag\n"), Prog, "-s", "-c"); usage (EXIT_FAILURE); } -#endif +#endif /* USE_SHA_CRYPT || USE_BCRYPT || USE_YESCRYPT */ if (cflg) { if ( (0 != strcmp (crypt_method, "DES")) @@ -751,6 +738,9 @@ static void check_flags (void) #ifdef USE_BCRYPT && (0 != strcmp (crypt_method, "BCRYPT")) #endif /* USE_BCRYPT */ +#ifdef USE_YESCRYPT + && (0 != strcmp (crypt_method, "YESCRYPT")) +#endif /* USE_YESCRYPT */ ) { fprintf (stderr, _("%s: unsupported crypt method: %s\n"), @@ -1020,6 +1010,24 @@ static void close_files (void) #endif /* ENABLE_SUBIDS */ } +static bool want_subuids(void) +{ + if (get_subid_nss_handle() != NULL) + return false; + if (getdef_ulong ("SUB_UID_COUNT", 65536) == 0) + return false; + return true; +} + +static bool want_subgids(void) +{ + if (get_subid_nss_handle() != NULL) + return false; + if (getdef_ulong ("SUB_GID_COUNT", 65536) == 0) + return false; + return true; +} + int main (int argc, char **argv) { char buf[BUFSIZ]; @@ -1040,6 +1048,8 @@ int main (int argc, char **argv) #endif /* USE_PAM */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); @@ -1218,6 +1228,13 @@ int main (int argc, char **argv) /* FIXME: should check for directory */ mode_t mode = getdef_num ("HOME_MODE", 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK)); + if (newpw.pw_dir[0] != '/') { + fprintf(stderr, + _("%s: line %d: homedir must be an absolute path\n"), + Prog, line); + errors++; + continue; + }; if (mkdir (newpw.pw_dir, mode) != 0) { fprintf (stderr, _("%s: line %d: mkdir %s failed: %s\n"), @@ -1248,10 +1265,10 @@ int main (int argc, char **argv) /* * Add subordinate uids if the user does not have them. */ - if (is_sub_uid && !sub_uid_assigned(fields[0])) { + if (is_sub_uid && want_subuids() && !local_sub_uid_assigned(fields[0])) { uid_t sub_uid_start = 0; unsigned long sub_uid_count = 0; - if (find_new_sub_uids(fields[0], &sub_uid_start, &sub_uid_count) == 0) { + if (find_new_sub_uids(&sub_uid_start, &sub_uid_count) == 0) { if (sub_uid_add(fields[0], sub_uid_start, sub_uid_count) == 0) { fprintf (stderr, _("%s: failed to prepare new %s entry\n"), @@ -1268,10 +1285,10 @@ int main (int argc, char **argv) /* * Add subordinate gids if the user does not have them. */ - if (is_sub_gid && !sub_gid_assigned(fields[0])) { + if (is_sub_gid && want_subgids() && !local_sub_gid_assigned(fields[0])) { gid_t sub_gid_start = 0; unsigned long sub_gid_count = 0; - if (find_new_sub_gids(fields[0], &sub_gid_start, &sub_gid_count) == 0) { + if (find_new_sub_gids(&sub_gid_start, &sub_gid_count) == 0) { if (sub_gid_add(fields[0], sub_gid_start, sub_gid_count) == 0) { fprintf (stderr, _("%s: failed to prepare new %s entry\n"), diff --git a/src/nologin.c b/src/nologin.c index b137f9cd..a7442818 100644 --- a/src/nologin.c +++ b/src/nologin.c @@ -1,27 +1,7 @@ /* - * Copyright (c) 2004 The FreeBSD Project. - * All rights reserved. + * SPDX-FileCopyrightText: 2004 The FreeBSD Project. * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. + * SPDX-License-Identifier: BSD-2-Clause */ diff --git a/src/passwd.c b/src/passwd.c index 13619b16..80531ec6 100644 --- a/src/passwd.c +++ b/src/passwd.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -50,6 +27,7 @@ #include "pwauth.h" #include "pwio.h" #include "shadowio.h" +#include "shadowlog.h" /* * exit status values @@ -134,7 +112,6 @@ static int new_password (const struct passwd *); static void check_password (const struct passwd *, const struct spwd *); #endif /* !USE_PAM */ -static /*@observer@*/const char *date_to_str (time_t); static /*@observer@*/const char *pw_status (const char *); static void print_status (const struct passwd *); static /*@noreturn@*/void fail_exit (int); @@ -282,7 +259,10 @@ static int new_password (const struct passwd *pw) #endif /* USE_SHA_CRYPT */ #ifdef USE_BCRYPT || (strcmp (method, "BCRYPT") == 0) -#endif /* USE_SHA_CRYPT */ +#endif /* USE_BCRYPT*/ +#ifdef USE_YESCRYPT + || (strcmp (method, "YESCRYPT") == 0) +#endif /* USE_YESCRYPT*/ ) { pass_max_len = -1; @@ -324,7 +304,7 @@ static int new_password (const struct passwd *pw) /* * If enabled, warn about weak passwords even if you are - * root (enter this password again to use it anyway). + * root (enter this password again to use it anyway). * --marekm */ if (amroot && !warned && getdef_bool ("PASS_ALWAYS_WARN") @@ -443,21 +423,6 @@ static void check_password (const struct passwd *pw, const struct spwd *sp) } #endif /* !USE_PAM */ -static /*@observer@*/const char *date_to_str (time_t t) -{ - static char buf[80]; - struct tm *tm; - - tm = gmtime (&t); -#ifdef HAVE_STRFTIME - (void) strftime (buf, sizeof buf, "%m/%d/%Y", tm); -#else /* !HAVE_STRFTIME */ - (void) snprintf (buf, sizeof buf, "%02d/%02d/%04d", - tm->tm_mon + 1, tm->tm_mday, tm->tm_year + 1900); -#endif /* !HAVE_STRFTIME */ - return buf; -} - static /*@observer@*/const char *pw_status (const char *pass) { if (*pass == '*' || *pass == '!') { @@ -474,21 +439,26 @@ static /*@observer@*/const char *pw_status (const char *pass) */ static void print_status (const struct passwd *pw) { + char date[80]; struct spwd *sp; sp = getspnam (pw->pw_name); /* local, no need for xgetspnam */ if (NULL != sp) { + date_to_str (sizeof(date), date, sp->sp_lstchg * SCALE), (void) printf ("%s %s %s %lld %lld %lld %lld\n", pw->pw_name, pw_status (sp->sp_pwdp), - date_to_str (sp->sp_lstchg * SCALE), + date, ((long long)sp->sp_min * SCALE) / DAY, ((long long)sp->sp_max * SCALE) / DAY, ((long long)sp->sp_warn * SCALE) / DAY, ((long long)sp->sp_inact * SCALE) / DAY); - } else { + } else if (NULL != pw->pw_passwd) { (void) printf ("%s %s\n", pw->pw_name, pw_status (pw->pw_passwd)); + } else { + (void) fprintf(stderr, _("%s: malformed password data obtained for user %s\n"), + Prog, pw->pw_name); } } @@ -549,6 +519,11 @@ static char *update_crypt_pw (char *cp) strcpy (newpw, "!"); strcat (newpw, cp); +#ifndef USE_PAM + if (do_update_pwd) { + free (cp); + } +#endif /* USE_PAM */ cp = newpw; } return cp; @@ -749,6 +724,8 @@ int main (int argc, char **argv) * most error messages. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); @@ -1032,7 +1009,7 @@ int main (int argc, char **argv) STRFCPY (crypt_passwd, cp); /* - * See if the user is permitted to change the password. + * See if the user is permitted to change the password. * Otherwise, go ahead and set a new password. */ check_password (pw, sp); @@ -1096,7 +1073,7 @@ int main (int argc, char **argv) (void) printf (_("%s: password changed.\n"), Prog); #endif /* USE_PAM */ } else { - (void) printf (_("%s: password expiry information changed.\n"), Prog); + (void) printf (_("%s: password changed.\n"), Prog); } } diff --git a/src/pwck.c b/src/pwck.c index be404c37..ee1df500 100644 --- a/src/pwck.c +++ b/src/pwck.c @@ -1,34 +1,11 @@ /* - * Copyright (c) 1992 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 , Michał Moskal - * Copyright (c) 2001 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1992 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 , Michał Moskal + * SPDX-FileCopyrightText: 2001 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -52,6 +29,7 @@ #ifdef WITH_TCB #include "tcbfuncs.h" #endif /* WITH_TCB */ +#include "shadowlog.h" /* * Exit codes @@ -527,12 +505,16 @@ static void check_pw_file (int *errors, bool *changed) * Make sure the home directory exists */ if (!quiet && (access (pwd->pw_dir, F_OK) != 0)) { + const char *nonexistent = getdef_str("NONEXISTENT"); + /* - * Home directory doesn't exist, give a warning + * Home directory does not exist, give a warning (unless intentional) */ - printf (_("user '%s': directory '%s' does not exist\n"), - pwd->pw_name, pwd->pw_dir); - *errors += 1; + if (NULL == nonexistent || strcmp (pwd->pw_dir, nonexistent) != 0) { + printf (_("user '%s': directory '%s' does not exist\n"), + pwd->pw_name, pwd->pw_dir); + *errors += 1; + } } } @@ -852,6 +834,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/pwconv.c b/src/pwconv.c index f932f266..21d36e7f 100644 --- a/src/pwconv.c +++ b/src/pwconv.c @@ -1,32 +1,9 @@ /* - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2006, Tomasz Kłoczko - * Copyright (c) 2009 - 2012, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2009 - 2012, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* @@ -73,6 +50,7 @@ #include "shadowio.h" #include "nscd.h" #include "sssd.h" +#include "shadowlog.h" /* * exit status values @@ -176,6 +154,8 @@ int main (int argc, char **argv) struct spwd spent; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/pwunconv.c b/src/pwunconv.c index e11ea494..b8624359 100644 --- a/src/pwunconv.c +++ b/src/pwunconv.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2001 - 2005, Tomasz Kłoczko - * Copyright (c) 2008 - 2012, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2001 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2008 - 2012, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -48,6 +25,7 @@ #include "shadowio.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables @@ -137,6 +115,8 @@ int main (int argc, char **argv) const struct spwd *spwd; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); diff --git a/src/su.c b/src/su.c index fc0e826f..792e57a0 100644 --- a/src/su.c +++ b/src/su.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2013, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2013, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ /* Some parts substantially derived from an ancestor of: @@ -77,6 +54,7 @@ #endif /* USE_PAM */ /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables @@ -294,6 +272,21 @@ static void prepare_pam_close_session (void) sigset_t ourset; int status; int ret; + struct sigaction action; + + /* reset SIGCHLD handling to default */ + action.sa_handler = SIG_DFL; + sigemptyset (&action.sa_mask); + action.sa_flags = 0; + if (0 == caught && sigaction (SIGCHLD, &action, NULL) != 0) { + fprintf (stderr, + _("%s: signal masking malfunction\n"), + Prog); + SYSLOG ((LOG_WARN, "Will not execute %s", shellstr)); + closelog (); + exit (1); + /* Only the child returns. See above. */ + } pid_child = fork (); if (pid_child == 0) { /* child shell */ @@ -317,11 +310,7 @@ static void prepare_pam_close_session (void) caught = SIGTERM; } if (0 == caught) { - struct sigaction action; - action.sa_handler = catch_signals; - sigemptyset (&action.sa_mask); - action.sa_flags = 0; sigemptyset (&ourset); if ( (sigaddset (&ourset, SIGTERM) != 0) @@ -354,7 +343,9 @@ static void prepare_pam_close_session (void) pid_t pid; stop = true; - pid = waitpid (-1, &status, WUNTRACED); + do { + pid = waitpid (-1, &status, WUNTRACED); + } while (pid != -1 && pid != pid_child); /* When interrupted by signal, the signal will be * forwarded to the child, and termination will be @@ -394,22 +385,28 @@ static void prepare_pam_close_session (void) snprintf (kill_msg, sizeof kill_msg, _(" ...killed.\n")); snprintf (wait_msg, sizeof wait_msg, _(" ...waiting for child to terminate.\n")); + /* Any signals other than SIGCHLD and SIGALRM will no longer have any effect, + * so it's time to block all of them. */ + sigfillset (&ourset); + if (sigprocmask (SIG_BLOCK, &ourset, NULL) != 0) { + fprintf (stderr, _("%s: signal masking malfunction\n"), Prog); + kill_child (0); + /* Never reach (_exit called). */ + } + + /* Send SIGKILL to the child if it doesn't + * exit within 2 seconds (after SIGTERM) */ (void) signal (SIGALRM, kill_child); (void) signal (SIGCHLD, catch_signals); (void) alarm (2); - sigemptyset (&ourset); - if ((sigaddset (&ourset, SIGALRM) != 0) - || (sigprocmask (SIG_BLOCK, &ourset, NULL) != 0)) { - fprintf (stderr, _("%s: signal masking malfunction\n"), Prog); - kill_child (0); - } else { - while (0 == waitpid (pid_child, &status, WNOHANG)) { - sigsuspend (&ourset); - } - pid_child = 0; - (void) sigprocmask (SIG_UNBLOCK, &ourset, NULL); + (void) sigdelset (&ourset, SIGALRM); + (void) sigdelset (&ourset, SIGCHLD); + + while (0 == waitpid (pid_child, &status, WNOHANG)) { + sigsuspend (&ourset); } + pid_child = 0; (void) fputs (_(" ...terminated.\n"), stderr); } @@ -503,6 +500,21 @@ static void check_perms_nopam (const struct passwd *pw) return; } + if (strcmp (pw->pw_passwd, "") == 0) { + char *prevent_no_auth = getdef_str("PREVENT_NO_AUTH"); + if (prevent_no_auth == NULL) { + prevent_no_auth = "superuser"; + } + if (strcmp(prevent_no_auth, "yes") == 0) { + fprintf(stderr, _("Password field is empty, this is forbidden for all accounts.\n")); + exit(1); + } else if ((pw->pw_uid == 0) + && (strcmp(prevent_no_auth, "superuser") == 0)) { + fprintf(stderr, _("Password field is empty, this is forbidden for super-user.\n")); + exit(1); + } + } + /* * BSD systems only allow "wheel" to SU to root. USG systems don't, * so we make this a configurable option. @@ -561,7 +573,7 @@ static void check_perms_nopam (const struct passwd *pw) oldsig = signal (SIGQUIT, die); /* - * See if the system defined authentication method is being used. + * See if the system defined authentication method is being used. * The first character of an administrator defined method is an '@' * character. */ @@ -699,6 +711,8 @@ static void save_caller_context (char **argv) * most error messages. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); caller_uid = getuid (); caller_is_root = (caller_uid == 0); @@ -1137,12 +1151,9 @@ int main (int argc, char **argv) } } - /* - * PAM_DATA_SILENT is not supported by some modules, and - * there is no strong need to clean up the process space's - * memory since we will either call exec or exit. - pam_end (pamh, PAM_SUCCESS | PAM_DATA_SILENT); - */ +#ifdef USE_PAM + (void) pam_end (pamh, PAM_SUCCESS | PAM_DATA_SILENT); +#endif endpwent (); endspent (); diff --git a/src/suauth.c b/src/suauth.c index 619a593b..2641d334 100644 --- a/src/suauth.c +++ b/src/suauth.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1990 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2005, Tomasz Kłoczko - * Copyright (c) 2007 - 2008, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1990 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2005, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2008, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -50,7 +27,7 @@ #ifdef SU_ACCESS -/* Really, I could do with a few const char's here defining all the +/* Really, I could do with a few const char's here defining all the * strings output to the user or the syslog. -- chris */ static int applies (const char *, char *); diff --git a/src/sulogin.c b/src/sulogin.c index 4264099b..4d38daf6 100644 --- a/src/sulogin.c +++ b/src/sulogin.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1989 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2002 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2010, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1989 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2010, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -45,6 +22,7 @@ #include "pwauth.h" /*@-exitarg@*/ #include "exitcodes.h" +#include "shadowlog.h" /* * Global variables @@ -106,6 +84,8 @@ static RETSIGTYPE catch_signals (unused int sig) #endif Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); @@ -209,7 +189,7 @@ static RETSIGTYPE catch_signals (unused int sig) /* * XXX - can't enter single user mode if root password is * empty. I think this doesn't happen very often :-). But - * it will work with standard getpass() (no NULL on EOF). + * it will work with standard getpass() (no NULL on EOF). * --marekm */ if ((NULL == cp) || ('\0' == *cp)) { diff --git a/src/useradd.c b/src/useradd.c index a679392d..456b9de5 100644 --- a/src/useradd.c +++ b/src/useradd.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2012, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2012, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -41,6 +18,7 @@ #include #include #include +#include #include #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM @@ -64,16 +42,21 @@ #include "prototypes.h" #include "pwauth.h" #include "pwio.h" +#include "run_part.h" #ifdef SHADOWGRP #include "sgroupio.h" #endif #include "shadowio.h" +#ifdef WITH_SELINUX +#include +#endif /* WITH_SELINUX */ #ifdef ENABLE_SUBIDS #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ #ifdef WITH_TCB #include "tcbfuncs.h" #endif +#include "shadowlog.h" #ifndef SKEL_DIR #define SKEL_DIR "/etc/skel" @@ -96,12 +79,13 @@ const char *Prog; /* * These defaults are used if there is no defaults file. */ -static gid_t def_group = 100; +static gid_t def_group = 1000; static const char *def_gname = "other"; static const char *def_home = "/home"; -static const char *def_shell = ""; +static const char *def_shell = "/bin/bash"; static const char *def_template = SKEL_DIR; -static const char *def_create_mail_spool = "no"; +static const char *def_create_mail_spool = "yes"; +static const char *def_log_init = "yes"; static long def_inactive = -1; static const char *def_expire = ""; @@ -137,9 +121,7 @@ static bool is_sub_gid = false; static bool sub_uid_locked = false; static bool sub_gid_locked = false; static uid_t sub_uid_start; /* New subordinate uid range */ -static unsigned long sub_uid_count; static gid_t sub_gid_start; /* New subordinate gid range */ -static unsigned long sub_gid_count; #endif /* ENABLE_SUBIDS */ static bool pw_locked = false; static bool gr_locked = false; @@ -190,6 +172,7 @@ static bool home_added = false; #define E_NAME_IN_USE 9 /* username already in use */ #define E_GRP_UPDATE 10 /* can't update group file */ #define E_HOMEDIR 12 /* can't create home directory */ +#define E_MAILBOXFILE 13 /* can't create mailbox file */ #define E_SE_UPDATE 14 /* can't update SELinux user mapping */ #ifdef ENABLE_SUBIDS #define E_SUB_UID_UPDATE 16 /* can't update the subordinate uid file */ @@ -203,6 +186,7 @@ static bool home_added = false; #define DEXPIRE "EXPIRE=" #define DSKEL "SKEL=" #define DCREATE_MAIL_SPOOL "CREATE_MAIL_SPOOL=" +#define DLOG_INIT "LOG_INIT=" /* local function prototypes */ static void fail_exit (int); @@ -210,6 +194,7 @@ static void get_defaults (void); static void show_defaults (void); static int set_defaults (void); static int get_groups (char *); +static struct group * get_local_group (char * grp_name); static void usage (int status); static void new_pwent (struct passwd *); @@ -219,14 +204,18 @@ static void grp_update (void); static void process_flags (int argc, char **argv); static void close_files (void); +static void close_group_files (void); +static void unlock_group_files (void); static void open_files (void); +static void open_group_files (void); static void open_shadow (void); static void faillog_reset (uid_t); static void lastlog_reset (uid_t); static void tallylog_reset (const char *); -static void usr_update (void); +static void usr_update (unsigned long subuid_count, unsigned long subgid_count); static void create_home (void); static void create_mail (void); +static void check_uid_range(int rflg, uid_t user_id); /* * fail_exit - undo as much as possible @@ -331,7 +320,7 @@ static void fail_exit (int code) user_name, AUDIT_NO_ID, SHADOW_AUDIT_FAILURE); #endif - SYSLOG ((LOG_INFO, "failed adding user '%s', data deleted", user_name)); + SYSLOG ((LOG_INFO, "failed adding user '%s', exit code: %d", user_name, code)); exit (code); } @@ -351,7 +340,7 @@ static void get_defaults (void) char buf[1024]; char *cp; - if(prefix[0]) { + if (prefix[0]) { size_t len; int wlen; @@ -451,8 +440,8 @@ static void get_defaults (void) if ('\0' == *cp) { cp = SKEL_DIR; /* XXX warning: const */ } - - if(prefix[0]) { + + if (prefix[0]) { size_t len; int wlen; char* _def_template; /* avoid const warning */ @@ -478,10 +467,20 @@ static void get_defaults (void) def_create_mail_spool = xstrdup (cp); } + + /* + * By default do we add the user to the lastlog and faillog databases ? + */ + else if (MATCH (buf, DLOG_INIT)) { + if (*cp == '\0') { + cp = def_log_init; /* XXX warning: const */ + } + def_log_init = xstrdup (cp); + } } (void) fclose (fp); getdef_err: - if(prefix[0]) { + if (prefix[0]) { free(default_file); } } @@ -501,6 +500,7 @@ static void show_defaults (void) printf ("SHELL=%s\n", def_shell); printf ("SKEL=%s\n", def_template); printf ("CREATE_MAIL_SPOOL=%s\n", def_create_mail_spool); + printf ("LOG_INIT=%s\n", def_log_init); } /* @@ -516,6 +516,7 @@ static int set_defaults (void) FILE *ofp; char buf[1024]; char *new_file = NULL; + char *new_file_dup = NULL; char *default_file = USER_DEFAULTS_FILE; char *cp; int ofd; @@ -527,6 +528,7 @@ static int set_defaults (void) bool out_shell = false; bool out_skel = false; bool out_create_mail_spool = false; + bool out_log_init = false; size_t len; int ret = -1; @@ -542,7 +544,7 @@ static int set_defaults (void) wlen = snprintf(new_file, len, "%s%s%s", prefix, prefix[0]?"/":"", NEW_USER_FILE); assert (wlen <= (int) len -1); - if(prefix[0]) { + if (prefix[0]) { len = strlen(prefix) + strlen(USER_DEFAULTS_FILE) + 2; default_file = malloc(len); if (default_file == NULL) { @@ -555,6 +557,24 @@ static int set_defaults (void) assert (wlen == (int) len -1); } + new_file_dup = strdup(new_file); + if (new_file_dup == NULL) { + fprintf (stderr, + _("%s: cannot create directory for defaults file\n"), + Prog); + goto setdef_err; + } + + ret = mkdir(dirname(new_file_dup), 0755); + if (-1 == ret && EEXIST != errno) { + fprintf (stderr, + _("%s: cannot create directory for defaults file\n"), + Prog); + free(new_file_dup); + goto setdef_err; + } + free(new_file_dup); + /* * Create a temporary file to copy the new output to. */ @@ -626,6 +646,12 @@ static int set_defaults (void) DCREATE_MAIL_SPOOL "%s\n", def_create_mail_spool); out_create_mail_spool = true; + } else if (!out_log_init + && MATCH (buf, DLOG_INIT)) { + fprintf (ofp, + DLOG_INIT "%s\n", + def_log_init); + out_log_init = true; } else fprintf (ofp, "%s\n", buf); } @@ -652,7 +678,8 @@ static int set_defaults (void) if (!out_create_mail_spool) fprintf (ofp, DCREATE_MAIL_SPOOL "%s\n", def_create_mail_spool); - + if (!out_log_init) + fprintf (ofp, DLOG_INIT "%s\n", def_log_init); /* * Flush and close the file. Check for errors to make certain * the new file is intact. @@ -698,14 +725,14 @@ static int set_defaults (void) #endif SYSLOG ((LOG_INFO, "useradd defaults: GROUP=%u, HOME=%s, SHELL=%s, INACTIVE=%ld, " - "EXPIRE=%s, SKEL=%s, CREATE_MAIL_SPOOL=%s", + "EXPIRE=%s, SKEL=%s, CREATE_MAIL_SPOOL=%s, LOG_INIT=%s", (unsigned int) def_group, def_home, def_shell, def_inactive, def_expire, def_template, - def_create_mail_spool)); + def_create_mail_spool, def_log_init)); ret = 0; setdef_err: free(new_file); - if(prefix[0]) { + if (prefix[0]) { free(default_file); } @@ -722,7 +749,7 @@ static int set_defaults (void) static int get_groups (char *list) { char *cp; - const struct group *grp; + struct group *grp; int errors = 0; int ngroups = 0; @@ -730,6 +757,11 @@ static int get_groups (char *list) return 0; } + /* + * Open the group files + */ + open_group_files (); + /* * So long as there is some data to be converted, strip off * each name and look it up. A mix of numerical and string @@ -748,7 +780,7 @@ static int get_groups (char *list) * Names starting with digits are treated as numerical * GID values, otherwise the string is looked up as is. */ - grp = prefix_getgr_nam_gid (list); + grp = get_local_group (list); /* * There must be a match, either by GID value or by @@ -781,6 +813,7 @@ static int get_groups (char *list) fprintf (stderr, _("%s: group '%s' is a NIS group.\n"), Prog, grp->gr_name); + gr_free(grp); continue; } #endif @@ -789,6 +822,7 @@ static int get_groups (char *list) fprintf (stderr, _("%s: too many groups specified (max %d).\n"), Prog, ngroups); + gr_free(grp); break; } @@ -796,8 +830,12 @@ static int get_groups (char *list) * Add the group name to the user's list of groups. */ user_groups[ngroups++] = xstrdup (grp->gr_name); + gr_free (grp); } while (NULL != list); + close_group_files (); + unlock_group_files (); + user_groups[ngroups] = (char *) 0; /* @@ -810,6 +848,44 @@ static int get_groups (char *list) return 0; } +/* + * get_local_group - checks if a given group name exists locally + * + * get_local_group() checks if a given group name exists locally. + * If the name exists the group information is returned, otherwise NULL is + * returned. + */ +static struct group * get_local_group(char * grp_name) +{ + const struct group *grp; + struct group *result_grp = NULL; + long long int gid; + char *endptr; + + gid = strtoll (grp_name, &endptr, 10); + if ( ('\0' != *grp_name) + && ('\0' == *endptr) + && (ERANGE != errno) + && (gid == (gid_t)gid)) { + grp = gr_locate_gid ((gid_t) gid); + } + else { + grp = gr_locate(grp_name); + } + + if (grp != NULL) { + result_grp = __gr_dup (grp); + if (NULL == result_grp) { + fprintf (stderr, + _("%s: Out of memory. Cannot find group '%s'.\n"), + Prog, grp_name); + fail_exit (E_GRP_UPDATE); + } + } + + return result_grp; +} + /* * usage - display usage message and exit */ @@ -983,7 +1059,7 @@ static void grp_update (void) fail_exit (E_GRP_UPDATE); /* XXX */ } - /* + /* * Add the username to the list of group members and * update the group entry to reflect the change. */ @@ -1058,7 +1134,7 @@ static void grp_update (void) fail_exit (E_GRP_UPDATE); /* XXX */ } - /* + /* * Add the username to the list of group members and * update the group entry to reflect the change. */ @@ -1447,7 +1523,7 @@ static void process_flags (int argc, char **argv) user_name = argv[optind]; if (!is_valid_user_name (user_name)) { fprintf (stderr, - _("%s: invalid user name '%s'\n"), + _("%s: invalid user name '%s': use --badname to ignore\n"), Prog, user_name); #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_USER, Prog, @@ -1468,7 +1544,7 @@ static void process_flags (int argc, char **argv) user_home = uh; } - if(prefix[0]) { + if (prefix[0]) { size_t len = strlen(prefix) + strlen(user_home) + 2; int wlen; char* _prefix_user_home; /* to avoid const warning */ @@ -1496,6 +1572,14 @@ static void process_flags (int argc, char **argv) create_mail_spool = def_create_mail_spool; + if (!lflg) { + /* If we are missing the flag lflg aka -l, check the defaults + * file to see if we need to disable it as a default*/ + if (strcmp (def_log_init, "no") == 0) { + lflg = true; + } + } + if (!rflg) { /* for system accounts defaults are ignored and we * do not create a home dir */ @@ -1529,23 +1613,9 @@ static void close_files (void) SYSLOG ((LOG_ERR, "failure while writing changes to %s", spw_dbname ())); fail_exit (E_PW_UPDATE); } - if (do_grp_update) { - if (gr_close () == 0) { - fprintf (stderr, - _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); - SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); - fail_exit (E_GRP_UPDATE); - } -#ifdef SHADOWGRP - if (is_shadow_grp && (sgr_close () == 0)) { - fprintf (stderr, - _("%s: failure while writing changes to %s\n"), - Prog, sgr_dbname ()); - SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); - fail_exit (E_GRP_UPDATE); - } -#endif - } + + close_group_files (); + #ifdef ENABLE_SUBIDS if (is_sub_uid && (sub_uid_close () == 0)) { fprintf (stderr, @@ -1586,34 +1656,9 @@ static void close_files (void) /* continue */ } pw_locked = false; - if (gr_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking group file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif - /* continue */ - } - gr_locked = false; -#ifdef SHADOWGRP - if (is_shadow_grp) { - if (sgr_unlock () == 0) { - fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); - SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); -#ifdef WITH_AUDIT - audit_logger (AUDIT_ADD_USER, Prog, - "unlocking gshadow file", - user_name, AUDIT_NO_ID, - SHADOW_AUDIT_FAILURE); -#endif - /* continue */ - } - sgr_locked = false; - } -#endif + + unlock_group_files (); + #ifdef ENABLE_SUBIDS if (is_sub_uid) { if (sub_uid_unlock () == 0) { @@ -1646,6 +1691,71 @@ static void close_files (void) #endif /* ENABLE_SUBIDS */ } +/* + * close_group_files - close all of the files that were opened + * + * close_group_files() closes all of the files that were opened related + * with groups. This causes any modified entries to be written out. + */ +static void close_group_files (void) +{ + if (do_grp_update) { + if (gr_close () == 0) { + fprintf (stderr, + _("%s: failure while writing changes to %s\n"), Prog, gr_dbname ()); + SYSLOG ((LOG_ERR, "failure while writing changes to %s", gr_dbname ())); + fail_exit (E_GRP_UPDATE); + } +#ifdef SHADOWGRP + if (is_shadow_grp && (sgr_close () == 0)) { + fprintf (stderr, + _("%s: failure while writing changes to %s\n"), + Prog, sgr_dbname ()); + SYSLOG ((LOG_ERR, "failure while writing changes to %s", sgr_dbname ())); + fail_exit (E_GRP_UPDATE); + } +#endif /* SHADOWGRP */ + } +} + +/* + * unlock_group_files - unlock all of the files that were locked + * + * unlock_group_files() unlocks all of the files that were locked related + * with groups. This causes any modified entries to be written out. + */ +static void unlock_group_files (void) +{ + if (gr_unlock () == 0) { + fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, gr_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", gr_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_USER, Prog, + "unlocking-group-file", + user_name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif /* WITH_AUDIT */ + /* continue */ + } + gr_locked = false; +#ifdef SHADOWGRP + if (is_shadow_grp) { + if (sgr_unlock () == 0) { + fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sgr_dbname ()); + SYSLOG ((LOG_ERR, "failed to unlock %s", sgr_dbname ())); +#ifdef WITH_AUDIT + audit_logger (AUDIT_ADD_USER, Prog, + "unlocking-gshadow-file", + user_name, AUDIT_NO_ID, + SHADOW_AUDIT_FAILURE); +#endif /* WITH_AUDIT */ + /* continue */ + } + sgr_locked = false; + } +#endif /* SHADOWGRP */ +} + /* * open_files - lock and open the password files * @@ -1667,37 +1777,8 @@ static void open_files (void) /* shadow file will be opened by open_shadow(); */ - /* - * Lock and open the group file. - */ - if (gr_lock () == 0) { - fprintf (stderr, - _("%s: cannot lock %s; try again later.\n"), - Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); - } - gr_locked = true; - if (gr_open (O_CREAT | O_RDWR) == 0) { - fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); - fail_exit (E_GRP_UPDATE); - } -#ifdef SHADOWGRP - if (is_shadow_grp) { - if (sgr_lock () == 0) { - fprintf (stderr, - _("%s: cannot lock %s; try again later.\n"), - Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); - } - sgr_locked = true; - if (sgr_open (O_CREAT | O_RDWR) == 0) { - fprintf (stderr, - _("%s: cannot open %s\n"), - Prog, sgr_dbname ()); - fail_exit (E_GRP_UPDATE); - } - } -#endif + open_group_files (); + #ifdef ENABLE_SUBIDS if (is_sub_uid) { if (sub_uid_lock () == 0) { @@ -1732,6 +1813,39 @@ static void open_files (void) #endif /* ENABLE_SUBIDS */ } +static void open_group_files (void) +{ + if (gr_lock () == 0) { + fprintf (stderr, + _("%s: cannot lock %s; try again later.\n"), + Prog, gr_dbname ()); + fail_exit (E_GRP_UPDATE); + } + gr_locked = true; + if (gr_open (O_CREAT | O_RDWR) == 0) { + fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ()); + fail_exit (E_GRP_UPDATE); + } + +#ifdef SHADOWGRP + if (is_shadow_grp) { + if (sgr_lock () == 0) { + fprintf (stderr, + _("%s: cannot lock %s; try again later.\n"), + Prog, sgr_dbname ()); + fail_exit (E_GRP_UPDATE); + } + sgr_locked = true; + if (sgr_open (O_CREAT | O_RDWR) == 0) { + fprintf (stderr, + _("%s: cannot open %s\n"), + Prog, sgr_dbname ()); + fail_exit (E_GRP_UPDATE); + } + } +#endif /* SHADOWGRP */ +} + static void open_shadow (void) { if (!is_shadow_pwd) { @@ -1873,16 +1987,26 @@ static void faillog_reset (uid_t uid) memzero (&fl, sizeof (fl)); fd = open (FAILLOG_FILE, O_RDWR); - if ( (-1 == fd) - || (lseek (fd, offset_uid, SEEK_SET) != offset_uid) + if (-1 == fd) { + fprintf (stderr, + _("%s: failed to open the faillog file for UID %lu: %s\n"), + Prog, (unsigned long) uid, strerror (errno)); + SYSLOG ((LOG_WARN, "failed to open the faillog file for UID %lu", (unsigned long) uid)); + return; + } + if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) || (write (fd, &fl, sizeof (fl)) != (ssize_t) sizeof (fl)) - || (fsync (fd) != 0) - || (close (fd) != 0)) { + || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to reset the faillog entry of UID %lu: %s\n"), Prog, (unsigned long) uid, strerror (errno)); SYSLOG ((LOG_WARN, "failed to reset the faillog entry of UID %lu", (unsigned long) uid)); - /* continue */ + } + if (close (fd) != 0) { + fprintf (stderr, + _("%s: failed to close the faillog file for UID %lu: %s\n"), + Prog, (unsigned long) uid, strerror (errno)); + SYSLOG ((LOG_WARN, "failed to close the faillog file for UID %lu", (unsigned long) uid)); } } @@ -1906,17 +2030,29 @@ static void lastlog_reset (uid_t uid) memzero (&ll, sizeof (ll)); fd = open (LASTLOG_FILE, O_RDWR); - if ( (-1 == fd) - || (lseek (fd, offset_uid, SEEK_SET) != offset_uid) + if (-1 == fd) { + fprintf (stderr, + _("%s: failed to open the lastlog file for UID %lu: %s\n"), + Prog, (unsigned long) uid, strerror (errno)); + SYSLOG ((LOG_WARN, "failed to open the lastlog file for UID %lu", (unsigned long) uid)); + return; + } + if ( (lseek (fd, offset_uid, SEEK_SET) != offset_uid) || (write (fd, &ll, sizeof (ll)) != (ssize_t) sizeof (ll)) - || (fsync (fd) != 0) - || (close (fd) != 0)) { + || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to reset the lastlog entry of UID %lu: %s\n"), Prog, (unsigned long) uid, strerror (errno)); SYSLOG ((LOG_WARN, "failed to reset the lastlog entry of UID %lu", (unsigned long) uid)); /* continue */ } + if (close (fd) != 0) { + fprintf (stderr, + _("%s: failed to close the lastlog file for UID %lu: %s\n"), + Prog, (unsigned long) uid, strerror (errno)); + SYSLOG ((LOG_WARN, "failed to close the lastlog file for UID %lu", (unsigned long) uid)); + /* continue */ + } } static void tallylog_reset (const char *user_name) @@ -1971,7 +2107,7 @@ static void tallylog_reset (const char *user_name) * usr_update() creates the password file entries for this user * and will update the group entries if required. */ -static void usr_update (void) +static void usr_update (unsigned long subuid_count, unsigned long subgid_count) { struct passwd pwent; struct spwd spent; @@ -2034,14 +2170,14 @@ static void usr_update (void) } #ifdef ENABLE_SUBIDS if (is_sub_uid && - (sub_uid_add(user_name, sub_uid_start, sub_uid_count) == 0)) { + (sub_uid_add(user_name, sub_uid_start, subuid_count) == 0)) { fprintf (stderr, _("%s: failed to prepare the new %s entry\n"), Prog, sub_uid_dbname ()); fail_exit (E_SUB_UID_UPDATE); } if (is_sub_gid && - (sub_gid_add(user_name, sub_gid_start, sub_gid_count) == 0)) { + (sub_gid_add(user_name, sub_gid_start, subgid_count) == 0)) { fprintf (stderr, _("%s: failed to prepare the new %s entry\n"), Prog, sub_uid_dbname ()); @@ -2084,10 +2220,9 @@ static void create_home (void) Prog, user_home); fail_exit (E_HOMEDIR); } - ++bhome; #ifdef WITH_SELINUX - if (set_selinux_file_context (prefix_user_home) != 0) { + if (set_selinux_file_context (prefix_user_home, S_IFDIR) != 0) { fprintf (stderr, _("%s: cannot set SELinux context for home directory %s\n"), Prog, user_home); @@ -2101,7 +2236,11 @@ static void create_home (void) */ cp = strtok (bhome, "/"); while (cp) { - strcat (path, "/"); + /* Avoid turning a relative path into an absolute path. + */ + if (bhome[0] == '/' || strlen (path) != 0) { + strcat (path, "/"); + } strcat (path, cp); if (access (path, F_OK) != 0) { /* Check if parent directory is BTRFS, fail if requesting @@ -2160,11 +2299,15 @@ static void create_home (void) } cp = strtok (NULL, "/"); } + free (bhome); (void) chown (prefix_user_home, user_id, user_gid); mode_t mode = getdef_num ("HOME_MODE", 0777 & ~getdef_num ("UMASK", GETDEF_DEFAULT_UMASK)); - chmod (prefix_user_home, mode); + if (chmod (prefix_user_home, mode)) { + fprintf (stderr, _("%s: warning: chown on '%s' failed: %m\n"), + Prog, path); + } home_added = true; #ifdef WITH_AUDIT audit_logger (AUDIT_ADD_USER, Prog, @@ -2202,14 +2345,29 @@ static void create_mail (void) mode_t mode; spool = getdef_str ("MAIL_DIR"); +#ifdef MAIL_SPOOL_DIR + if ((NULL == spool) && (getdef_str ("MAIL_FILE") == NULL)) { + spool = MAIL_SPOOL_DIR; + } +#endif /* MAIL_SPOOL_DIR */ if (NULL == spool) { - spool = "/var/mail"; + return; } file = alloca (strlen (prefix) + strlen (spool) + strlen (user_name) + 2); - if(prefix[0]) + if (prefix[0]) sprintf (file, "%s/%s/%s", prefix, spool, user_name); else sprintf (file, "%s/%s", spool, user_name); + +#ifdef WITH_SELINUX + if (set_selinux_file_context (file, S_IFREG) != 0) { + fprintf (stderr, + _("%s: cannot set SELinux context for mailbox file %s\n"), + Prog, file); + fail_exit (E_MAILBOXFILE); + } +#endif + fd = open (file, O_CREAT | O_WRONLY | O_TRUNC | O_EXCL, 0); if (fd < 0) { perror (_("Creating mailbox file")); @@ -2234,9 +2392,39 @@ static void create_mail (void) fsync (fd); close (fd); +#ifdef WITH_SELINUX + /* Reset SELinux to create files with default contexts */ + if (reset_selinux_file_context () != 0) { + fprintf (stderr, + _("%s: cannot reset SELinux file creation context\n"), + Prog); + fail_exit (E_MAILBOXFILE); + } +#endif } } +static void check_uid_range(int rflg, uid_t user_id) +{ + uid_t uid_min ; + uid_t uid_max ; + if (rflg) { + uid_min = (uid_t)getdef_ulong("SYS_UID_MIN",101UL); + uid_max = (uid_t)getdef_ulong("SYS_UID_MAX",getdef_ulong("UID_MIN",1000UL)-1); + if (uid_min <= uid_max) { + if (user_id < uid_min || user_id >uid_max) + fprintf(stderr, _("%s warning: %s's uid %d outside of the SYS_UID_MIN %d and SYS_UID_MAX %d range.\n"), Prog, user_name, user_id, uid_min, uid_max); + } + }else{ + uid_min = (uid_t)getdef_ulong("UID_MIN", 1000UL); + uid_max = (uid_t)getdef_ulong("UID_MAX", 6000UL); + if (uid_min <= uid_max) { + if (user_id < uid_min || user_id >uid_max) + fprintf(stderr, _("%s warning: %s's uid %d outside of the UID_MIN %d and UID_MAX %d range.\n"), Prog, user_name, user_id, uid_min, uid_max); + } + } + +} /* * main - useradd command */ @@ -2253,11 +2441,15 @@ int main (int argc, char **argv) uid_t uid_min; uid_t uid_max; #endif + unsigned long subuid_count = 0; + unsigned long subgid_count = 0; /* * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); @@ -2292,25 +2484,32 @@ int main (int argc, char **argv) #ifdef ENABLE_SUBIDS uid_min = (uid_t) getdef_ulong ("UID_MIN", 1000UL); uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL); - is_sub_uid = sub_uid_file_present () && !rflg && + subuid_count = getdef_ulong ("SUB_UID_COUNT", 65536); + subgid_count = getdef_ulong ("SUB_GID_COUNT", 65536); + is_sub_uid = subuid_count > 0 && sub_uid_file_present () && !rflg && (!user_id || (user_id <= uid_max && user_id >= uid_min)); - is_sub_gid = sub_gid_file_present () && !rflg && + is_sub_gid = subgid_count > 0 && sub_gid_file_present () && !rflg && (!user_id || (user_id <= uid_max && user_id >= uid_min)); #endif /* ENABLE_SUBIDS */ + if (run_parts ("/etc/shadow-maint/useradd-pre.d", (char*)user_name, + "useradd")) { + exit(1); + } + #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM { struct passwd *pampw; pampw = getpwuid (getuid ()); /* local, no need for xgetpwuid */ - if (pampw == NULL) { + if (pampw == NULL && getuid ()) { fprintf (stderr, _("%s: Cannot determine your user name.\n"), Prog); fail_exit (1); } - retval = pam_start ("useradd", pampw->pw_name, &conv, &pamh); + retval = pam_start ("useradd", pampw?pampw->pw_name:"root", &conv, &pamh); } if (PAM_SUCCESS == retval) { @@ -2419,6 +2618,8 @@ int main (int argc, char **argv) } } + if (uflg) + check_uid_range(rflg,user_id); #ifdef WITH_TCB if (getdef_bool ("USE_TCB")) { if (shadowtcb_create (user_name, user_id) == SHADOWTCB_FAILURE) { @@ -2444,16 +2645,16 @@ int main (int argc, char **argv) } #ifdef ENABLE_SUBIDS - if (is_sub_uid) { - if (find_new_sub_uids(user_name, &sub_uid_start, &sub_uid_count) < 0) { + if (is_sub_uid && subuid_count != 0) { + if (find_new_sub_uids(&sub_uid_start, &subuid_count) < 0) { fprintf (stderr, _("%s: can't create subordinate user IDs\n"), Prog); fail_exit(E_SUB_UID_UPDATE); } } - if (is_sub_gid) { - if (find_new_sub_gids(user_name, &sub_gid_start, &sub_gid_count) < 0) { + if (is_sub_gid && subgid_count != 0) { + if (find_new_sub_gids(&sub_gid_start, &subgid_count) < 0) { fprintf (stderr, _("%s: can't create subordinate group IDs\n"), Prog); @@ -2462,29 +2663,14 @@ int main (int argc, char **argv) } #endif /* ENABLE_SUBIDS */ - usr_update (); - - if (mflg) { - create_home (); - if (home_added) { - copy_tree (def_template, prefix_user_home, false, false, - (uid_t)-1, user_id, (gid_t)-1, user_gid); - } else { - fprintf (stderr, - _("%s: warning: the home directory %s already exists.\n" - "%s: Not copying any file from skel directory into it.\n"), - Prog, user_home, Prog); - } - - } - - /* Do not create mail directory for system accounts */ - if (!rflg) { - create_mail (); - } + usr_update (subuid_count, subgid_count); close_files (); + nscd_flush_cache ("passwd"); + nscd_flush_cache ("group"); + sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP); + /* * tallylog_reset needs to be able to lookup * a valid existing user name, @@ -2510,9 +2696,29 @@ int main (int argc, char **argv) } #endif /* WITH_SELINUX */ - nscd_flush_cache ("passwd"); - nscd_flush_cache ("group"); - sssd_flush_cache (SSSD_DB_PASSWD | SSSD_DB_GROUP); + if (mflg) { + create_home (); + if (home_added) { + copy_tree (def_template, prefix_user_home, false, true, + (uid_t)-1, user_id, (gid_t)-1, user_gid); + } else { + fprintf (stderr, + _("%s: warning: the home directory %s already exists.\n" + "%s: Not copying any file from skel directory into it.\n"), + Prog, user_home, Prog); + } + + } + + /* Do not create mail directory for system accounts */ + if (!rflg) { + create_mail (); + } + + if (run_parts ("/etc/shadow-maint/useradd-post.d", (char*)user_name, + "useradd")) { + exit(1); + } return E_SUCCESS; } diff --git a/src/userdel.c b/src/userdel.c index cc951e58..7012b0e0 100644 --- a/src/userdel.c +++ b/src/userdel.c @@ -1,49 +1,24 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2012, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2012, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include - -#ident "$Id$" - #include +#include #include #include #include #include #include #include -#include -#include #include +#include +#include #ifdef ACCT_TOOLS_SETUID #ifdef USE_PAM #include "pam_defs.h" @@ -61,15 +36,20 @@ #ifdef SHADOWGRP #include "sgroupio.h" #endif /* SHADOWGRP */ +#ifdef WITH_SELINUX +#include +#endif /* WITH_SELINUX */ #ifdef WITH_TCB #include #include "tcbfuncs.h" #endif /* WITH_TCB */ +#include "run_part.h" /*@-exitarg@*/ #include "exitcodes.h" #ifdef ENABLE_SUBIDS #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ +#include "shadowlog.h" /* * exit status values @@ -150,8 +130,9 @@ static void usage (int status) "\n" "Options:\n"), Prog); - (void) fputs (_(" -f, --force force removal of files,\n" - " even if not owned by user\n"), + (void) fputs (_(" -f, --force force some actions that would fail otherwise\n" + " e.g. removal of user still logged in\n" + " or files, even if not owned by the user\n"), usageout); (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); (void) fputs (_(" -r, --remove remove home directory and mail spool\n"), usageout); @@ -1012,6 +993,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); (void) textdomain (PACKAGE); @@ -1041,7 +1024,7 @@ int main (int argc, char **argv) {NULL, 0, NULL, '\0'} }; while ((c = getopt_long (argc, argv, -#ifdef WITH_SELINUX +#ifdef WITH_SELINUX "fhrR:P:Z", #else /* !WITH_SELINUX */ "fhrR:P:", @@ -1062,7 +1045,7 @@ int main (int argc, char **argv) break; case 'P': /* no-op, handled in process_prefix_flag () */ break; -#ifdef WITH_SELINUX +#ifdef WITH_SELINUX case 'Z': if (prefix[0]) { fprintf (stderr, @@ -1143,6 +1126,10 @@ int main (int argc, char **argv) { const struct passwd *pwd; + if (run_parts ("/etc/shadow-maint/userdel-pre.d", user_name, + "userdel")) { + exit(1); + } pw_open(O_RDONLY); pwd = pw_locate (user_name); /* we care only about local users */ if (NULL == pwd) { @@ -1159,9 +1146,9 @@ int main (int argc, char **argv) } user_id = pwd->pw_uid; user_gid = pwd->pw_gid; - - if(prefix[0]) { - + + if (prefix[0]) { + size_t len = strlen(prefix) + strlen(pwd->pw_dir) + 2; int wlen; user_home = xmalloc(len); @@ -1338,10 +1325,14 @@ int main (int argc, char **argv) * Cancel any crontabs or at jobs. Have to do this before we remove * the entry from /etc/passwd. */ - if(prefix[0] == '\0') + if (prefix[0] == '\0') user_cancel (user_name); close_files (); + if (run_parts ("/etc/shadow-maint/userdel-post.d", user_name, "userdel")) { + exit(1); + } + #ifdef WITH_TCB errors += remove_tcbdir (user_name, user_id); #endif /* WITH_TCB */ diff --git a/src/usermod.c b/src/usermod.c index 05b98715..9473a7d7 100644 --- a/src/usermod.c +++ b/src/usermod.c @@ -1,33 +1,10 @@ /* - * Copyright (c) 1991 - 1994, Julianne Frances Haugh - * Copyright (c) 1996 - 2000, Marek Michałkiewicz - * Copyright (c) 2000 - 2006, Tomasz Kłoczko - * Copyright (c) 2007 - 2011, Nicolas François - * All rights reserved. + * SPDX-FileCopyrightText: 1991 - 1994, Julianne Frances Haugh + * SPDX-FileCopyrightText: 1996 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2000 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2011, Nicolas François * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the copyright holders or contributors may not be used to - * endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A - * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * SPDX-License-Identifier: BSD-3-Clause */ #include @@ -68,9 +45,13 @@ #ifdef ENABLE_SUBIDS #include "subordinateio.h" #endif /* ENABLE_SUBIDS */ +#ifdef WITH_SELINUX +#include +#endif /* WITH_SELINUX */ #ifdef WITH_TCB #include "tcbfuncs.h" #endif +#include "shadowlog.h" /* * exit status values @@ -143,6 +124,7 @@ static bool mflg = false, /* create user's home directory if it doesn't exist */ oflg = false, /* permit non-unique user ID to be specified with -u */ pflg = false, /* new encrypted password */ + rflg = false, /* remove a user from a single group */ sflg = false, /* new shell program */ #ifdef WITH_SELINUX Zflg = false, /* new selinux user */ @@ -180,8 +162,6 @@ static bool sub_gid_locked = false; /* local function prototypes */ -static void date_to_str (/*@unique@*//*@out@*/char *buf, size_t maxsize, - long int date); static int get_groups (char *); static /*@noreturn@*/void usage (int status); static void new_pwent (struct passwd *); @@ -208,28 +188,6 @@ static void move_mailbox (void); extern int allow_bad_names; -static void date_to_str (/*@unique@*//*@out@*/char *buf, size_t maxsize, - long int date) -{ - struct tm *tp; - - if (date < 0) { - strncpy (buf, "never", maxsize); - } else { - time_t t = (time_t) date; - tp = gmtime (&t); -#ifdef HAVE_STRFTIME - strftime (buf, maxsize, "%Y-%m-%d", tp); -#else - (void) snprintf (buf, maxsize, "%04d-%02d-%02d", - tp->tm_year + 1900, - tp->tm_mon + 1, - tp->tm_mday); -#endif /* HAVE_STRFTIME */ - } - buf[maxsize - 1] = '\0'; -} - /* * get_groups - convert a list of group names to an array of group IDs * @@ -366,7 +324,6 @@ static struct ulong_range getulong_range(const char *str) result.last = (unsigned long int)last; out: return result; - } struct ulong_range_list_entry { @@ -421,6 +378,9 @@ static /*@noreturn@*/void usage (int status) (void) fputs (_(" -a, --append append the user to the supplemental GROUPS\n" " mentioned by the -G option without removing\n" " the user from other groups\n"), usageout); + (void) fputs (_(" -r, --remove remove the user from only the supplemental GROUPS\n" + " mentioned by the -G option without removing\n" + " the user from other groups\n"), usageout); (void) fputs (_(" -h, --help display this help message and exit\n"), usageout); (void) fputs (_(" -l, --login NEW_LOGIN new value of the login name\n"), usageout); (void) fputs (_(" -L, --lock lock the user account\n"), usageout); @@ -577,6 +537,12 @@ static void new_pwent (struct passwd *pwent) SYSLOG ((LOG_INFO, "change user '%s' home from '%s' to '%s'", pwent->pw_name, pwent->pw_dir, user_newhome)); + + if (strlen(user_newhome) > 1 + && '/' == user_newhome[strlen(user_newhome)-1]) { + user_newhome[strlen(user_newhome)-1]='\0'; + } + pwent->pw_dir = user_newhome; } if (sflg) { @@ -624,10 +590,8 @@ static void new_spent (struct spwd *spent) if (eflg) { /* log dates rather than numbers of days. */ char new_exp[16], old_exp[16]; - date_to_str (new_exp, sizeof(new_exp), - user_newexpire * DAY); - date_to_str (old_exp, sizeof(old_exp), - user_expire * DAY); + date_to_str (sizeof(new_exp), new_exp, user_newexpire * DAY); + date_to_str (sizeof(old_exp), old_exp, user_expire * DAY); #ifdef WITH_AUDIT audit_logger (AUDIT_USER_CHAUTHTOK, Prog, "changing expiration date", @@ -748,6 +712,14 @@ static void update_group (void) continue; } + /* + * If rflg+Gflg is passed in AKA -rG invert is_member flag, which removes + * mentioned groups while leaving the others. + */ + if (Gflg && rflg && was_member) { + is_member = !is_member; + } + ngrp = __gr_dup (grp); if (NULL == ngrp) { fprintf (stderr, @@ -819,6 +791,8 @@ static void update_group (void) SYSLOG ((LOG_WARN, "failed to prepare the new %s entry '%s'", gr_dbname (), ngrp->gr_name)); fail_exit (E_GRP_UPDATE); } + + gr_free(ngrp); } } @@ -861,6 +835,14 @@ static void update_gshadow (void) continue; } + /* + * If rflg+Gflg is passed in AKA -rG invert is_member, to remove targeted + * groups while leaving the user apart of groups not mentioned + */ + if (Gflg && rflg && was_member) { + is_member = !is_member; + } + nsgrp = __sgr_dup (sgrp); if (NULL == nsgrp) { fprintf (stderr, @@ -943,7 +925,7 @@ static void update_gshadow (void) changed = false; - /* + /* * Update the group entry to reflect the changes. */ if (sgr_update (nsgrp) == 0) { @@ -954,6 +936,8 @@ static void update_gshadow (void) sgr_dbname (), nsgrp->sg_name)); fail_exit (E_GRP_UPDATE); } + + free (nsgrp); } } #endif /* SHADOWGRP */ @@ -984,7 +968,7 @@ static void grp_update (void) static void process_flags (int argc, char **argv) { const struct group *grp; - + struct stat st; bool anyflag = false; { @@ -1007,6 +991,7 @@ static void process_flags (int argc, char **argv) {"move-home", no_argument, NULL, 'm'}, {"non-unique", no_argument, NULL, 'o'}, {"password", required_argument, NULL, 'p'}, + {"remove", no_argument, NULL, 'r'}, {"root", required_argument, NULL, 'R'}, {"prefix", required_argument, NULL, 'P'}, {"shell", required_argument, NULL, 's'}, @@ -1024,7 +1009,7 @@ static void process_flags (int argc, char **argv) {NULL, 0, NULL, '\0'} }; while ((c = getopt_long (argc, argv, - "abc:d:e:f:g:G:hl:Lmop:R:s:u:UP:" + "abc:d:e:f:g:G:hl:Lmop:rR:s:u:UP:" #ifdef ENABLE_SUBIDS "v:w:V:W:" #endif /* ENABLE_SUBIDS */ @@ -1058,20 +1043,22 @@ static void process_flags (int argc, char **argv) } dflg = true; user_newhome = optarg; + if (user_newhome[0] != '/') { + fprintf (stderr, + _("%s: homedir must be an absolute path\n"), + Prog); + exit (E_BAD_ARG); + } break; case 'e': - if ('\0' != *optarg) { - user_newexpire = strtoday (optarg); - if (user_newexpire < -1) { - fprintf (stderr, - _("%s: invalid date '%s'\n"), - Prog, optarg); - exit (E_BAD_ARG); - } - user_newexpire *= DAY / SCALE; - } else { - user_newexpire = -1; + user_newexpire = strtoday (optarg); + if (user_newexpire < -1) { + fprintf (stderr, + _("%s: invalid date '%s'\n"), + Prog, optarg); + exit (E_BAD_ARG); } + user_newexpire *= DAY / SCALE; eflg = true; break; case 'f': @@ -1094,6 +1081,7 @@ static void process_flags (int argc, char **argv) } user_newgid = grp->gr_gid; gflg = true; + gr_free (grp); break; case 'G': if (get_groups (optarg) != 0) { @@ -1127,17 +1115,33 @@ static void process_flags (int argc, char **argv) user_pass = optarg; pflg = true; break; + case 'r': + rflg = true; + break; case 'R': /* no-op, handled in process_root_flag () */ break; case 'P': /* no-op, handled in process_prefix_flag () */ break; case 's': - if (!VALID (optarg)) { + if ( ( !VALID (optarg) ) + || ( ('\0' != optarg[0]) + && ('/' != optarg[0]) + && ('*' != optarg[0]) )) { fprintf (stderr, - _("%s: invalid field '%s'\n"), + _("%s: invalid shell '%s'\n"), Prog, optarg); exit (E_BAD_ARG); } + if ( '\0' != optarg[0] + && '*' != optarg[0] + && strcmp(optarg, "/sbin/nologin") != 0 + && ( stat(optarg, &st) != 0 + || S_ISDIR(st.st_mode) + || access(optarg, X_OK) != 0)) { + fprintf (stderr, + _("%s: Warning: missing or non-executable shell '%s'\n"), + Prog, optarg); + } user_newshell = optarg; sflg = true; break; @@ -1253,7 +1257,7 @@ static void process_flags (int argc, char **argv) if (!gflg) { user_newgid = user_gid; } - if(prefix[0]) { + if (prefix[0]) { size_t len = strlen(prefix) + strlen(user_home) + 2; int wlen; prefix_user_home = xmalloc(len); @@ -1315,6 +1319,20 @@ static void process_flags (int argc, char **argv) usage (E_USAGE); } + if (rflg && (!Gflg)) { + fprintf (stderr, + _("%s: %s flag is only allowed with the %s flag\n"), + Prog, "-r", "-G"); + usage (E_USAGE); + } + + if (rflg && aflg) { + fprintf (stderr, + _("%s: %s and %s are mutually exclusive flags\n"), + Prog, "-r", "-a"); + usage (E_USAGE); + } + if ((Lflg && (pflg || Uflg)) || (pflg && Uflg)) { fprintf (stderr, _("%s: the -L, -p, and -U flags are exclusive\n"), @@ -1906,8 +1924,7 @@ static void update_lastlog (void) /* Copy the old entry to its new location */ if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) || (write (fd, &ll, sizeof ll) != (ssize_t) sizeof ll) - || (fsync (fd) != 0) - || (close (fd) != 0)) { + || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"), Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); @@ -1923,16 +1940,15 @@ static void update_lastlog (void) memzero (&ll, sizeof (ll)); if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) || (write (fd, &ll, sizeof ll) != (ssize_t) sizeof ll) - || (fsync (fd) != 0) - || (close (fd) != 0)) { + || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the lastlog entry of user %lu to user %lu: %s\n"), Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); } - } else { - (void) close (fd); } } + + (void) close (fd); } /* @@ -1967,8 +1983,7 @@ static void update_faillog (void) /* Copy the old entry to its new location */ if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) || (write (fd, &fl, sizeof fl) != (ssize_t) sizeof fl) - || (fsync (fd) != 0) - || (close (fd) != 0)) { + || (fsync (fd) != 0)) { fprintf (stderr, _("%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"), Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); @@ -1983,16 +1998,15 @@ static void update_faillog (void) /* Reset the new uid's faillog entry */ memzero (&fl, sizeof (fl)); if ( (lseek (fd, off_newuid, SEEK_SET) != off_newuid) - || (write (fd, &fl, sizeof fl) != (ssize_t) sizeof fl) - || (close (fd) != 0)) { + || (write (fd, &fl, sizeof fl) != (ssize_t) sizeof fl)) { fprintf (stderr, _("%s: failed to copy the faillog entry of user %lu to user %lu: %s\n"), Prog, (unsigned long) user_id, (unsigned long) user_newid, strerror (errno)); } - } else { - (void) close (fd); } } + + (void) close (fd); } #ifndef NO_MOVE_MAILBOX @@ -2118,6 +2132,8 @@ int main (int argc, char **argv) * Get my name so that I can use it to report errors. */ Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR); @@ -2222,7 +2238,7 @@ int main (int argc, char **argv) if (sub_uid_remove(user_name, ptr->range.first, count) == 0) { fprintf (stderr, _("%s: failed to remove uid range %lu-%lu from '%s'\n"), - Prog, ptr->range.first, ptr->range.last, + Prog, ptr->range.first, ptr->range.last, sub_uid_dbname ()); fail_exit (E_SUB_UID_UPDATE); } @@ -2235,7 +2251,7 @@ int main (int argc, char **argv) if (sub_uid_add(user_name, ptr->range.first, count) == 0) { fprintf (stderr, _("%s: failed to add uid range %lu-%lu to '%s'\n"), - Prog, ptr->range.first, ptr->range.last, + Prog, ptr->range.first, ptr->range.last, sub_uid_dbname ()); fail_exit (E_SUB_UID_UPDATE); } @@ -2248,7 +2264,7 @@ int main (int argc, char **argv) if (sub_gid_remove(user_name, ptr->range.first, count) == 0) { fprintf (stderr, _("%s: failed to remove gid range %lu-%lu from '%s'\n"), - Prog, ptr->range.first, ptr->range.last, + Prog, ptr->range.first, ptr->range.last, sub_gid_dbname ()); fail_exit (E_SUB_GID_UPDATE); } @@ -2261,7 +2277,7 @@ int main (int argc, char **argv) if (sub_gid_add(user_name, ptr->range.first, count) == 0) { fprintf (stderr, _("%s: failed to add gid range %lu-%lu to '%s'\n"), - Prog, ptr->range.first, ptr->range.last, + Prog, ptr->range.first, ptr->range.last, sub_gid_dbname ()); fail_exit (E_SUB_GID_UPDATE); } diff --git a/src/vipw.c b/src/vipw.c index 04f0b233..8c97f4bc 100644 --- a/src/vipw.c +++ b/src/vipw.c @@ -1,27 +1,14 @@ /* vipw, vigr edit the password or group file with -s will edit shadow or gshadow file - - Copyright (c) 1997 , Guy Maor - Copyright (c) 1999 - 2000, Marek Michałkiewicz - Copyright (c) 2002 - 2006, Tomasz Kłoczko - Copyright (c) 2007 - 2013, Nicolas François - All rights reserved. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + * + * SPDX-FileCopyrightText: 1997 , Guy Maor + * SPDX-FileCopyrightText: 1999 - 2000, Marek Michałkiewicz + * SPDX-FileCopyrightText: 2002 - 2006, Tomasz Kłoczko + * SPDX-FileCopyrightText: 2007 - 2013, Nicolas François + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include @@ -53,6 +40,7 @@ #include #include "tcbfuncs.h" #endif /* WITH_TCB */ +#include "shadowlog.h" #define MSG_WARN_EDIT_OTHER_FILE _( \ "You have modified %s.\n"\ @@ -243,13 +231,13 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) /* if SE Linux is enabled then set the context of all new files to be the context of the file we are editing */ if (is_selinux_enabled () != 0) { - security_context_t passwd_context=NULL; + char *passwd_context_raw = NULL; int ret = 0; - if (getfilecon (file, &passwd_context) < 0) { + if (getfilecon_raw (file, &passwd_context_raw) < 0) { vipwexit (_("Couldn't get file context"), errno, 1); } - ret = setfscreatecon (passwd_context); - freecon (passwd_context); + ret = setfscreatecon_raw (passwd_context_raw); + freecon (passwd_context_raw); if (0 != ret) { vipwexit (_("setfscreatecon () failed"), errno, 1); } @@ -348,6 +336,9 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) sigprocmask(SIG_BLOCK, &mask, &omask); } + /* set SIGCHLD to default for waitpid */ + signal(SIGCHLD, SIG_DFL); + for (;;) { pid = waitpid (pid, &status, WUNTRACED); if ((pid != -1) && (WIFSTOPPED (status) != 0)) { @@ -401,7 +392,7 @@ vipwedit (const char *file, int (*file_lock) (void), int (*file_unlock) (void)) #ifdef WITH_SELINUX /* unset the fscreatecon */ if (is_selinux_enabled () != 0) { - if (setfscreatecon (NULL) != 0) { + if (setfscreatecon_raw (NULL) != 0) { vipwexit (_("setfscreatecon () failed"), errno, 1); } } @@ -481,6 +472,8 @@ int main (int argc, char **argv) bool do_vipw; Prog = Basename (argv[0]); + log_set_progname(Prog); + log_set_logfd(stderr); (void) setlocale (LC_ALL, ""); (void) bindtextdomain (PACKAGE, LOCALEDIR);